summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaoran.Wang <elven.wang@nxp.com>2018-01-04 21:02:38 +0800
committerHaoran.Wang <elven.wang@nxp.com>2018-01-17 16:21:35 +0800
commit07295a9eba92e77f30fa236f9e9c7bde14902bef (patch)
tree4e818a2f2923103b8fbf14919876b6d6af403a2c
parente567f089a5d9a0f873622ed8bb90cbb15825dd4e (diff)
MA-10983-1 Load HDMI firmware from u-boot.bin
Load HDMI firmware from u-boot.bin instead of /system partition. Change-Id: I8945940cfe14db50c95a56b8bff2a94990a7fbaf Signed-off-by: Haoran.Wang <elven.wang@nxp.com>
-rw-r--r--board/freescale/imx8qm_mek/imx8qm_mek.c13
-rw-r--r--configs/mx8qm_mek_android_defconfig1
-rwxr-xr-xdrivers/usb/gadget/f_fastboot.c51
-rw-r--r--include/configs/imx8qm_mek_android.h3
4 files changed, 18 insertions, 50 deletions
diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c
index 1d5648b2a3..9248f0c9a4 100644
--- a/board/freescale/imx8qm_mek/imx8qm_mek.c
+++ b/board/freescale/imx8qm_mek/imx8qm_mek.c
@@ -413,6 +413,7 @@ int mmc_map_to_kernel_blk(int dev_no)
return dev_no;
}
+extern uint32_t _end_ofs;
int board_late_init(void)
{
#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
@@ -424,6 +425,18 @@ int board_late_init(void)
board_late_mmc_env_init();
#endif
+#ifdef IMX_LOAD_HDMI_FIMRWARE
+ char *end_of_uboot;
+ char command[256];
+ end_of_uboot = (char *)(ulong)(CONFIG_SYS_TEXT_BASE + _end_ofs + fdt_totalsize(gd->fdt_blob));
+ end_of_uboot += 9;
+
+ memcpy(IMX_HDMI_FIRMWARE_LOAD_ADDR, end_of_uboot, IMX_HDMI_FIRMWARE_SIZE);
+
+ sprintf(command, "hdp load 0x%x", IMX_HDMI_FIRMWARE_LOAD_ADDR);
+ run_command(command, 0);
+#endif
+
return 0;
}
diff --git a/configs/mx8qm_mek_android_defconfig b/configs/mx8qm_mek_android_defconfig
index 6d1c798966..80c5e497ff 100644
--- a/configs/mx8qm_mek_android_defconfig
+++ b/configs/mx8qm_mek_android_defconfig
@@ -18,7 +18,6 @@ CONFIG_DM_I2C=y
# CONFIG_DM_I2C_COMPAT is not set
CONFIG_SYS_I2C_IMX_LPI2C=y
CONFIG_CMD_I2C=y
-CONFIG_CMD_EXT4=y
CONFIG_CMD_USB=y
CONFIG_USB=y
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index 5a5ddff913..d10ca38ee8 100755
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -241,11 +241,11 @@ static struct usb_gadget_strings *fastboot_strings[] = {
#else
#define ANDROID_BOOTLOADER_OFFSET 0x400
#endif
+#ifdef IMX_LOAD_HDMI_FIMRWARE
+#define ANDROID_BOOTLOADER_SIZE 0x1FFC00
+#else
#define ANDROID_BOOTLOADER_SIZE 0xFFC00
-#define ANDROID_KERNEL_OFFSET 0x100000
-#define ANDROID_KERNEL_SIZE 0x500000
-#define ANDROID_URAMDISK_OFFSET 0x600000
-#define ANDROID_URAMDISK_SIZE 0x100000
+#endif
#define MMC_SATA_BLOCK_SIZE 512
#define FASTBOOT_FBPARTS_ENV_MAX_LEN 1024
@@ -263,10 +263,6 @@ enum {
};
static unsigned int download_bytes_unpadded;
-#ifdef IMX_LOAD_HDMI_FIMRWARE
-int hdmi_firmware_load(char* slot);
-#endif
-
static struct cmd_fastboot_interface interface = {
.rx_handler = NULL,
.reset_handler = NULL,
@@ -1589,10 +1585,6 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
avb_out_data->ab_suffix);
}
setenv("bootargs_sec", bootargs_sec);
-#ifdef IMX_LOAD_HDMI_FIMRWARE
- hdmi_firmware_load(avb_out_data->ab_suffix);
-#endif
-
#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
if(!is_recovery_mode)
fastboot_setup_system_boot_args(avb_out_data->ab_suffix);
@@ -1643,9 +1635,6 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
sprintf(bootargs_sec,
"androidboot.verifiedbootstate=orange androidboot.slot_suffix=%s", slot);
setenv("bootargs_sec", bootargs_sec);
-#ifdef IMX_LOAD_HDMI_FIMRWARE
- hdmi_firmware_load(slot);
-#endif
#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
if(!is_recovery_mode)
fastboot_setup_system_boot_args(slot);
@@ -2648,38 +2637,6 @@ static void cb_continue(struct usb_ep *ep, struct usb_request *req)
fastboot_tx_write_str("OKAY");
}
-#ifdef IMX_LOAD_HDMI_FIMRWARE
-int hdmi_firmware_load(char *slot) {
- int mmcc = mmc_get_env_dev();
- int mmc_id;
- char part_str[32];
- char command[256];
- int ret;
-
- sprintf(part_str, "%s%s", IMX_HDMI_FIRMWARE_PART, slot);
- mmc_id = fastboot_flash_find_index(part_str);
- if (mmc_id <= 0)
- return -1;
-
- sprintf(command, "ext4load mmc %x:%x 0x%x %s",
- mmcc, mmc_id, IMX_HDMI_FIRMWARE_LOAD_ADDR, IMX_HDMI_FIRMWARE_PATH);
-
- ret = run_command(command, 0);
- if (ret) {
- printf("execute command '%s' error!\n", command);
- return -1;
- }
-
- sprintf(command, "hdp load 0x%x", IMX_HDMI_FIRMWARE_LOAD_ADDR);
-
- ret = run_command(command, 0);
- if (ret) {
- printf("execute command '%s' error!\n", command);
- return -1;
- }
-}
-#endif
-
#ifdef CONFIG_FASTBOOT_LOCK
int do_lock_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
diff --git a/include/configs/imx8qm_mek_android.h b/include/configs/imx8qm_mek_android.h
index a03c357d47..ab44819e36 100644
--- a/include/configs/imx8qm_mek_android.h
+++ b/include/configs/imx8qm_mek_android.h
@@ -26,9 +26,8 @@
#define FSL_FASTBOOT_FB_DEV "mmc"
#define IMX_LOAD_HDMI_FIMRWARE
-#define IMX_HDMI_FIRMWARE_PATH "etc/firmware/hdmi/hdmitxfw.bin"
-#define IMX_HDMI_FIRMWARE_PART "system"
#define IMX_HDMI_FIRMWARE_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + SZ_256M)
+#define IMX_HDMI_FIRMWARE_SIZE 0x20000
#ifdef CONFIG_SYS_MALLOC_LEN
#undef CONFIG_SYS_MALLOC_LEN