[U-Boot] [PATCH v5 0/8] rockchip: enable TPL for tinker-rk3288

Tinker board has overflow the SRAM size limit, enable TPL for it so that there will be no size limit for SPL.
Also some other fix to bring up Tinker board: - enabel sdmmc pinctrl with dts in SPL - extend raw u-boot.bin size limit
Version 2 move related "u-boot,dm-pre-reloc" into -u-boot.dtsi
Changes in v5: - use imply instead of select for TPL options - use imply instead of select for TPL Kconfig option
Changes in v4: - include "rk3288-u-boot.dtsi" in board '-u-boot.dtsi' and not touch dts file. Series-changes: 3 - include "rk3288-u-boot.dtsi" for board already have board level -u-boot.dtsi - include "rk3288-u-boot.dtsi" in board '-u-boot.dtsi' and not touch dts file. Series-changes: 3 - include "rk3288-u-boot.dtsi" in dts. - add blank line back
Changes in v2: - update the tags in -u-boot.dtsi
Kever Yang (8): rockchip: rk3288: enable TPL configs to chip level rockchip: rk3288: add separate TPL STACK address rockchip: dts: rk3288: move reloc tag into -u-boot dts rockchip: dts: tinker: migrate the dm-pre-reloc tag into -u-boot dts rockchip: dts: rk3288-tinker: enable sdmmc pinctrl node in spl rockchip: config: update config for TPL support on tinker-rk3288 rockchip: config: tiner-rk3288: extend CONFIG_SYS_MONITOR_LEN to 600KB rockchip: rk3288: enable TPL for tinker-board
arch/arm/dts/rk3288-tinker-u-boot.dtsi | 54 +++++++++++++++++++ arch/arm/dts/rk3288-tinker.dts | 19 ------- arch/arm/dts/rk3288-u-boot.dtsi | 36 +++++++++++++ arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi | 2 + arch/arm/dts/rk3288-vyasa-u-boot.dtsi | 2 + arch/arm/dts/rk3288.dtsi | 8 --- arch/arm/mach-rockchip/Kconfig | 18 +++++++ arch/arm/mach-rockchip/rk3288/Kconfig | 15 +----- configs/tinker-rk3288_defconfig | 13 ++--- include/configs/tinker_rk3288.h | 1 + 10 files changed, 119 insertions(+), 49 deletions(-) create mode 100644 arch/arm/dts/rk3288-tinker-u-boot.dtsi create mode 100644 arch/arm/dts/rk3288-u-boot.dtsi

More boards other than vyasa needs TPL, so enable the TPL configs at chip level instead of board level.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: - use imply instead of select for TPL options
Changes in v4: None Changes in v2: None
arch/arm/mach-rockchip/Kconfig | 14 ++++++++++++++ arch/arm/mach-rockchip/rk3288/Kconfig | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index 1624b084b9..9d891ad5f1 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -87,6 +87,20 @@ config ROCKCHIP_RK3288 select SPL_BOARD_INIT if SPL select SUPPORT_SPL select SPL + select SUPPORT_TPL + imply TPL_BOOTROM_SUPPORT + imply TPL_CLK + imply TPL_DM + imply TPL_DRIVERS_MISC_SUPPORT + imply TPL_LIBCOMMON_SUPPORT + imply TPL_LIBGENERIC_SUPPORT + imply TPL_NEEDS_SEPARATE_TEXT_BASE + imply TPL_OF_CONTROL + imply TPL_OF_PLATDATA + imply TPL_RAM + imply TPL_REGMAP + imply TPL_SERIAL_SUPPORT + imply TPL_SYSCON imply USB_FUNCTION_ROCKUSB imply CMD_ROCKUSB help diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig index 50680ce606..541301dfb8 100644 --- a/arch/arm/mach-rockchip/rk3288/Kconfig +++ b/arch/arm/mach-rockchip/rk3288/Kconfig @@ -99,21 +99,7 @@ config TARGET_VYASA_RK3288 bool "Vyasa-RK3288" select BOARD_LATE_INIT select ROCKCHIP_BROM_HELPER - select SUPPORT_TPL select TPL - select TPL_BOOTROM_SUPPORT - select TPL_CLK - select TPL_DM - select TPL_DRIVERS_MISC_SUPPORT - select TPL_LIBCOMMON_SUPPORT - select TPL_LIBGENERIC_SUPPORT - select TPL_NEEDS_SEPARATE_TEXT_BASE if SPL - select TPL_OF_CONTROL - select TPL_OF_PLATDATA - select TPL_RAM - select TPL_REGMAP - select TPL_SERIAL_SUPPORT - select TPL_SYSCON help Vyasa is a RK3288-based development board with 2 USB ports, HDMI, VGA, micro-SD card, audio, WiFi and Gigabit Ethernet, It

