From e47cab0fa134ad6c9a7b50c5569953d2ad296ead Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 25 Jul 2023 17:24:43 +0200 Subject: [PATCH 01/12] ARM: imx: Drop CONFIG_USE_BOOTCOMMAND=n on i.MX6 DHSOM This board certainly does use default 'run distro_bootcmd' boot command, make sure this is set in 'bootcmd' variable. Fixes: 970bf8603b8 ("Convert CONFIG_USE_BOOTCOMMAND et al to Kconfig") Signed-off-by: Marek Vasut Reviewed-by: Tom Rini --- configs/dh_imx6_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/dh_imx6_defconfig b/configs/dh_imx6_defconfig index c1094b4eda..5ea9e0b216 100644 --- a/configs/dh_imx6_defconfig +++ b/configs/dh_imx6_defconfig @@ -37,7 +37,6 @@ CONFIG_FIT_VERBOSE=y CONFIG_SPL_FIT=y CONFIG_DISTRO_DEFAULTS=y CONFIG_BOOTDELAY=3 -# CONFIG_USE_BOOTCOMMAND is not set CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y CONFIG_SYS_SPL_MALLOC=y CONFIG_SPL_SPI_LOAD=y From f58b0c853482e26682158c3b0422cd33dfeb434a Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Sat, 5 Aug 2023 05:40:02 +0200 Subject: [PATCH 02/12] ARM: imx: Select 2 DRAM banks on Data Modul i.MX8M Mini eDM SBC U-Boot splits DRAM bank spanning addresses below and above the 32bit boundary into two DRAM banks. Since this platform may come with 4GiB of DRAM, increase the DRAM bank count to 2. Signed-off-by: Marek Vasut --- configs/imx8mm_data_modul_edm_sbc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/imx8mm_data_modul_edm_sbc_defconfig b/configs/imx8mm_data_modul_edm_sbc_defconfig index f63eb4fd64..8df6b4c6af 100644 --- a/configs/imx8mm_data_modul_edm_sbc_defconfig +++ b/configs/imx8mm_data_modul_edm_sbc_defconfig @@ -5,7 +5,7 @@ CONFIG_SYS_MALLOC_LEN=0x1000000 CONFIG_SPL_GPIO=y CONFIG_SPL_LIBCOMMON_SUPPORT=y CONFIG_SPL_LIBGENERIC_SUPPORT=y -CONFIG_NR_DRAM_BANKS=1 +CONFIG_NR_DRAM_BANKS=2 CONFIG_SF_DEFAULT_SPEED=50000000 CONFIG_ENV_SIZE=0x40000 CONFIG_ENV_OFFSET=0xFFFC0000 From 07908bf5e547ed3a78ab4fb579c8cd623f8af6e5 Mon Sep 17 00:00:00 2001 From: Elena Popa Date: Tue, 8 Aug 2023 14:58:26 +0300 Subject: [PATCH 03/12] arm: imx: imx8m: imx9: Fix DRAM size calculation due to rom_pointer If dram_init_banksize() is called from SPL, the rom_pointer, at that point, is not correctly initialized. This causes wrong calculation of DRAM start and size in dram_init_banksize(). The issue became apparent only in Falcon Mode. Added an extra condition to prevent using rom_pointer in SPL. Signed-off-by: Elena Popa Reviewed-by: Marek Vasut Reviewed-by: Fabio Estevam --- arch/arm/mach-imx/imx8m/soc.c | 7 ++++--- arch/arm/mach-imx/imx9/soc.c | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c index 78b775f449..0ae93bbf43 100644 --- a/arch/arm/mach-imx/imx8m/soc.c +++ b/arch/arm/mach-imx/imx8m/soc.c @@ -244,7 +244,7 @@ int dram_init(void) return ret; /* rom_pointer[1] contains the size of TEE occupies */ - if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && rom_pointer[1]) + if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && !IS_ENABLED(CONFIG_SPL_BUILD) && rom_pointer[1]) gd->ram_size = sdram_size - rom_pointer[1]; else gd->ram_size = sdram_size; @@ -273,7 +273,7 @@ int dram_init_banksize(void) } gd->bd->bi_dram[bank].start = PHYS_SDRAM; - if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && rom_pointer[1]) { + if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && !IS_ENABLED(CONFIG_SPL_BUILD) && rom_pointer[1]) { phys_addr_t optee_start = (phys_addr_t)rom_pointer[0]; phys_size_t optee_size = (size_t)rom_pointer[1]; @@ -318,7 +318,8 @@ phys_size_t get_effective_memsize(void) sdram_b1_size = sdram_size; } - if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && rom_pointer[1]) { + if (!IS_ENABLED(CONFIG_ARMV8_PSCI) && !IS_ENABLED(CONFIG_SPL_BUILD) && + rom_pointer[1]) { /* We will relocate u-boot to Top of dram1. Tee position has two cases: * 1. At the top of dram1, Then return the size removed optee size. * 2. In the middle of dram1, return the size of dram1. diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c index f43b73a6c2..55c280188b 100644 --- a/arch/arm/mach-imx/imx9/soc.c +++ b/arch/arm/mach-imx/imx9/soc.c @@ -361,7 +361,7 @@ int dram_init(void) return ret; /* rom_pointer[1] contains the size of TEE occupies */ - if (rom_pointer[1]) + if (!IS_ENABLED(CONFIG_SPL_BUILD) && rom_pointer[1]) gd->ram_size = sdram_size - rom_pointer[1]; else gd->ram_size = sdram_size; @@ -390,7 +390,7 @@ int dram_init_banksize(void) } gd->bd->bi_dram[bank].start = PHYS_SDRAM; - if (rom_pointer[1]) { + if (!IS_ENABLED(CONFIG_SPL_BUILD) && rom_pointer[1]) { phys_addr_t optee_start = (phys_addr_t)rom_pointer[0]; phys_size_t optee_size = (size_t)rom_pointer[1]; @@ -435,7 +435,7 @@ phys_size_t get_effective_memsize(void) else sdram_b1_size = sdram_size; - if (rom_pointer[1]) { + if (!IS_ENABLED(CONFIG_SPL_BUILD) && rom_pointer[1]) { /* We will relocate u-boot to top of dram1. TEE position has two cases: * 1. At the top of dram1, Then return the size removed optee size. * 2. In the middle of dram1, return the size of dram1. From 99eb21cfccdf96af713f792e0785668acb068f88 Mon Sep 17 00:00:00 2001 From: Tim Harvey Date: Tue, 15 Aug 2023 15:01:10 -0700 Subject: [PATCH 04/12] board: gateworks: venice: fix gw7904 Add missing imx8mm-venice-gw7904 to CONFIG_OF_LIST Fixes commit 61e7f9732565 ("board: gateworks: venice: add imx8mm-gw7904 support") Signed-off-by: Tim Harvey --- configs/imx8mm_venice_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/imx8mm_venice_defconfig b/configs/imx8mm_venice_defconfig index a485910a52..4fba8eb243 100644 --- a/configs/imx8mm_venice_defconfig +++ b/configs/imx8mm_venice_defconfig @@ -75,7 +75,7 @@ CONFIG_CMD_EXT4_WRITE=y # CONFIG_SPL_EFI_PARTITION is not set CONFIG_OF_CONTROL=y CONFIG_SPL_OF_CONTROL=y -CONFIG_OF_LIST="imx8mm-venice imx8mm-venice-gw71xx-0x imx8mm-venice-gw72xx-0x imx8mm-venice-gw73xx-0x imx8mm-venice-gw7901 imx8mm-venice-gw7902 imx8mm-venice-gw7903" +CONFIG_OF_LIST="imx8mm-venice imx8mm-venice-gw71xx-0x imx8mm-venice-gw72xx-0x imx8mm-venice-gw73xx-0x imx8mm-venice-gw7901 imx8mm-venice-gw7902 imx8mm-venice-gw7903 imx8mm-venice-gw7904" CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_REDUNDAND_ENVIRONMENT=y CONFIG_SYS_MMC_ENV_DEV=2 From bd7606d1421766f83474cf1539bd9dfaeb20cc5e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Thu, 31 Aug 2023 16:41:15 +0200 Subject: [PATCH 05/12] ARM: imx: Use default SAVED_DRAM_TIMING_BASE on DH i.MX8M Plus DHCOM Use default SAVED_DRAM_TIMING_BASE as that is what upstream TFA expects. Without this change, the board will fail to suspend/resume e.g. in Linux. Signed-off-by: Marek Vasut --- configs/imx8mp_dhcom_pdk2_defconfig | 1 - configs/imx8mp_dhcom_pdk3_defconfig | 1 - 2 files changed, 2 deletions(-) diff --git a/configs/imx8mp_dhcom_pdk2_defconfig b/configs/imx8mp_dhcom_pdk2_defconfig index 14ac499e58..a920ffe09b 100644 --- a/configs/imx8mp_dhcom_pdk2_defconfig +++ b/configs/imx8mp_dhcom_pdk2_defconfig @@ -160,7 +160,6 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y CONFIG_CLK_COMPOSITE_CCF=y CONFIG_SPL_CLK_IMX8MP=y CONFIG_CLK_IMX8MP=y -CONFIG_SAVED_DRAM_TIMING_BASE=0x40000000 CONFIG_DFU_TFTP=y CONFIG_DFU_TIMEOUT=y CONFIG_DFU_MMC=y diff --git a/configs/imx8mp_dhcom_pdk3_defconfig b/configs/imx8mp_dhcom_pdk3_defconfig index 3b26f315bb..9463456798 100644 --- a/configs/imx8mp_dhcom_pdk3_defconfig +++ b/configs/imx8mp_dhcom_pdk3_defconfig @@ -161,7 +161,6 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y CONFIG_CLK_COMPOSITE_CCF=y CONFIG_SPL_CLK_IMX8MP=y CONFIG_CLK_IMX8MP=y -CONFIG_SAVED_DRAM_TIMING_BASE=0x40000000 CONFIG_DFU_TFTP=y CONFIG_DFU_TIMEOUT=y CONFIG_DFU_MMC=y From 7e4e4ff6ec9c6242572ede0610876f2611069794 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Thu, 31 Aug 2023 16:41:45 +0200 Subject: [PATCH 06/12] ARM: imx: Use default SAVED_DRAM_TIMING_BASE on Data Modul i.MX8M Mini eDM SBC Use default SAVED_DRAM_TIMING_BASE as that is what upstream TFA expects. Without this change, the board will fail to suspend/resume e.g. in Linux. Signed-off-by: Marek Vasut --- configs/imx8mm_data_modul_edm_sbc_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/imx8mm_data_modul_edm_sbc_defconfig b/configs/imx8mm_data_modul_edm_sbc_defconfig index 8df6b4c6af..7e8fb84441 100644 --- a/configs/imx8mm_data_modul_edm_sbc_defconfig +++ b/configs/imx8mm_data_modul_edm_sbc_defconfig @@ -157,7 +157,6 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y CONFIG_CLK_COMPOSITE_CCF=y CONFIG_SPL_CLK_IMX8MM=y CONFIG_CLK_IMX8MM=y -CONFIG_SAVED_DRAM_TIMING_BASE=0x40000000 CONFIG_DFU_TFTP=y CONFIG_DFU_TIMEOUT=y CONFIG_DFU_MMC=y From 2629b18ed493ed237197b9abdc0012121a5c351b Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Thu, 31 Aug 2023 16:41:46 +0200 Subject: [PATCH 07/12] ARM: imx: Use default SAVED_DRAM_TIMING_BASE on Data Modul i.MX8M Plus eDM SBC Use default SAVED_DRAM_TIMING_BASE as that is what upstream TFA expects. Without this change, the board will fail to suspend/resume e.g. in Linux. Signed-off-by: Marek Vasut --- configs/imx8mp_data_modul_edm_sbc_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/configs/imx8mp_data_modul_edm_sbc_defconfig b/configs/imx8mp_data_modul_edm_sbc_defconfig index 2ff577f2d8..8b9d4b6c08 100644 --- a/configs/imx8mp_data_modul_edm_sbc_defconfig +++ b/configs/imx8mp_data_modul_edm_sbc_defconfig @@ -164,7 +164,6 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y CONFIG_CLK_COMPOSITE_CCF=y CONFIG_SPL_CLK_IMX8MP=y CONFIG_CLK_IMX8MP=y -CONFIG_SAVED_DRAM_TIMING_BASE=0x40000000 CONFIG_DFU_TFTP=y CONFIG_DFU_TIMEOUT=y CONFIG_DFU_MMC=y From 282ff895c89c4c403be8a2331bcc265ff5224a83 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 23 Aug 2023 14:59:07 -0300 Subject: [PATCH 08/12] imx8mm_evk_defconfig: Select CONFIG_IMX_TMU Select the i.MX8MM thermal driver as it is useful for displaying the CPU temperature and its grading: CPU: Commercial temperature grade (0C to 95C) at 38C It also prevents booting when the temperature is above the alert point. Signed-off-by: Fabio Estevam --- configs/imx8mm_evk_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/imx8mm_evk_defconfig b/configs/imx8mm_evk_defconfig index ac9810fe1b..822c2fbfab 100644 --- a/configs/imx8mm_evk_defconfig +++ b/configs/imx8mm_evk_defconfig @@ -104,6 +104,7 @@ CONFIG_SPL_SYSRESET=y CONFIG_SYSRESET_PSCI=y CONFIG_SYSRESET_WATCHDOG=y CONFIG_DM_THERMAL=y +CONFIG_IMX_TMU=y CONFIG_USB=y CONFIG_SPL_USB_HOST=y CONFIG_USB_EHCI_HCD=y From 402b8106eca604d3e1c150fbde88064d5044cb7c Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 23 Aug 2023 14:59:08 -0300 Subject: [PATCH 09/12] thermal: imx_tmu: Fix the polling default When the 'polling-delay' property is not passed via devicetree, pdata->polling_delay keeps at 0. This causes the imx_tmu driver to get stuck inside the busy while() loop when the CPU temperature is above the alert point. Fix this problem by passing a one second polling interval, which provides a proper delay to let the system to cool down and exit the while() loop when the temperature is below the alert point. Signed-off-by: Fabio Estevam --- drivers/thermal/imx_tmu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index 97efc55044..d9a04eaf79 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -37,6 +37,7 @@ DECLARE_GLOBAL_DATA_PTR; #define TER_ADC_PD 0x40000000 #define TER_ALPF 0x3 +#define IMX_TMU_POLLING_DELAY_MS 1000 /* * i.MX TMU Registers */ @@ -574,6 +575,8 @@ static int imx_tmu_parse_fdt(struct udevice *dev) dev_dbg(dev, "%s\n", __func__); + pdata->polling_delay = IMX_TMU_POLLING_DELAY_MS; + if (pdata->zone_node) { pdata->regs = (union tmu_regs *)dev_read_addr_ptr(dev); @@ -602,7 +605,8 @@ static int imx_tmu_parse_fdt(struct udevice *dev) dev_dbg(dev, "args.args_count %d, id %d\n", args.args_count, pdata->id); - pdata->polling_delay = dev_read_u32_default(dev, "polling-delay", 1000); + pdata->polling_delay = dev_read_u32_default(dev, "polling-delay", + IMX_TMU_POLLING_DELAY_MS); trips_np = ofnode_path("/thermal-zones/cpu-thermal/trips"); ofnode_for_each_subnode(trips_np, trips_np) { From 966480fe43ba929373b7449fa5b918d63cca88b3 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 23 Aug 2023 14:59:09 -0300 Subject: [PATCH 10/12] thermal: imx_tmu: Increase the log level for high temperatures dev_info() message is not printed by default. Increase the log level to dev_crit(). This allows the critical messages related to the temperature getting beyong the alert threshold to be displayed. Signed-off-by: Fabio Estevam Reviewed-by: Tom Rini --- drivers/thermal/imx_tmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index d9a04eaf79..d2ea084d2d 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -238,7 +238,7 @@ int imx_tmu_get_temp(struct udevice *dev, int *temp) return ret; while (cpu_tmp >= pdata->alert) { - dev_info(dev, "CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC) waiting...\n", + dev_crit(dev, "CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC) waiting...\n", cpu_tmp, pdata->alert, pdata->critical); mdelay(pdata->polling_delay); ret = read_temperature(dev, &cpu_tmp); From f4898e4b0ede5929cc1706d0da498d63375b1129 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 23 Aug 2023 14:59:10 -0300 Subject: [PATCH 11/12] thermal: imx_tmu: Fix the temperature unit The temperature unit is millidegree Celsius, so divide by 1000 to correctly print the temperature values in Celsius. While at it, also change a typo: "has beyond" to "is beyond". Signed-off-by: Fabio Estevam --- drivers/thermal/imx_tmu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index d2ea084d2d..b877ee3687 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -238,8 +238,8 @@ int imx_tmu_get_temp(struct udevice *dev, int *temp) return ret; while (cpu_tmp >= pdata->alert) { - dev_crit(dev, "CPU Temperature (%dC) has beyond alert (%dC), close to critical (%dC) waiting...\n", - cpu_tmp, pdata->alert, pdata->critical); + dev_crit(dev, "CPU Temperature (%dC) is beyond alert (%dC), close to critical (%dC) waiting...\n", + cpu_tmp / 1000, pdata->alert / 1000, pdata->critical / 1000); mdelay(pdata->polling_delay); ret = read_temperature(dev, &cpu_tmp); if (ret) From a79fca7b44d0dee96e14d31de5869b35b587283c Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Wed, 23 Aug 2023 14:59:11 -0300 Subject: [PATCH 12/12] thermal: imx_tmu: Increase the polling interval Polling every second to check whether the CPU has cooled down is too frequent. Allow more time for the CPU to cool down by increasing the polling interval to 5 seconds by defaut. This value is used in the absence of the 'polling-delay' devicetree property. Signed-off-by: Fabio Estevam --- drivers/thermal/imx_tmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index b877ee3687..4721cfbc02 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -37,7 +37,7 @@ DECLARE_GLOBAL_DATA_PTR; #define TER_ADC_PD 0x40000000 #define TER_ALPF 0x3 -#define IMX_TMU_POLLING_DELAY_MS 1000 +#define IMX_TMU_POLLING_DELAY_MS 5000 /* * i.MX TMU Registers */