From f8cebb4f789c9950caf55a0b73e88049e7a1c3a3 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Thu, 18 Jan 2024 12:06:39 -0300 Subject: imx8m: Enable LTO by default In an attempt to select ARMV8_SPL_EXCEPTION_VECTORS, the SPL size could not fit into the internal SRAM of some imx8m targets: aarch64: + imx8mm_phg +aarch64-linux-ld.bfd: u-boot-spl section `__u_boot_list' will not fit in region `.sram' +aarch64-linux-ld.bfd: region `.sram' overflowed by 1824 bytes Select LTO to prevent that. Signed-off-by: Fabio Estevam Reviewed-by: Marek Vasut --- arch/arm/mach-imx/imx8m/Kconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index b1937198402..328c3e38805 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -5,6 +5,7 @@ config IMX8M select BINMAN select GICV3 if ARMV8_PSCI select HAS_CAAM + select LTO select ROM_UNIFIED_SECTIONS select ARMV8_CRYPTO -- cgit v1.3.1 From 4dd80cb09ec333035a0cb812cae123dac568807c Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 19 Jan 2024 17:07:54 +0100 Subject: ARM: imx: Enable SPL_BOARD_INIT on DH i.MX8M Plus DHCOM The CONFIG_SPL_BOARD_INIT lets SPL common code call spl_board_init() during the SPL start up. On this particular system, spl_board_init() is used to reconfigure GIC clock parent to PLL2 500M, which is the configuration expected by the Linux kernel. Enable SPL_BOARD_INIT . Set GIC clock to 500 MHz for OD VDD_SOC. Kernel driver does not allow to change it. Should set the clock after PMIC setting done. Default is 400 MHz (system_pll1_800m with div = 2) set by ROM for ND VDD_SOC. Signed-off-by: Marek Vasut Reviewed-by: Fabio Estevam --- configs/imx8mp_dhcom_pdk2_defconfig | 1 + configs/imx8mp_dhcom_pdk3_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/imx8mp_dhcom_pdk2_defconfig b/configs/imx8mp_dhcom_pdk2_defconfig index 73e8421e55e..cae5375f5ef 100644 --- a/configs/imx8mp_dhcom_pdk2_defconfig +++ b/configs/imx8mp_dhcom_pdk2_defconfig @@ -57,6 +57,7 @@ CONFIG_SPL_MAX_SIZE=0x26000 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y CONFIG_SPL_BSS_START_ADDR=0x96fc00 CONFIG_SPL_BSS_MAX_SIZE=0x400 +CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_BOOTROM_SUPPORT=y # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set diff --git a/configs/imx8mp_dhcom_pdk3_defconfig b/configs/imx8mp_dhcom_pdk3_defconfig index a3966fb7019..78f7b96f3c3 100644 --- a/configs/imx8mp_dhcom_pdk3_defconfig +++ b/configs/imx8mp_dhcom_pdk3_defconfig @@ -58,6 +58,7 @@ CONFIG_SPL_MAX_SIZE=0x26000 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y CONFIG_SPL_BSS_START_ADDR=0x96fc00 CONFIG_SPL_BSS_MAX_SIZE=0x400 +CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_BOOTROM_SUPPORT=y # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -- cgit v1.3.1 From 67de291400725155afc637a18207a726781aa432 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Fri, 19 Jan 2024 17:08:32 +0100 Subject: ARM: imx: Configure GIC clock parent on Data Modul i.MX8M Plus eDM SBC The CONFIG_SPL_BOARD_INIT lets SPL common code call spl_board_init() during the SPL start up. On this particular system, spl_board_init() is used to reconfigure GIC clock parent to PLL2 500M, which is the configuration expected by the Linux kernel. Enable SPL_BOARD_INIT and fill in the GIC clock configuration code. Set GIC clock to 500 MHz for OD VDD_SOC. Kernel driver does not allow to change it. Should set the clock after PMIC setting done. Default is 400 MHz (system_pll1_800m with div = 2) set by ROM for ND VDD_SOC. Signed-off-by: Marek Vasut Reviewed-by: Fabio Estevam --- board/data_modul/imx8mp_edm_sbc/spl.c | 13 +++++++++++++ configs/imx8mp_data_modul_edm_sbc_defconfig | 1 + 2 files changed, 14 insertions(+) diff --git a/board/data_modul/imx8mp_edm_sbc/spl.c b/board/data_modul/imx8mp_edm_sbc/spl.c index a3600c8568a..cc2d253e391 100644 --- a/board/data_modul/imx8mp_edm_sbc/spl.c +++ b/board/data_modul/imx8mp_edm_sbc/spl.c @@ -80,6 +80,19 @@ int data_modul_imx_edm_sbc_board_power_init(void) return 0; } +void spl_board_init(void) +{ + /* + * Set GIC clock to 500 MHz for OD VDD_SOC. Kernel driver does not + * allow to change it. Should set the clock after PMIC setting done. + * Default is 400 MHz (system_pll1_800m with div = 2) set by ROM for + * ND VDD_SOC. + */ + clock_enable(CCGR_GIC, 0); + clock_set_target_val(GIC_CLK_ROOT, CLK_ROOT_ON | CLK_ROOT_SOURCE_SEL(5)); + clock_enable(CCGR_GIC, 1); +} + int spl_board_boot_device(enum boot_device boot_dev_spl) { if (boot_dev_spl == SPI_NOR_BOOT) /* SPI NOR */ diff --git a/configs/imx8mp_data_modul_edm_sbc_defconfig b/configs/imx8mp_data_modul_edm_sbc_defconfig index ba4730a4951..fb4fb6707d5 100644 --- a/configs/imx8mp_data_modul_edm_sbc_defconfig +++ b/configs/imx8mp_data_modul_edm_sbc_defconfig @@ -59,6 +59,7 @@ CONFIG_SPL_MAX_SIZE=0x25000 CONFIG_SPL_HAS_BSS_LINKER_SECTION=y CONFIG_SPL_BSS_START_ADDR=0x96fc00 CONFIG_SPL_BSS_MAX_SIZE=0x400 +CONFIG_SPL_BOARD_INIT=y CONFIG_SPL_BOOTROM_SUPPORT=y # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set # CONFIG_SPL_SHARES_INIT_SP_ADDR is not set -- cgit v1.3.1 From b06bfd65b6d999cca0c4123ce5d3071281c2380d Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Fri, 19 Jan 2024 14:25:33 -0300 Subject: wandboard: Convert to watchdog driver model Commit 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()") caused the 'reset' command in U-Boot to not cause a board reset. Fix it by switching to the watchdog driver model via sysreset, which is the preferred method for implementing the watchdog reset. Signed-off-by: Fabio Estevam --- arch/arm/dts/imx6qdl-wandboard-u-boot.dtsi | 10 ++++++++++ configs/wandboard_defconfig | 3 +++ 2 files changed, 13 insertions(+) diff --git a/arch/arm/dts/imx6qdl-wandboard-u-boot.dtsi b/arch/arm/dts/imx6qdl-wandboard-u-boot.dtsi index 46c4b3b31f4..80921e80123 100644 --- a/arch/arm/dts/imx6qdl-wandboard-u-boot.dtsi +++ b/arch/arm/dts/imx6qdl-wandboard-u-boot.dtsi @@ -6,4 +6,14 @@ aliases { mmc0 = &usdhc3; }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdog1>; + bootph-pre-ram; + }; +}; + +&wdog1 { + bootph-pre-ram; }; diff --git a/configs/wandboard_defconfig b/configs/wandboard_defconfig index 168e2f08600..e9deab38038 100644 --- a/configs/wandboard_defconfig +++ b/configs/wandboard_defconfig @@ -75,6 +75,8 @@ CONFIG_DM_PMIC_PFUZE100=y CONFIG_SCSI=y CONFIG_DM_SERIAL=y CONFIG_MXC_UART=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y CONFIG_DM_THERMAL=y CONFIG_USB=y CONFIG_VIDEO=y @@ -88,3 +90,4 @@ CONFIG_IMX_HDMI=y CONFIG_SPLASH_SCREEN=y CONFIG_SPLASH_SCREEN_ALIGN=y CONFIG_BMP_16BPP=y +CONFIG_IMX_WATCHDOG=y -- cgit v1.3.1 From 0912368af33fc0b6aaaff0e8fb515a73be0b7662 Mon Sep 17 00:00:00 2001 From: Fabio Estevam Date: Fri, 19 Jan 2024 16:41:34 -0300 Subject: pico-dwarf/hobbit-imx6ul: Convert to CONFIG_DM_SERIAL The conversion to CONFIG_DM_SERIAL is mandatory, so select this option. Signed-off-by: Fabio Estevam --- configs/pico-dwarf-imx6ul_defconfig | 1 + configs/pico-hobbit-imx6ul_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/configs/pico-dwarf-imx6ul_defconfig b/configs/pico-dwarf-imx6ul_defconfig index 7ae37264612..8b90285980f 100644 --- a/configs/pico-dwarf-imx6ul_defconfig +++ b/configs/pico-dwarf-imx6ul_defconfig @@ -67,6 +67,7 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_PFUZE100=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y +CONFIG_DM_SERIAL=y CONFIG_MXC_UART=y CONFIG_USB=y CONFIG_SPL_USB_HOST=y diff --git a/configs/pico-hobbit-imx6ul_defconfig b/configs/pico-hobbit-imx6ul_defconfig index fc5a54b4e5e..e3aca6e82e1 100644 --- a/configs/pico-hobbit-imx6ul_defconfig +++ b/configs/pico-hobbit-imx6ul_defconfig @@ -70,6 +70,7 @@ CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_PFUZE100=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y +CONFIG_DM_SERIAL=y CONFIG_MXC_UART=y CONFIG_USB=y CONFIG_SPL_USB_HOST=y -- cgit v1.3.1 From a80e0e7711a2b2890a583d88dcd9af978ddada32 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Sat, 20 Jan 2024 01:35:58 +0100 Subject: ARM: imx: Enable kaslrseed command on DH i.MX8M Plus DHCOM Linux 6.6.y with KASLR enabled would print the following message on boot: " KASLR disabled due to lack of seed " Enable the 'kaslrseed' command so a random number seed can be pulled from CAAM and inserted into the /chosen node 'kaslr-seed' property of Linux kernel DT before boot, thus letting KASLR work properly. Signed-off-by: Marek Vasut Reviewed-by: Fabio Estevam --- configs/imx8mp_dhcom_pdk2_defconfig | 2 ++ configs/imx8mp_dhcom_pdk3_defconfig | 2 ++ 2 files changed, 4 insertions(+) diff --git a/configs/imx8mp_dhcom_pdk2_defconfig b/configs/imx8mp_dhcom_pdk2_defconfig index cae5375f5ef..af5ed566459 100644 --- a/configs/imx8mp_dhcom_pdk2_defconfig +++ b/configs/imx8mp_dhcom_pdk2_defconfig @@ -120,6 +120,7 @@ CONFIG_CMD_BOOTCOUNT=y CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y CONFIG_CMD_GETTIME=y +CONFIG_CMD_KASLRSEED=y CONFIG_CMD_SYSBOOT=y CONFIG_CMD_UUID=y CONFIG_CMD_PMIC=y @@ -228,6 +229,7 @@ CONFIG_DM_REGULATOR_PCA9450=y CONFIG_SPL_DM_REGULATOR_PCA9450=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y +CONFIG_DM_RNG=y CONFIG_DM_RTC=y CONFIG_RTC_M41T62=y CONFIG_CONS_INDEX=2 diff --git a/configs/imx8mp_dhcom_pdk3_defconfig b/configs/imx8mp_dhcom_pdk3_defconfig index 78f7b96f3c3..3a034694d0c 100644 --- a/configs/imx8mp_dhcom_pdk3_defconfig +++ b/configs/imx8mp_dhcom_pdk3_defconfig @@ -122,6 +122,7 @@ CONFIG_CMD_BOOTCOUNT=y CONFIG_CMD_CACHE=y CONFIG_CMD_TIME=y CONFIG_CMD_GETTIME=y +CONFIG_CMD_KASLRSEED=y CONFIG_CMD_SYSBOOT=y CONFIG_CMD_UUID=y CONFIG_CMD_PMIC=y @@ -233,6 +234,7 @@ CONFIG_DM_REGULATOR_PCA9450=y CONFIG_SPL_DM_REGULATOR_PCA9450=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y +CONFIG_DM_RNG=y CONFIG_DM_RTC=y CONFIG_RTC_M41T62=y CONFIG_CONS_INDEX=2 -- cgit v1.3.1