TPL is at SRAM while other stage is at SDRAM, so it needs separate STACK.
Signed-off-by: Kever Yang kever.yang@rock-chips.com Reviewed-by: Jagan Teki jagan@amarulasolutions.com ---
Changes in v5: - use imply instead of select for TPL Kconfig option
Changes in v4: None Changes in v2: None
arch/arm/mach-rockchip/Kconfig | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig index 9d891ad5f1..1090d21879 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -95,6 +95,7 @@ config ROCKCHIP_RK3288 imply TPL_LIBCOMMON_SUPPORT imply TPL_LIBGENERIC_SUPPORT imply TPL_NEEDS_SEPARATE_TEXT_BASE + imply TPL_NEEDS_SEPARATE_STACK imply TPL_OF_CONTROL imply TPL_OF_PLATDATA imply TPL_RAM @@ -118,6 +119,9 @@ config TPL_TEXT_BASE config TPL_MAX_SIZE default 32768
+config TPL_STACK + default 0xff718000 + endif
config ROCKCHIP_RK3328

Move all the tag "u-boot,dm-pre-reloc" from rk3288.dtsi into rk3288-u-boot.dtsi.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: - include "rk3288-u-boot.dtsi" in board '-u-boot.dtsi' and not touch dts file. Series-changes: 3 - include "rk3288-u-boot.dtsi" for board already have board level -u-boot.dtsi
Changes in v2: None
arch/arm/dts/rk3288-u-boot.dtsi | 36 +++++++++++++++++++ arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi | 2 ++ arch/arm/dts/rk3288-vyasa-u-boot.dtsi | 2 ++ arch/arm/dts/rk3288.dtsi | 8 ----- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 arch/arm/dts/rk3288-u-boot.dtsi
diff --git a/arch/arm/dts/rk3288-u-boot.dtsi b/arch/arm/dts/rk3288-u-boot.dtsi new file mode 100644 index 0000000000..4cf75c7504 --- /dev/null +++ b/arch/arm/dts/rk3288-u-boot.dtsi @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Rockchip Electronics Co., Ltd + */ + +&dmc { + u-boot,dm-pre-reloc; +}; + +&pmu { + u-boot,dm-pre-reloc; +}; + +&sgrf { + u-boot,dm-pre-reloc; +}; + +&cru { + u-boot,dm-pre-reloc; +}; + +&grf { + u-boot,dm-pre-reloc; +}; + +&vopb { + u-boot,dm-pre-reloc; +}; + +&vopl { + u-boot,dm-pre-reloc; +}; + +&noc { + u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi b/arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi index 22ba3490f2..eccc069368 100644 --- a/arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi +++ b/arch/arm/dts/rk3288-veyron-speedy-u-boot.dtsi @@ -3,6 +3,8 @@ * Copyright 2015 Google, Inc */
+#include "rk3288-u-boot.dtsi" + &dmc { rockchip,pctl-timing = <0x215 0xc8 0x0 0x35 0x26 0x2 0x70 0x2000d 0x6 0x0 0x8 0x4 0x17 0x24 0xd 0x6 diff --git a/arch/arm/dts/rk3288-vyasa-u-boot.dtsi b/arch/arm/dts/rk3288-vyasa-u-boot.dtsi index 379b1e3189..7730d17228 100644 --- a/arch/arm/dts/rk3288-vyasa-u-boot.dtsi +++ b/arch/arm/dts/rk3288-vyasa-u-boot.dtsi @@ -3,6 +3,8 @@ * Copyright (C) 2017 Jagan Teki jagan@amarulasolutions.com */
+#include "rk3288-u-boot.dtsi" + &dmc { rockchip,pctl-timing = <0x29a 0xc8 0x1f8 0x42 0x4e 0x4 0xea 0xa 0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7 diff --git a/arch/arm/dts/rk3288.dtsi b/arch/arm/dts/rk3288.dtsi index 487d22c9b0..866fc08215 100644 --- a/arch/arm/dts/rk3288.dtsi +++ b/arch/arm/dts/rk3288.dtsi @@ -468,7 +468,6 @@ };
dmc: dmc@ff610000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-dmc", "syscon"; rockchip,cru = <&cru>; rockchip,grf = <&grf>; @@ -584,13 +583,11 @@ };
pmu: power-management@ff730000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-pmu", "syscon"; reg = <0xff730000 0x100>; };
sgrf: syscon@ff740000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-sgrf", "syscon"; reg = <0xff740000 0x1000>; }; @@ -599,7 +596,6 @@ compatible = "rockchip,rk3288-cru"; reg = <0xff760000 0x1000>; rockchip,grf = <&grf>; - u-boot,dm-pre-reloc; #clock-cells = <1>; #reset-cells = <1>; assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>, @@ -615,7 +611,6 @@ };
grf: syscon@ff770000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-grf", "syscon"; reg = <0xff770000 0x1000>; }; @@ -660,7 +655,6 @@ };
vopb: vop@ff930000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-vop"; reg = <0xff930000 0x19c>; interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; @@ -715,7 +709,6 @@ iommus = <&vopl_mmu>; power-domains = <&power RK3288_PD_VIO>; status = "disabled"; - u-boot,dm-pre-reloc; vopl_out: port { #address-cells = <1>; #size-cells = <0>; @@ -911,7 +904,6 @@ };
noc: syscon@ffac0000 { - u-boot,dm-pre-reloc; compatible = "rockchip,rk3288-noc", "syscon"; reg = <0xffac0000 0x2000>; };

Migrate all the "u-boot,dm-pre-reloc" tag from rk3288-tinker.dts into rk3288-tinker-u-boot.dtsi. When both board level and soc level '-u-boot.dtsi' files exist, we need to include the soc level 'rk3288-u-boot.dtsi' manually.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: - include "rk3288-u-boot.dtsi" in board '-u-boot.dtsi' and not touch dts file. Series-changes: 3 - include "rk3288-u-boot.dtsi" in dts.
Changes in v2: None
arch/arm/dts/rk3288-tinker-u-boot.dtsi | 30 ++++++++++++++++++++++++++ arch/arm/dts/rk3288-tinker.dts | 19 ---------------- 2 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 arch/arm/dts/rk3288-tinker-u-boot.dtsi
diff --git a/arch/arm/dts/rk3288-tinker-u-boot.dtsi b/arch/arm/dts/rk3288-tinker-u-boot.dtsi new file mode 100644 index 0000000000..cf961b3cda --- /dev/null +++ b/arch/arm/dts/rk3288-tinker-u-boot.dtsi @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2019 Rockchip Electronics Co., Ltd + */ + +#include "rk3288-u-boot.dtsi" + +&pinctrl { + u-boot,dm-pre-reloc; +}; + +&uart2 { + u-boot,dm-pre-reloc; +}; + +&sdmmc { + u-boot,dm-pre-reloc; +}; + +&emmc { + u-boot,dm-pre-reloc; +}; + +&gpio3 { + u-boot,dm-pre-reloc; +}; + +&gpio8 { + u-boot,dm-pre-reloc; +}; diff --git a/arch/arm/dts/rk3288-tinker.dts b/arch/arm/dts/rk3288-tinker.dts index 3edd21cc2f..94c3afe860 100644 --- a/arch/arm/dts/rk3288-tinker.dts +++ b/arch/arm/dts/rk3288-tinker.dts @@ -28,8 +28,6 @@
&pinctrl { - u-boot,dm-pre-reloc; - usb { host_vbus_drv: host-vbus-drv { rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>; @@ -42,7 +40,6 @@ };
&uart2 { - u-boot,dm-pre-reloc; reg-shift = <2>; };
@@ -51,22 +48,6 @@ status = "okay"; };
-&sdmmc { - u-boot,dm-pre-reloc; -}; - -&emmc { - u-boot,dm-pre-reloc; -}; - -&gpio3 { - u-boot,dm-pre-reloc; -}; - -&gpio8 { - u-boot,dm-pre-reloc; -}; - &i2c2 { m24c08@50 { compatible = "at,24c08", "i2c-eeprom";

rockchip pinctrl driver has update to use dts, so we need to add the pinctrl config in SPL for sdmmc.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: None Changes in v2: - update the tags in -u-boot.dtsi
arch/arm/dts/rk3288-tinker-u-boot.dtsi | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
diff --git a/arch/arm/dts/rk3288-tinker-u-boot.dtsi b/arch/arm/dts/rk3288-tinker-u-boot.dtsi index cf961b3cda..2efb309d6b 100644 --- a/arch/arm/dts/rk3288-tinker-u-boot.dtsi +++ b/arch/arm/dts/rk3288-tinker-u-boot.dtsi @@ -28,3 +28,27 @@ &gpio8 { u-boot,dm-pre-reloc; }; + +&pcfg_pull_none_drv_8ma { + u-boot,dm-spl; +}; + +&pcfg_pull_up_drv_8ma { + u-boot,dm-spl; +}; + +&sdmmc_bus4 { + u-boot,dm-spl; +}; + +&sdmmc_clk { + u-boot,dm-spl; +}; + +&sdmmc_cmd { + u-boot,dm-spl; +}; + +&sdmmc_pwr { + u-boot,dm-spl; +};

We need to update TEXT BASE for TPL/SPL/U-Boot; SPL no need relocate STACK after enable TPL, so remove it; Don't enable pinctrl names so that SPL can get pinctrl dts;
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: None Changes in v2: None
configs/tinker-rk3288_defconfig | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig index 0e8cf73fe9..e429c0c6f2 100644 --- a/configs/tinker-rk3288_defconfig +++ b/configs/tinker-rk3288_defconfig @@ -1,13 +1,12 @@ CONFIG_ARM=y CONFIG_ARCH_ROCKCHIP=y -CONFIG_SYS_TEXT_BASE=0x00000000 +CONFIG_SYS_TEXT_BASE=0x01000000 CONFIG_SYS_MALLOC_F_LEN=0x2000 CONFIG_ROCKCHIP_RK3288=y -CONFIG_SPL_SIZE_LIMIT=30720 -CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y +CONFIG_TPL_LDSCRIPT="arch/arm/mach-rockchip/u-boot-tpl.lds" CONFIG_TARGET_TINKER_RK3288=y CONFIG_NR_DRAM_BANKS=1 -CONFIG_SPL_STACK_R_ADDR=0x80000 +CONFIG_SPL_SIZE_LIMIT=400000 CONFIG_DEBUG_UART_BASE=0xff690000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_DEBUG_UART=y @@ -17,9 +16,7 @@ CONFIG_CONSOLE_MUX=y CONFIG_DEFAULT_FDT_FILE="rk3288-tinker.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y -CONFIG_SPL_TEXT_BASE=0xff704000 -CONFIG_SPL_STACK_R=y -CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000 +CONFIG_SPL_TEXT_BASE=0 CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y @@ -37,7 +34,7 @@ CONFIG_CMD_REGULATOR=y CONFIG_SPL_PARTITION_UUIDS=y CONFIG_SPL_OF_CONTROL=y CONFIG_DEFAULT_DEVICE_TREE="rk3288-tinker" -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_ENV_IS_IN_MMC=y CONFIG_REGMAP=y CONFIG_SPL_REGMAP=y

The raw u-boot.bin for tinker board has been about 450KB without debug option, and 550KB with all debug on, and the default value is 200KB, which is not enough for run raw u-boot.bin.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: - add blank line back
Changes in v2: None
include/configs/tinker_rk3288.h | 1 + 1 file changed, 1 insertion(+)
diff --git a/include/configs/tinker_rk3288.h b/include/configs/tinker_rk3288.h index 5adae68c91..32057b3dbb 100644 --- a/include/configs/tinker_rk3288.h +++ b/include/configs/tinker_rk3288.h @@ -18,5 +18,6 @@ func(DHCP, dchp, na)
#define CONFIG_SYS_MMC_ENV_DEV 1 +#define CONFIG_SYS_MONITOR_LEN (600 * 1024)
#endif

All the config for TPL has been update, we can enable the TPL.
Signed-off-by: Kever Yang kever.yang@rock-chips.com ---
Changes in v5: None Changes in v4: None Changes in v2: None
arch/arm/mach-rockchip/rk3288/Kconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig index 541301dfb8..c5dcd061cf 100644 --- a/arch/arm/mach-rockchip/rk3288/Kconfig +++ b/arch/arm/mach-rockchip/rk3288/Kconfig @@ -118,6 +118,7 @@ config TARGET_ROCK2 config TARGET_TINKER_RK3288 bool "Tinker-RK3288" select BOARD_LATE_INIT + select TPL help Tinker is a RK3288-based development board with 2 USB ports, HDMI, micro-SD card, audio, Gigabit Ethernet. It also includes on-board
participants (1)
-
Kever Yang