[PATCH] configs: rockchip: Modernise Geekbox config

Modernise and move the Geekbox config to use SPL/TPL with upstream TF-A, enable MMC/USB/Eth to make the device more useful and work like other Rockchip devices. Update the readme to reflect the changes to the build process.
Signed-off-by: Peter Robinson pbrobinson@gmail.com ---
I've not moved this to upstream DT as yet because there's some further issues I need to debug but this moves this platform forward.
arch/arm/dts/rk3368-geekbox-u-boot.dtsi | 10 ++++ board/geekbuying/geekbox/README | 40 +++++++++++++- configs/geekbox_defconfig | 71 ++++++++++++++++++++++++- 3 files changed, 118 insertions(+), 3 deletions(-)
diff --git a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi index cfc8b9340a8..55d007f7ab8 100644 --- a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi +++ b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi @@ -26,6 +26,16 @@ bootph-all; };
+&dmc { + bootph-all; + + rockchip,memory-schedule = <DMC_MSCH_CBDR>; + rockchip,ddr-frequency = <800000000>; + rockchip,ddr-speed-bin = <DDR3_1600K>; + + status = "okay"; +}; + &grf { bootph-all; }; diff --git a/board/geekbuying/geekbox/README b/board/geekbuying/geekbox/README index de980f2f233..bd4d8cdd084 100644 --- a/board/geekbuying/geekbox/README +++ b/board/geekbuying/geekbox/README @@ -1 +1,39 @@ -see board/rockchip/sheep_rk3368/README +Here is the step-by-step to boot to U-Boot on the Geekbox + +Get the Source and build ATF +============================ + + > git clone https://github.com/TrustedFirmware-A/trusted-firmware-a.git + > cd arm-trusted-firmware + > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3368 bl31 + +Configure U-Boot +================ + + > cd ../u-boot + > export BL31=../arm-trusted-firmware/build/rk3368/release/bl31.bin + > make geekbox_defconfig + +Build the full U-Boot/ATF firmware stack +======================================== + + > make CROSS_COMPILE=aarch64-unknown-elf- + +Flash the image +=============== + +Copy the SPL to offset 32k and the FIT image containing the payloads +(U-Boot proper, ATF, devicetree) to offset 256k card. + +eMMC +---- + +rkdeveloptool allows to flash the on-board eMMC via the USB OTG interface with +help of the Rockchip loader binary. + + > git clone https://github.com/rockchip-linux/rkdeveloptool + > cd rkdeveloptool + > autoreconf -i && && ./configure && make + > git clone https://github.com/rockchip-linux/rkbin.git + > ./rkdeveloptool db rkbin/rk33/rk3368_loader_v2.00.256.bin + > ./rkdeveloptool wl 64 ../u-boot-rockchip.bin diff --git a/configs/geekbox_defconfig b/configs/geekbox_defconfig index 8f4be79831a..1b116fa8602 100644 --- a/configs/geekbox_defconfig +++ b/configs/geekbox_defconfig @@ -3,29 +3,96 @@ CONFIG_SKIP_LOWLEVEL_INIT=y CONFIG_COUNTER_FREQUENCY=24000000 CONFIG_ARCH_ROCKCHIP=y CONFIG_TEXT_BASE=0x00200000 -CONFIG_SYS_MALLOC_F_LEN=0x1000 CONFIG_NR_DRAM_BANKS=1 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox" +CONFIG_SPL_TEXT_BASE=0x00000000 CONFIG_ROCKCHIP_RK3368=y +CONFIG_TPL_LIBCOMMON_SUPPORT=y +CONFIG_TPL_LIBGENERIC_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC=y +CONFIG_SPL_STACK=0x188000 +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y +CONFIG_SPL_BSS_START_ADDR=0x400000 +CONFIG_SPL_BSS_MAX_SIZE=0x20000 +CONFIG_SPL_STACK_R=y +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000 +CONFIG_SPL=y CONFIG_TARGET_GEEKBOX=y CONFIG_DEBUG_UART_BASE=0xFF690000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_DEBUG_UART=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_SPL_LOAD_FIT=y CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-geekbox.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_SPL_MAX_SIZE=0x40000 +CONFIG_SPL_PAD_TO=0x7f8000 +CONFIG_SPL_BOOTROM_SUPPORT=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x200 +CONFIG_SPL_ATF=y +CONFIG_TPL=y +CONFIG_TPL_SYS_MALLOC_SIMPLE=y +CONFIG_TPL_DRIVERS_MISC=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_MMC=y +CONFIG_CMD_REGULATOR=y +CONFIG_CMD_USB=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_TPL_OF_CONTROL=y +CONFIG_OF_LIVE=y +CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent" +CONFIG_TPL_OF_PLATDATA=y +CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_TPL_DM=y CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y +CONFIG_TPL_REGMAP=y CONFIG_SYSCON=y -CONFIG_BOUNCE_BUFFER=y +CONFIG_SPL_SYSCON=y +CONFIG_TPL_SYSCON=y CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_TPL_CLK=y +CONFIG_ROCKCHIP_GPIO=y +CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y CONFIG_PINCTRL=y +CONFIG_PHY_REALTEK=y +CONFIG_DM_ETH_PHY=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_RGMII=y +CONFIG_GMAC_ROCKCHIP=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_RK8XX=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_REGULATOR_RK8XX=y CONFIG_RAM=y +CONFIG_SPL_RAM=y +CONFIG_TPL_RAM=y CONFIG_DEBUG_UART_SHIFT=2 CONFIG_DEBUG_UART_ANNOUNCE=y CONFIG_SYS_NS16550_MEM32=y +CONFIG_SYSINFO=y +CONFIG_SYSINFO_SMBIOS=y CONFIG_SYSRESET=y +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_GENERIC=y +CONFIG_USB_DWC2=y +CONFIG_USB_GADGET=y +CONFIG_USB_GADGET_DWC2_OTG=y +CONFIG_SPL_TINY_MEMSET=y +CONFIG_LZO=y CONFIG_ERRNO_STR=y

