Hi Jonas, On Sun, 30 Mar 2025 at 18:21, Jonas Karlman <jo...@kwiboo.se> wrote: > > Add a minimal generic RK3328 board that only have eMMC, SDMMC, SPI flash > and USB OTG enabled. This defconfig can be used to boot from eMMC, > SD-card or SPI flash on most RK3328 boards that follow reference board > design. > > Signed-off-by: Jonas Karlman <jo...@kwiboo.se>
Reviewed-by: Christopher Obbard <christopher.obb...@linaro.org> > --- > v2: Rebase on next after TPL_HAVE_INIT_STACK change > --- > arch/arm/dts/rk3328-generic-u-boot.dtsi | 39 +++++++++++ > arch/arm/dts/rk3328-generic.dts | 76 +++++++++++++++++++++ > arch/arm/mach-rockchip/Kconfig | 2 +- > board/rockchip/evb_rk3328/MAINTAINERS | 6 ++ > configs/generic-rk3328_defconfig | 90 +++++++++++++++++++++++++ > doc/board/rockchip/rockchip.rst | 1 + > 6 files changed, 213 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/dts/rk3328-generic-u-boot.dtsi > create mode 100644 arch/arm/dts/rk3328-generic.dts > create mode 100644 configs/generic-rk3328_defconfig > > diff --git a/arch/arm/dts/rk3328-generic-u-boot.dtsi > b/arch/arm/dts/rk3328-generic-u-boot.dtsi > new file mode 100644 > index 000000000000..af890e912dda > --- /dev/null > +++ b/arch/arm/dts/rk3328-generic-u-boot.dtsi > @@ -0,0 +1,39 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > + > +#include "rk3328-u-boot.dtsi" > + > +&gpio0 { > + /delete-property/ bootph-pre-ram; > +}; > + > +&pcfg_pull_down_4ma { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&spi0 { > + flash@0 { > + bootph-pre-ram; > + bootph-some-ram; > + }; > +}; > + > +&spi0m2_clk { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&spi0m2_cs0 { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&spi0m2_rx { > + bootph-pre-ram; > + bootph-some-ram; > +}; > + > +&spi0m2_tx { > + bootph-pre-ram; > + bootph-some-ram; > +}; > diff --git a/arch/arm/dts/rk3328-generic.dts b/arch/arm/dts/rk3328-generic.dts > new file mode 100644 > index 000000000000..af0da8457167 > --- /dev/null > +++ b/arch/arm/dts/rk3328-generic.dts > @@ -0,0 +1,76 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Minimal generic DT for RK3328 with eMMC, SD-card, SPI flash and USB OTG > enabled > + */ > + > +/dts-v1/; > +#include "rk3328.dtsi" > + > +/ { > + model = "Generic RK3328"; > + compatible = "rockchip,rk3328"; > + > + aliases { > + mmc0 = &emmc; > + mmc1 = &sdmmc; > + }; > + > + chosen { > + stdout-path = "serial2:1500000n8"; > + }; > +}; > + > +&emmc { > + bus-width = <8>; > + cap-mmc-highspeed; > + mmc-ddr-1_8v; > + mmc-hs200-1_8v; > + no-sd; > + no-sdio; > + non-removable; > + pinctrl-names = "default"; > + pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>; > + status = "okay"; > +}; > + > +&sdmmc0m1_pin { > + rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_down_4ma>; > +}; > + > +&sdmmc { > + bus-width = <4>; > + cap-sd-highspeed; > + disable-wp; > + no-mmc; > + no-sdio; > + pinctrl-names = "default"; > + pinctrl-0 = <&sdmmc0_clk &sdmmc0_cmd &sdmmc0_dectn &sdmmc0_bus4 > &sdmmc0m1_pin>; > + status = "okay"; > +}; > + > +&spi0 { > + status = "okay"; > + > + flash@0 { > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <25000000>; > + }; > +}; > + > +&u2phy { > + status = "okay"; > +}; > + > +&u2phy_otg { > + status = "okay"; > +}; > + > +&uart2 { > + status = "okay"; > +}; > + > +&usb20_otg { > + dr_mode = "peripheral"; > + status = "okay"; > +}; > diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig > index b61d424ba638..33a9f7a4dd4b 100644 > --- a/arch/arm/mach-rockchip/Kconfig > +++ b/arch/arm/mach-rockchip/Kconfig > @@ -201,7 +201,6 @@ config ROCKCHIP_RK3328 > select SUPPORT_SPL > select SPL > select SUPPORT_TPL > - select TPL > select TPL_HAVE_INIT_STACK if TPL > imply ARMV8_CRYPTO > imply ARMV8_SET_SMPEN > @@ -218,6 +217,7 @@ config ROCKCHIP_RK3328 > imply SPL_ROCKCHIP_COMMON_BOARD > imply SPL_SEPARATE_BSS > imply SPL_SERIAL > + imply TPL if !ROCKCHIP_EXTERNAL_TPL > imply TPL_ROCKCHIP_COMMON_BOARD > imply TPL_SERIAL > help > diff --git a/board/rockchip/evb_rk3328/MAINTAINERS > b/board/rockchip/evb_rk3328/MAINTAINERS > index 5f81be55b8e0..8c9b42fe2bbf 100644 > --- a/board/rockchip/evb_rk3328/MAINTAINERS > +++ b/board/rockchip/evb_rk3328/MAINTAINERS > @@ -7,6 +7,12 @@ F: configs/evb-rk3328_defconfig > F: arch/arm/dts/rk3328-evb.dts > F: arch/arm/dts/rk3328-evb-u-boot.dtsi > > +GENERIC-RK3328 > +M: Jonas Karlman <jo...@kwiboo.se> > +S: Maintained > +F: configs/generic-rk3328_defconfig > +F: arch/arm/dts/rk3328-generic* > + > NANOPI-R2C-RK3328 > M: Tianling Shen <cns...@gmail.com> > S: Maintained > diff --git a/configs/generic-rk3328_defconfig > b/configs/generic-rk3328_defconfig > new file mode 100644 > index 000000000000..8d34a293fd42 > --- /dev/null > +++ b/configs/generic-rk3328_defconfig > @@ -0,0 +1,90 @@ > +CONFIG_ARM=y > +CONFIG_SKIP_LOWLEVEL_INIT=y > +CONFIG_COUNTER_FREQUENCY=24000000 > +CONFIG_ARCH_ROCKCHIP=y > +CONFIG_NR_DRAM_BANKS=1 > +CONFIG_SF_DEFAULT_SPEED=25000000 > +CONFIG_DEFAULT_DEVICE_TREE="rk3328-generic" > +CONFIG_DM_RESET=y > +CONFIG_ROCKCHIP_RK3328=y > +CONFIG_ROCKCHIP_EXTERNAL_TPL=y > +CONFIG_ROCKCHIP_SPI_IMAGE=y > +CONFIG_SYS_LOAD_ADDR=0x800800 > +CONFIG_DEBUG_UART_BASE=0xFF130000 > +CONFIG_DEBUG_UART_CLOCK=24000000 > +CONFIG_SPL_SPI_FLASH_SUPPORT=y > +CONFIG_SPL_SPI=y > +CONFIG_DEBUG_UART=y > +CONFIG_FIT=y > +CONFIG_FIT_VERBOSE=y > +CONFIG_SPL_FIT_SIGNATURE=y > +CONFIG_SPL_LOAD_FIT=y > +# CONFIG_BOOTMETH_VBE is not set > +CONFIG_LEGACY_IMAGE_FORMAT=y > +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3328-generic.dtb" > +# CONFIG_DISPLAY_CPUINFO is not set > +CONFIG_SPL_MAX_SIZE=0x40000 > +CONFIG_SPL_PAD_TO=0x7f8000 > +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set > +CONFIG_SPL_SPI_LOAD=y > +CONFIG_SYS_SPI_U_BOOT_OFFS=0x60000 > +CONFIG_SPL_ATF=y > +CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y > +CONFIG_CMD_MEMINFO=y > +CONFIG_CMD_MEMINFO_MAP=y > +CONFIG_CMD_GPIO=y > +CONFIG_CMD_GPT=y > +CONFIG_CMD_MISC=y > +CONFIG_CMD_MMC=y > +CONFIG_CMD_ROCKUSB=y > +CONFIG_CMD_USB_MASS_STORAGE=y > +# CONFIG_CMD_SETEXPR is not set > +CONFIG_CMD_RNG=y > +# CONFIG_SPL_DOS_PARTITION is not set > +CONFIG_SPL_OF_CONTROL=y > +# CONFIG_OF_UPSTREAM is not set > +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_NO_NET=y > +CONFIG_SPL_DM_SEQ_ALIAS=y > +CONFIG_REGMAP=y > +CONFIG_SPL_REGMAP=y > +CONFIG_SYSCON=y > +CONFIG_SPL_SYSCON=y > +# CONFIG_ADC is not set > +CONFIG_CLK=y > +CONFIG_SPL_CLK=y > +# CONFIG_USB_FUNCTION_FASTBOOT is not set > +CONFIG_ROCKCHIP_GPIO=y > +# CONFIG_ROCKCHIP_IODOMAIN is not set > +CONFIG_SUPPORT_EMMC_RPMB=y > +CONFIG_MMC_DW=y > +CONFIG_MMC_DW_ROCKCHIP=y > +CONFIG_SPI_FLASH_SFDP_SUPPORT=y > +CONFIG_SPI_FLASH_GIGADEVICE=y > +CONFIG_SPI_FLASH_MACRONIX=y > +CONFIG_SPI_FLASH_SILICONKAISER=y > +CONFIG_SPI_FLASH_WINBOND=y > +CONFIG_SPI_FLASH_XMC=y > +CONFIG_SPI_FLASH_XTX=y > +CONFIG_SPI_FLASH_ZBIT=y > +CONFIG_PHY_ROCKCHIP_INNO_USB2=y > +CONFIG_PINCTRL=y > +CONFIG_SPL_PINCTRL=y > +CONFIG_RAM=y > +CONFIG_SPL_RAM=y > +CONFIG_DM_RNG=y > +CONFIG_RNG_ROCKCHIP=y > +CONFIG_BAUDRATE=1500000 > +CONFIG_DEBUG_UART_SHIFT=2 > +CONFIG_SYS_NS16550_MEM32=y > +CONFIG_ROCKCHIP_SPI=y > +CONFIG_SYSRESET=y > +CONFIG_SYSRESET_PSCI=y > +CONFIG_USB=y > +CONFIG_DM_USB_GADGET=y > +CONFIG_USB_GADGET=y > +CONFIG_USB_GADGET_DWC2_OTG=y > +CONFIG_USB_GADGET_DOWNLOAD=y > +CONFIG_USB_FUNCTION_ROCKUSB=y > +CONFIG_ERRNO_STR=y > diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst > index 1407080f1f4f..6b48187ba79d 100644 > --- a/doc/board/rockchip/rockchip.rst > +++ b/doc/board/rockchip/rockchip.rst > @@ -66,6 +66,7 @@ List of mainline supported Rockchip boards: > - FriendlyElec NanoPi R2C Plus (nanopi-r2c-plus-rk3328) > - FriendlyElec NanoPi R2S (nanopi-r2s-rk3328) > - FriendlyElec NanoPi R2S Plus (nanopi-r2s-plus-rk3328) > + - Generic RK3328 (generic-rk3328) > - Pine64 Rock64 (rock64-rk3328) > - Radxa ROCK Pi E (rock-pi-e-rk3328) > - Xunlong Orange Pi R1 Plus (orangepi-r1-plus-rk3328) > -- > 2.49.0 >