summaryrefslogtreecommitdiff
path: root/board/freescale
diff options
context:
space:
mode:
authorJi Luo <ji.luo@nxp.com>2020-05-11 10:09:52 +0800
committerJi Luo <ji.luo@nxp.com>2022-04-18 16:40:08 +0800
commiteb659c361238138bb65d507d9b20513511494dbb (patch)
tree58b08f68069af5ec421ab261816aa97cf86a00ca /board/freescale
parent49dae98af627fe7126f27b390172b92512899f4d (diff)
MA-16966 Add hdmi rx/tx fw loading function
Add implementation to load hdmi rx/tx firmwares, use different config to guide the function. Change-Id: Ibb43c2301b5f6cdc8b5103bd04cc30baefac9b9f Signed-off-by: Ji Luo <ji.luo@nxp.com> (cherry picked from commit 942bf95ae42750a1f8b8092040ebb3ca144777fd) (cherry picked from commit 6e0bd811e1901cfb91e3f3fa0e5520b0ee143025)
Diffstat (limited to 'board/freescale')
-rw-r--r--board/freescale/imx8qm_mek/imx8qm_mek.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c
index 22ad803bbe0..5c3d6221c15 100644
--- a/board/freescale/imx8qm_mek/imx8qm_mek.c
+++ b/board/freescale/imx8qm_mek/imx8qm_mek.c
@@ -21,6 +21,7 @@
#include <asm/arch/iomux.h>
#include <asm/arch/sys_proto.h>
#include "../common/tcpc.h"
+#include "command.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -459,6 +460,7 @@ int mmc_map_to_kernel_blk(int dev_no)
return dev_no;
}
+extern uint32_t _end_ofs;
int board_late_init(void)
{
char *fdt_file;
@@ -497,5 +499,27 @@ int board_late_init(void)
#ifdef CONFIG_ENV_IS_IN_MMC
board_late_mmc_env_init();
#endif
+
+#if defined(CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX) || defined(CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX)
+ 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;
+
+ /* load hdmitxfw.bin and hdmirxfw.bin*/
+ memcpy((void *)IMX_HDMI_FIRMWARE_LOAD_ADDR, end_of_uboot,
+ IMX_HDMITX_FIRMWARE_SIZE + IMX_HDMIRX_FIRMWARE_SIZE);
+
+#ifdef CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX
+ sprintf(command, "hdp load 0x%x", IMX_HDMI_FIRMWARE_LOAD_ADDR);
+ run_command(command, 0);
+#endif
+#ifdef CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX
+ sprintf(command, "hdprx load 0x%x",
+ IMX_HDMI_FIRMWARE_LOAD_ADDR + IMX_HDMITX_FIRMWARE_SIZE);
+ run_command(command, 0);
+#endif
+#endif /* CONFIG_IMX_LOAD_HDMI_FIMRWARE_RX || CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX */
+
return 0;
}