[U-Boot] [PATCH 0/6] 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
Kever Yang (6): rockchip: rk3288: enable TPL configs to chip level rockchip: rk3288: add separate TPL STACK address 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.dts | 26 +++++++++++++++++++++++++- arch/arm/mach-rockchip/Kconfig | 18 ++++++++++++++++++ arch/arm/mach-rockchip/rk3288/Kconfig | 15 +-------------- configs/tinker-rk3288_defconfig | 13 +++++-------- include/configs/tinker_rk3288.h | 2 +- 5 files changed, 50 insertions(+), 24 deletions(-)

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 ---
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..ec7104bf9e 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 + 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 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

On Wed, Jun 26, 2019 at 3:21 PM Kever Yang kever.yang@rock-chips.com wrote:
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
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..ec7104bf9e 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
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 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
I remember, I have added r-b tag to same patch before from Heiko. what ever is planning to pick add my
Reviewed-by: Jagan Teki jagan@amarulasolutions.com

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 ---
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 ec7104bf9e..3712e8af8d 100644 --- a/arch/arm/mach-rockchip/Kconfig +++ b/arch/arm/mach-rockchip/Kconfig @@ -95,6 +95,7 @@ config ROCKCHIP_RK3288 select TPL_LIBCOMMON_SUPPORT select TPL_LIBGENERIC_SUPPORT select TPL_NEEDS_SEPARATE_TEXT_BASE if SPL + select TPL_NEEDS_SEPARATE_STACK if TPL select TPL_OF_CONTROL select TPL_OF_PLATDATA select 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

On Wed, Jun 26, 2019 at 3:23 PM Kever Yang kever.yang@rock-chips.com wrote:
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
Jagan Teki jagan@amarulasolutions.com

On Wed, Jun 26, 2019 at 4:00 PM Jagan Teki jagan@amarulasolutions.com wrote:
On Wed, Jun 26, 2019 at 3:23 PM Kever Yang kever.yang@rock-chips.com wrote:
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
Jagan Teki jagan@amarulasolutions.com
Reviewed-by: Jagan Teki jagan@amarulasolutions.com

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 ---
arch/arm/dts/rk3288-tinker.dts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/rk3288-tinker.dts b/arch/arm/dts/rk3288-tinker.dts index 3edd21cc2f..108853e3db 100644 --- a/arch/arm/dts/rk3288-tinker.dts +++ b/arch/arm/dts/rk3288-tinker.dts @@ -28,7 +28,7 @@
&pinctrl { - u-boot,dm-pre-reloc; + u-boot,dm-spl
usb { host_vbus_drv: host-vbus-drv { @@ -37,6 +37,30 @@ }; };
+&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 +}; + &pwm1 { status = "okay"; };

On Wed, Jun 26, 2019 at 3:23 PM Kever Yang kever.yang@rock-chips.com wrote:
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
arch/arm/dts/rk3288-tinker.dts | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/rk3288-tinker.dts b/arch/arm/dts/rk3288-tinker.dts index 3edd21cc2f..108853e3db 100644 --- a/arch/arm/dts/rk3288-tinker.dts +++ b/arch/arm/dts/rk3288-tinker.dts @@ -28,7 +28,7 @@
&pinctrl {
u-boot,dm-pre-reloc;
u-boot,dm-spl usb { host_vbus_drv: host-vbus-drv {
@@ -37,6 +37,30 @@ }; };
+&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
+};
Moving these to -u-boot.dtsi make easy for DTS sync later.

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 ---
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 ---
include/configs/tinker_rk3288.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/configs/tinker_rk3288.h b/include/configs/tinker_rk3288.h index 5adae68c91..9113f222d8 100644 --- a/include/configs/tinker_rk3288.h +++ b/include/configs/tinker_rk3288.h @@ -18,5 +18,5 @@ 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 ---
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 (2)
-
Jagan Teki
-
Kever Yang