Support for M4 - Remove UART3 snippets from the DTS. This is the UART for the M4, and not used in u-boot anyways. - Add TCM (tightly coupled memory) region in the board_lmb_reserve, otherwise we can't load into the TCM region. - Add definitions for TCM location and size - Define commands for loading and running the M4 (called from boot script) Change-Id: I3a83fe7503418aeb2867aef10e9eeb5079165b94
diff --git a/arch/arm/dts/fsl-imx8mq-phanbell.dts b/arch/arm/dts/fsl-imx8mq-phanbell.dts index 3e4b08b..98e1e33 100644 --- a/arch/arm/dts/fsl-imx8mq-phanbell.dts +++ b/arch/arm/dts/fsl-imx8mq-phanbell.dts
@@ -238,16 +238,6 @@ >; }; - pinctrl_uart3: uart3grp { - fsl,pins = < - MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x79 - MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x79 - MX8MQ_IOMUXC_ECSPI1_MISO_UART3_DCE_CTS_B 0x79 - MX8MQ_IOMUXC_ECSPI1_SS0_UART3_DCE_RTS_B 0x79 - MX8MQ_IOMUXC_NAND_CLE_GPIO3_IO5 0x19 - >; - }; - pinctrl_usdhc1: usdhc1grp { fsl,pins = < MX8MQ_IOMUXC_SD1_CLK_USDHC1_CLK 0x83 @@ -633,16 +623,6 @@ }; }; -&uart3 { /* BT */ - pinctrl-names = "default"; - pinctrl-0 = <&pinctrl_uart3>; - assigned-clocks = <&clk IMX8MQ_CLK_UART3_SRC>; - assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>; - fsl,uart-has-rtscts; - resets = <&modem_reset>; - status = "okay"; -}; - &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>;
diff --git a/arch/arm/mach-imx/misc.c b/arch/arm/mach-imx/misc.c index 9c62bba..bf26c6a 100644 --- a/arch/arm/mach-imx/misc.c +++ b/arch/arm/mach-imx/misc.c
@@ -104,6 +104,10 @@ lmb_reserve(lmb, sp, bank_end - sp); break; } + +#if defined(SYS_AUXCORE_BOOTDATA_TCM) && defined(SYS_AUXCORE_BOOTDATA_TCM_SIZE) + lmb_add(lmb, SYS_AUXCORE_BOOTDATA_TCM, SYS_AUXCORE_BOOTDATA_TCM_SIZE); +#endif } void imx_sec_init(void)
diff --git a/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c b/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c index 004e538..4b1cdc5 100644 --- a/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c +++ b/board/freescale/imx8mq_phanbell/imx8mq_phanbell.c
@@ -349,6 +349,11 @@ snprintf(bootcmd, sizeof(bootcmd), "ext2load mmc %d:1 ${loadaddr} boot.scr; source; boota mmc0 boot_a", mmc_dev); env_set("bootcmd", bootcmd); + // Set up a command that will load and start the M4. + env_set("m4boot", "ext2load mmc ${bootdev}:1 ${m4loadaddr} ${m4image}; dcache flush; bootaux ${m4loadaddr}"); + env_set("m4image", "m4_fw.bin"); + env_set("m4loadaddr", __stringify(SYS_AUXCORE_BOOTDATA_TCM)); + #ifdef CONFIG_ENV_IS_IN_MMC board_late_mmc_env_init(); #endif
diff --git a/include/configs/imx8mq_phanbell.h b/include/configs/imx8mq_phanbell.h index 6a18750..3dbc34a 100644 --- a/include/configs/imx8mq_phanbell.h +++ b/include/configs/imx8mq_phanbell.h
@@ -93,6 +93,10 @@ #define CONFIG_PHY_ATHEROS #endif +/* M4 specific */ +#define SYS_AUXCORE_BOOTDATA_TCM 0x007E0000 +#define SYS_AUXCORE_BOOTDATA_TCM_SIZE 0x20000 + /* * Another approach is add the clocks for inmates into clks_init_on * in clk-imx8mq.c, then clk_ingore_unused could be removed.