Message ID | 20240408181429.3676856-7-jonas@kwiboo.se |
---|---|
State | Accepted |
Commit | 314992516ff23fcd0159f1c24a5c0416f12b66ac |
Delegated to: | Kever Yang |
Headers | show |
Series | rockchip: rk3308: Sync DT with linux v6.8 and update defconfigs | expand |
On 2024/4/9 02:14, Jonas Karlman wrote: > When RK3308 boards run SPL from eMMC and fail to load FIT from eMMC due > to it being missing or checksum validation fails there can be a fallback > to read FIT from SD-card. However, without proper pinctrl configuration > reading FIT from SD-card may fail: > > U-Boot SPL 2024.04-rc4 (Mar 16 2024 - 12:36:12 +0000) > Trying to boot from MMC2 > mmc_load_image_raw_sector: mmc block read error > Trying to boot from MMC1 > Card did not respond to voltage select! : -110 > mmc_init: -95, time 12 > spl: mmc init failed with error: -95 > Trying to boot from MMC2 > mmc_load_image_raw_sector: mmc block read error > SPL: failed to boot from all boot devices (err=-6) > ### ERROR ### Please RESET the board ### > > Fix this by tagging related emmc and sdmmc pinctrl nodes with bootph > props. Also sort and move common nodes shared by all boards to the SoC > u-boot.dtsi. > > Imply SPL_PINCTRL and SPL_DM_SEQ_ALIAS to apply correct pinconf before > trying to load FIT from a device. > > Move u-boot,spl-boot-order to soc u-boot.dtsi and define both sdmmc and > emmc nodes as fallback. > > Also fix boot from eMMC (SD NAND) on ROCK Pi S by using correct pinctrl. > > Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > v2: Add bootph-some-ram to pinctrl nodes > --- > arch/arm/dts/rk3308-evb-u-boot.dtsi | 11 ++- > arch/arm/dts/rk3308-roc-cc-u-boot.dtsi | 15 ++-- > arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi | 35 ++++------ > arch/arm/dts/rk3308-u-boot.dtsi | 85 +++++++++++++++++++++-- > arch/arm/mach-rockchip/Kconfig | 2 + > configs/evb-rk3308_defconfig | 2 +- > configs/roc-cc-rk3308_defconfig | 4 +- > configs/rock-pi-s-rk3308_defconfig | 2 +- > 8 files changed, 114 insertions(+), 42 deletions(-) > > diff --git a/arch/arm/dts/rk3308-evb-u-boot.dtsi b/arch/arm/dts/rk3308-evb-u-boot.dtsi > index d15ba94d37b6..007a69f9a60e 100644 > --- a/arch/arm/dts/rk3308-evb-u-boot.dtsi > +++ b/arch/arm/dts/rk3308-evb-u-boot.dtsi > @@ -4,14 +4,11 @@ > */ > #include "rk3308-u-boot.dtsi" > > -/ { > - chosen { > - u-boot,spl-boot-order = "same-as-spl", &emmc; > - }; > -}; > - > &uart4 { > bootph-all; > clock-frequency = <24000000>; > - status = "okay"; > +}; > + > +&uart4_xfer { > + bootph-all; > }; > diff --git a/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi b/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi > index 97d922c435d4..d823ac00c771 100644 > --- a/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi > +++ b/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi > @@ -4,14 +4,19 @@ > */ > #include "rk3308-u-boot.dtsi" > > -/ { > - chosen { > - u-boot,spl-boot-order = "same-as-spl", &emmc; > - }; > +&gpio4 { > + bootph-pre-ram; > }; > > &uart2 { > bootph-all; > clock-frequency = <24000000>; > - status = "okay"; > +}; > + > +&uart2m0_xfer { > + bootph-all; > +}; > + > +&vcc_sd { > + bootph-pre-ram; > }; > diff --git a/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi b/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi > index d88dee80573e..e458fb3142ee 100644 > --- a/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi > +++ b/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi > @@ -4,39 +4,30 @@ > */ > #include "rk3308-u-boot.dtsi" > > -/ { > - chosen { > - u-boot,spl-boot-order = "same-as-spl", &emmc, &sdmmc; > - }; > +&emmc { > + cap-sd-highspeed; > + pinctrl-names = "default"; > + pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus4>; > }; > > -&uart0 { > - bootph-all; > -}; > - > -&pinctrl { > +&emmc_bus4 { > + bootph-pre-ram; > bootph-some-ram; > - > - uart0 { > - bootph-some-ram; > - }; > - rtc { > - bootph-some-ram; > - }; > }; > > -&uart0_xfer { > - bootph-some-ram; > +&uart0 { > + bootph-all; > + clock-frequency = <24000000>; > }; > > &uart0_cts { > - bootph-some-ram; > + bootph-all; > }; > > &uart0_rts { > - bootph-some-ram; > + bootph-all; > }; > > -&rtc_32k { > - bootph-some-ram; > +&uart0_xfer { > + bootph-all; > }; > diff --git a/arch/arm/dts/rk3308-u-boot.dtsi b/arch/arm/dts/rk3308-u-boot.dtsi > index fa31c838d34d..26e1a94f2e1a 100644 > --- a/arch/arm/dts/rk3308-u-boot.dtsi > +++ b/arch/arm/dts/rk3308-u-boot.dtsi > @@ -11,6 +11,10 @@ > mmc1 = &sdmmc; > }; > > + chosen { > + u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc; > + }; > + > otp: nvmem@ff210000 { > compatible = "rockchip,rk3308-otp"; > reg = <0x0 0xff210000 0x0 0x4000>; > @@ -42,21 +46,92 @@ > }; > > &emmc { > + bootph-pre-ram; > + bootph-some-ram; > + > /* mmc to sram can't do dma, prevent aborts transferring TF-A parts */ > u-boot,spl-fifo-mode; > +}; > + > +&emmc_bus8 { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&emmc_clk { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&emmc_cmd { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&grf { > bootph-all; > }; > > -&sdmmc { > +&pcfg_pull_none { > bootph-all; > - u-boot,spl-fifo-mode; > }; > > -&grf { > +&pcfg_pull_none_4ma { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&pcfg_pull_none_8ma { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&pcfg_pull_up { > + bootph-all; > +}; > + > +&pcfg_pull_up_4ma { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&pcfg_pull_up_8ma { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&pinctrl { > bootph-all; > }; > > -&saradc { > +&rtc_32k { > bootph-all; > - status = "okay"; > +}; > + > +&sdmmc { > + bootph-pre-ram; > + bootph-some-ram; > + > + /* mmc to sram can't do dma, prevent aborts transferring TF-A parts */ > + u-boot,spl-fifo-mode; > +}; > + > +&sdmmc_bus4 { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&sdmmc_clk { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&sdmmc_cmd { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&sdmmc_det { > + bootph-pre-ram; > + bootph-some-ram; > }; > diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig > index fa5917236a43..3d6a76a793e7 100644 > --- a/arch/arm/mach-rockchip/Kconfig > +++ b/arch/arm/mach-rockchip/Kconfig > @@ -170,7 +170,9 @@ config ROCKCHIP_RK3308 > imply ROCKCHIP_COMMON_BOARD > imply ROCKCHIP_OTP > imply SPL_CLK > + imply SPL_DM_SEQ_ALIAS > imply SPL_FIT_SIGNATURE > + imply SPL_PINCTRL > imply SPL_RAM > imply SPL_REGMAP > imply SPL_ROCKCHIP_COMMON_BOARD > diff --git a/configs/evb-rk3308_defconfig b/configs/evb-rk3308_defconfig > index 6a6d2540317d..9dc7d9c0caea 100644 > --- a/configs/evb-rk3308_defconfig > +++ b/configs/evb-rk3308_defconfig > @@ -40,7 +40,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y > CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 > CONFIG_SPL_OF_CONTROL=y > CONFIG_OF_LIVE=y > -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > CONFIG_SYS_RELOC_GD_ENV_ADDR=y > CONFIG_REGMAP=y > CONFIG_SYSCON=y > diff --git a/configs/roc-cc-rk3308_defconfig b/configs/roc-cc-rk3308_defconfig > index 2f4a160acc24..041fa75b9659 100644 > --- a/configs/roc-cc-rk3308_defconfig > +++ b/configs/roc-cc-rk3308_defconfig > @@ -2,6 +2,7 @@ CONFIG_ARM=y > CONFIG_SKIP_LOWLEVEL_INIT=y > CONFIG_COUNTER_FREQUENCY=24000000 > CONFIG_ARCH_ROCKCHIP=y > +CONFIG_SPL_GPIO=y > CONFIG_DEFAULT_DEVICE_TREE="rk3308-roc-cc" > CONFIG_DM_RESET=y > CONFIG_ROCKCHIP_RK3308=y > @@ -40,7 +41,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y > CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 > CONFIG_SPL_OF_CONTROL=y > CONFIG_OF_LIVE=y > -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > CONFIG_SYS_RELOC_GD_ENV_ADDR=y > CONFIG_REGMAP=y > CONFIG_SYSCON=y > @@ -57,6 +58,7 @@ CONFIG_PHY=y > CONFIG_PINCTRL=y > CONFIG_REGULATOR_PWM=y > CONFIG_DM_REGULATOR_FIXED=y > +CONFIG_SPL_DM_REGULATOR_FIXED=y > CONFIG_PWM_ROCKCHIP=y > CONFIG_RAM=y > CONFIG_BAUDRATE=1500000 > diff --git a/configs/rock-pi-s-rk3308_defconfig b/configs/rock-pi-s-rk3308_defconfig > index b0ad4d6ce354..27ee24a62290 100644 > --- a/configs/rock-pi-s-rk3308_defconfig > +++ b/configs/rock-pi-s-rk3308_defconfig > @@ -41,7 +41,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y > CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 > CONFIG_SPL_OF_CONTROL=y > CONFIG_OF_LIVE=y > -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" > CONFIG_SYS_RELOC_GD_ENV_ADDR=y > CONFIG_REGMAP=y > CONFIG_SYSCON=y
diff --git a/arch/arm/dts/rk3308-evb-u-boot.dtsi b/arch/arm/dts/rk3308-evb-u-boot.dtsi index d15ba94d37b6..007a69f9a60e 100644 --- a/arch/arm/dts/rk3308-evb-u-boot.dtsi +++ b/arch/arm/dts/rk3308-evb-u-boot.dtsi @@ -4,14 +4,11 @@ */ #include "rk3308-u-boot.dtsi" -/ { - chosen { - u-boot,spl-boot-order = "same-as-spl", &emmc; - }; -}; - &uart4 { bootph-all; clock-frequency = <24000000>; - status = "okay"; +}; + +&uart4_xfer { + bootph-all; }; diff --git a/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi b/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi index 97d922c435d4..d823ac00c771 100644 --- a/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi +++ b/arch/arm/dts/rk3308-roc-cc-u-boot.dtsi @@ -4,14 +4,19 @@ */ #include "rk3308-u-boot.dtsi" -/ { - chosen { - u-boot,spl-boot-order = "same-as-spl", &emmc; - }; +&gpio4 { + bootph-pre-ram; }; &uart2 { bootph-all; clock-frequency = <24000000>; - status = "okay"; +}; + +&uart2m0_xfer { + bootph-all; +}; + +&vcc_sd { + bootph-pre-ram; }; diff --git a/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi b/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi index d88dee80573e..e458fb3142ee 100644 --- a/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi +++ b/arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi @@ -4,39 +4,30 @@ */ #include "rk3308-u-boot.dtsi" -/ { - chosen { - u-boot,spl-boot-order = "same-as-spl", &emmc, &sdmmc; - }; +&emmc { + cap-sd-highspeed; + pinctrl-names = "default"; + pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus4>; }; -&uart0 { - bootph-all; -}; - -&pinctrl { +&emmc_bus4 { + bootph-pre-ram; bootph-some-ram; - - uart0 { - bootph-some-ram; - }; - rtc { - bootph-some-ram; - }; }; -&uart0_xfer { - bootph-some-ram; +&uart0 { + bootph-all; + clock-frequency = <24000000>; }; &uart0_cts { - bootph-some-ram; + bootph-all; }; &uart0_rts { - bootph-some-ram; + bootph-all; }; -&rtc_32k { - bootph-some-ram; +&uart0_xfer { + bootph-all; }; diff --git a/arch/arm/dts/rk3308-u-boot.dtsi b/arch/arm/dts/rk3308-u-boot.dtsi index fa31c838d34d..26e1a94f2e1a 100644 --- a/arch/arm/dts/rk3308-u-boot.dtsi +++ b/arch/arm/dts/rk3308-u-boot.dtsi @@ -11,6 +11,10 @@ mmc1 = &sdmmc; }; + chosen { + u-boot,spl-boot-order = "same-as-spl", &sdmmc, &emmc; + }; + otp: nvmem@ff210000 { compatible = "rockchip,rk3308-otp"; reg = <0x0 0xff210000 0x0 0x4000>; @@ -42,21 +46,92 @@ }; &emmc { + bootph-pre-ram; + bootph-some-ram; + /* mmc to sram can't do dma, prevent aborts transferring TF-A parts */ u-boot,spl-fifo-mode; +}; + +&emmc_bus8 { + bootph-pre-ram; + bootph-some-ram; +}; + +&emmc_clk { + bootph-pre-ram; + bootph-some-ram; +}; + +&emmc_cmd { + bootph-pre-ram; + bootph-some-ram; +}; + +&grf { bootph-all; }; -&sdmmc { +&pcfg_pull_none { bootph-all; - u-boot,spl-fifo-mode; }; -&grf { +&pcfg_pull_none_4ma { + bootph-pre-ram; + bootph-some-ram; +}; + +&pcfg_pull_none_8ma { + bootph-pre-ram; + bootph-some-ram; +}; + +&pcfg_pull_up { + bootph-all; +}; + +&pcfg_pull_up_4ma { + bootph-pre-ram; + bootph-some-ram; +}; + +&pcfg_pull_up_8ma { + bootph-pre-ram; + bootph-some-ram; +}; + +&pinctrl { bootph-all; }; -&saradc { +&rtc_32k { bootph-all; - status = "okay"; +}; + +&sdmmc { + bootph-pre-ram; + bootph-some-ram; + + /* mmc to sram can't do dma, prevent aborts transferring TF-A parts */ + u-boot,spl-fifo-mode; +}; + +&sdmmc_bus4 { + bootph-pre-ram; + bootph-some-ram; +}; + +&sdmmc_clk { + bootph-pre-ram; + bootph-some-ram; +}; + +&sdmmc_cmd { + bootph-pre-ram; + bootph-some-ram; +}; + +&sdmmc_det { + bootph-pre-ram; + bootph-some-ram; }; diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index fa5917236a43..3d6a76a793e7 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -170,7 +170,9 @@ config ROCKCHIP_RK3308 imply ROCKCHIP_COMMON_BOARD imply ROCKCHIP_OTP imply SPL_CLK + imply SPL_DM_SEQ_ALIAS imply SPL_FIT_SIGNATURE + imply SPL_PINCTRL imply SPL_RAM imply SPL_REGMAP imply SPL_ROCKCHIP_COMMON_BOARD diff --git a/configs/evb-rk3308_defconfig b/configs/evb-rk3308_defconfig index 6a6d2540317d..9dc7d9c0caea 100644 --- a/configs/evb-rk3308_defconfig +++ b/configs/evb-rk3308_defconfig @@ -40,7 +40,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 CONFIG_SPL_OF_CONTROL=y CONFIG_OF_LIVE=y -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_REGMAP=y CONFIG_SYSCON=y diff --git a/configs/roc-cc-rk3308_defconfig b/configs/roc-cc-rk3308_defconfig index 2f4a160acc24..041fa75b9659 100644 --- a/configs/roc-cc-rk3308_defconfig +++ b/configs/roc-cc-rk3308_defconfig @@ -2,6 +2,7 @@ CONFIG_ARM=y CONFIG_SKIP_LOWLEVEL_INIT=y CONFIG_COUNTER_FREQUENCY=24000000 CONFIG_ARCH_ROCKCHIP=y +CONFIG_SPL_GPIO=y CONFIG_DEFAULT_DEVICE_TREE="rk3308-roc-cc" CONFIG_DM_RESET=y CONFIG_ROCKCHIP_RK3308=y @@ -40,7 +41,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 CONFIG_SPL_OF_CONTROL=y CONFIG_OF_LIVE=y -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_REGMAP=y CONFIG_SYSCON=y @@ -57,6 +58,7 @@ CONFIG_PHY=y CONFIG_PINCTRL=y CONFIG_REGULATOR_PWM=y CONFIG_DM_REGULATOR_FIXED=y +CONFIG_SPL_DM_REGULATOR_FIXED=y CONFIG_PWM_ROCKCHIP=y CONFIG_RAM=y CONFIG_BAUDRATE=1500000 diff --git a/configs/rock-pi-s-rk3308_defconfig b/configs/rock-pi-s-rk3308_defconfig index b0ad4d6ce354..27ee24a62290 100644 --- a/configs/rock-pi-s-rk3308_defconfig +++ b/configs/rock-pi-s-rk3308_defconfig @@ -41,7 +41,7 @@ CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 CONFIG_SPL_OF_CONTROL=y CONFIG_OF_LIVE=y -CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_REGMAP=y CONFIG_SYSCON=y
When RK3308 boards run SPL from eMMC and fail to load FIT from eMMC due to it being missing or checksum validation fails there can be a fallback to read FIT from SD-card. However, without proper pinctrl configuration reading FIT from SD-card may fail: U-Boot SPL 2024.04-rc4 (Mar 16 2024 - 12:36:12 +0000) Trying to boot from MMC2 mmc_load_image_raw_sector: mmc block read error Trying to boot from MMC1 Card did not respond to voltage select! : -110 mmc_init: -95, time 12 spl: mmc init failed with error: -95 Trying to boot from MMC2 mmc_load_image_raw_sector: mmc block read error SPL: failed to boot from all boot devices (err=-6) ### ERROR ### Please RESET the board ### Fix this by tagging related emmc and sdmmc pinctrl nodes with bootph props. Also sort and move common nodes shared by all boards to the SoC u-boot.dtsi. Imply SPL_PINCTRL and SPL_DM_SEQ_ALIAS to apply correct pinconf before trying to load FIT from a device. Move u-boot,spl-boot-order to soc u-boot.dtsi and define both sdmmc and emmc nodes as fallback. Also fix boot from eMMC (SD NAND) on ROCK Pi S by using correct pinctrl. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> --- v2: Add bootph-some-ram to pinctrl nodes --- arch/arm/dts/rk3308-evb-u-boot.dtsi | 11 ++- arch/arm/dts/rk3308-roc-cc-u-boot.dtsi | 15 ++-- arch/arm/dts/rk3308-rock-pi-s-u-boot.dtsi | 35 ++++------ arch/arm/dts/rk3308-u-boot.dtsi | 85 +++++++++++++++++++++-- arch/arm/mach-rockchip/Kconfig | 2 + configs/evb-rk3308_defconfig | 2 +- configs/roc-cc-rk3308_defconfig | 4 +- configs/rock-pi-s-rk3308_defconfig | 2 +- 8 files changed, 114 insertions(+), 42 deletions(-)