Hi Peter,
On 10/11/24 7:05 PM, Peter Robinson wrote:
Modernise and move the Geekbox config to use SPL/TPL with upstream TF-A, enable MMC/USB/Eth to make the device more useful and work like other Rockchip devices. Update the readme to reflect the changes to the build process.
Signed-off-by: Peter Robinson pbrobinson@gmail.com
I've not moved this to upstream DT as yet because there's some further issues I need to debug but this moves this platform forward.
arch/arm/dts/rk3368-geekbox-u-boot.dtsi | 10 ++++ board/geekbuying/geekbox/README | 40 +++++++++++++- configs/geekbox_defconfig | 71 ++++++++++++++++++++++++- 3 files changed, 118 insertions(+), 3 deletions(-)
diff --git a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi index cfc8b9340a8..55d007f7ab8 100644 --- a/arch/arm/dts/rk3368-geekbox-u-boot.dtsi +++ b/arch/arm/dts/rk3368-geekbox-u-boot.dtsi @@ -26,6 +26,16 @@ bootph-all; };
+&dmc {
- bootph-all;
- rockchip,memory-schedule = <DMC_MSCH_CBDR>;
- rockchip,ddr-frequency = <800000000>;
- rockchip,ddr-speed-bin = <DDR3_1600K>;
- status = "okay";
+};
- &grf { bootph-all; };
diff --git a/board/geekbuying/geekbox/README b/board/geekbuying/geekbox/README index de980f2f233..bd4d8cdd084 100644 --- a/board/geekbuying/geekbox/README +++ b/board/geekbuying/geekbox/README @@ -1 +1,39 @@ -see board/rockchip/sheep_rk3368/README +Here is the step-by-step to boot to U-Boot on the Geekbox
+Get the Source and build ATF +============================
git clone https://github.com/TrustedFirmware-A/trusted-firmware-a.git cd arm-trusted-firmware make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3368 bl31+Configure U-Boot +================
cd ../u-boot export BL31=../arm-trusted-firmware/build/rk3368/release/bl31.bin make geekbox_defconfig+Build the full U-Boot/ATF firmware stack +========================================
make CROSS_COMPILE=aarch64-unknown-elf-+Flash the image +===============
+Copy the SPL to offset 32k and the FIT image containing the payloads +(U-Boot proper, ATF, devicetree) to offset 256k card.
Missing a word here at the end of the sentence I believe?
+eMMC +----
+rkdeveloptool allows to flash the on-board eMMC via the USB OTG interface with +help of the Rockchip loader binary.
git clone https://github.com/rockchip-linux/rkdeveloptool cd rkdeveloptool autoreconf -i && && ./configure && make git clone https://github.com/rockchip-linux/rkbin.git ./rkdeveloptool db rkbin/rk33/rk3368_loader_v2.00.256.bin ./rkdeveloptool wl 64 ../u-boot-rockchip.bindiff --git a/configs/geekbox_defconfig b/configs/geekbox_defconfig index 8f4be79831a..1b116fa8602 100644 --- a/configs/geekbox_defconfig +++ b/configs/geekbox_defconfig @@ -3,29 +3,96 @@ CONFIG_SKIP_LOWLEVEL_INIT=y CONFIG_COUNTER_FREQUENCY=24000000 CONFIG_ARCH_ROCKCHIP=y CONFIG_TEXT_BASE=0x00200000 -CONFIG_SYS_MALLOC_F_LEN=0x1000 CONFIG_NR_DRAM_BANKS=1 CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x300000 CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox" +CONFIG_SPL_TEXT_BASE=0x00000000 CONFIG_ROCKCHIP_RK3368=y +CONFIG_TPL_LIBCOMMON_SUPPORT=y +CONFIG_TPL_LIBGENERIC_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC=y +CONFIG_SPL_STACK=0x188000 +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y +CONFIG_SPL_BSS_START_ADDR=0x400000 +CONFIG_SPL_BSS_MAX_SIZE=0x20000 +CONFIG_SPL_STACK_R=y +CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000 +CONFIG_SPL=y CONFIG_TARGET_GEEKBOX=y CONFIG_DEBUG_UART_BASE=0xFF690000 CONFIG_DEBUG_UART_CLOCK=24000000 CONFIG_SYS_LOAD_ADDR=0x800800 CONFIG_DEBUG_UART=y +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_SPL_LOAD_FIT=y CONFIG_DEFAULT_FDT_FILE="rockchip/rk3368-geekbox.dtb" # CONFIG_DISPLAY_CPUINFO is not set CONFIG_DISPLAY_BOARDINFO_LATE=y +CONFIG_SPL_MAX_SIZE=0x40000 +CONFIG_SPL_PAD_TO=0x7f8000 +CONFIG_SPL_BOOTROM_SUPPORT=y +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x200 +CONFIG_SPL_ATF=y +CONFIG_TPL=y +CONFIG_TPL_SYS_MALLOC_SIMPLE=y +CONFIG_TPL_DRIVERS_MISC=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_MMC=y +CONFIG_CMD_REGULATOR=y +CONFIG_CMD_USB=y +CONFIG_SPL_OF_CONTROL=y +CONFIG_TPL_OF_CONTROL=y +CONFIG_OF_LIVE=y +CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names interrupt-parent"
Mmmm... really removing pinctrl in SPL? Not sure this is wise? We usually remove clocks and interrupts specific nodes?
+CONFIG_TPL_OF_PLATDATA=y +CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_TPL_DM=y CONFIG_REGMAP=y +CONFIG_SPL_REGMAP=y +CONFIG_TPL_REGMAP=y CONFIG_SYSCON=y -CONFIG_BOUNCE_BUFFER=y +CONFIG_SPL_SYSCON=y +CONFIG_TPL_SYSCON=y CONFIG_CLK=y +CONFIG_SPL_CLK=y +CONFIG_TPL_CLK=y +CONFIG_ROCKCHIP_GPIO=y +CONFIG_SYS_I2C_ROCKCHIP=y +CONFIG_MMC_DW=y +CONFIG_MMC_DW_ROCKCHIP=y CONFIG_PINCTRL=y +CONFIG_PHY_REALTEK=y +CONFIG_DM_ETH_PHY=y +CONFIG_ETH_DESIGNWARE=y +CONFIG_RGMII=y +CONFIG_GMAC_ROCKCHIP=y +CONFIG_PINCTRL=y +CONFIG_SPL_PINCTRL=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_RK8XX=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_REGULATOR_RK8XX=y CONFIG_RAM=y +CONFIG_SPL_RAM=y
Not sure we need SPL_RAM if we have TPL_RAM?
BTW, if you're using upstream TF-A, you can also disable CONFIG_SPL_ATF_NO_PLATFORM_PARAM and let U-Boot pass the serial console to TF-A instead of relying on build time setting in TF-A :) (I've done this for RK3399 Puma already).
Cheers, Quentin
participants (2)
-
Peter Robinson
-
Quentin Schulz