[PATCH] board: rockchip: add Anbernic RG-DS
Chris Morgan
macromorgan at hotmail.com
Mon Apr 27 19:48:52 CEST 2026
On Mon, Apr 27, 2026 at 01:29:41PM +0200, Quentin Schulz wrote:
> Hi Chris,
>
> On 4/23/26 8:35 PM, Chris Morgan wrote:
> > From: Chris Morgan <macromorgan at hotmail.com>
> >
> > Add support for the Anbernic RG-DS dual-screen handheld gaming device.
> >
> > Link: https://anbernic.com/products/rgds
> > Signed-off-by: Chris Morgan <macromorgan at hotmail.com>
> > ---
> > .../arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi | 41 ++++++++++
> > arch/arm/mach-rockchip/rk3568/Kconfig | 7 ++
> > board/anbernic/rg-ds/Kconfig | 12 +++
> > board/anbernic/rg-ds/MAINTAINERS | 7 ++
> > configs/anbernic-rg-ds-rk3568_defconfig | 76 +++++++++++++++++++
> > include/configs/anbernic-rg-ds-rk3568.h | 12 +++
> > 6 files changed, 155 insertions(+)
> > create mode 100644 arch/arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi
> > create mode 100644 board/anbernic/rg-ds/Kconfig
> > create mode 100644 board/anbernic/rg-ds/MAINTAINERS
> > create mode 100644 configs/anbernic-rg-ds-rk3568_defconfig
> > create mode 100644 include/configs/anbernic-rg-ds-rk3568.h
> >
>
> Please add an entry to doc/board/rockchip/rockchip.rst.
Will do.
>
> > diff --git a/arch/arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi b/arch/arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi
> > new file mode 100644
> > index 00000000000..337e50f2e54
> > --- /dev/null
> > +++ b/arch/arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi
> > @@ -0,0 +1,41 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +
> > +#include "rk356x-u-boot.dtsi"
> > +
> > +&gpio0 {
> > + bootph-pre-ram;
> > +};
> > +
> > +&i2c0 {
> > + bootph-pre-ram;
> > +};
> > +
> > +&i2c0_xfer {
> > + bootph-pre-ram;
> > +};
> > +
> > +&i2s1m0_mclk {
> > + bootph-pre-ram;
> > +};
> > +
> > +&pmic_int_l {
> > + bootph-pre-ram;
> > +};
> > +
> > +&rk817 {
> > + regulators {
> > + bootph-pre-ram;
> > + };
> > +};
> > +
> > +&sdhci {
> > + cap-mmc-highspeed;
> > +};
>
> Why is this not upstreamed to the Linux kernel DTS?
>
I think early in testing I copied this from another board, but it turns
out after testing this isn't needed so I'll remove it.
> > +
> > +&sdmmc_pwren_l {
> > + bootph-pre-ram;
> > +};
> > +
> > +&vcc3v3_sd {
> > + bootph-pre-ram;
> > +};
>
> Don't you need vccio_sd as well since it's the vin-supply of vcc3v3_sd? (and
> also used as vqmmc-supply for sdmmc0
I will add it. I believe the regulator is programmed by OTP to always
be on during boot, but it couldn't hurt to be explicit.
>
> > diff --git a/arch/arm/mach-rockchip/rk3568/Kconfig b/arch/arm/mach-rockchip/rk3568/Kconfig
> > index 2730220a18e..8fbd764ab54 100644
> > --- a/arch/arm/mach-rockchip/rk3568/Kconfig
> > +++ b/arch/arm/mach-rockchip/rk3568/Kconfig
> > @@ -8,6 +8,12 @@ config TARGET_EVB_RK3568
> > help
> > RK3568 EVB is a evaluation board for Rockchp RK3568.
> > +config TARGET_ANBERNIC_RG_DS_RK3568
> > + bool "Anbernic RG DS"
> > + help
> > + Anbernic RG DS gaming device with Rockchip RK3568 and dual
> > + displays.
> > +
> > config TARGET_ANBERNIC_RGXX3_RK3566
> > bool "Anbernic RGXX3"
> > help
> > @@ -71,6 +77,7 @@ config SYS_SOC
> > default "rk3568"
> > source "board/rockchip/evb_rk3568/Kconfig"
> > +source "board/anbernic/rg-ds/Kconfig"
> > source "board/anbernic/rgxx3_rk3566/Kconfig"
> > source "board/hardkernel/odroid_m1/Kconfig"
> > source "board/hardkernel/odroid_m1s/Kconfig"
> > diff --git a/board/anbernic/rg-ds/Kconfig b/board/anbernic/rg-ds/Kconfig
> > new file mode 100644
> > index 00000000000..cb93c249cf4
> > --- /dev/null
> > +++ b/board/anbernic/rg-ds/Kconfig
> > @@ -0,0 +1,12 @@
> > +if TARGET_RG_DS_RK3568
> > +
> > +config SYS_BOARD
> > + default "rg-ds-rk3568"
> > +
> > +config SYS_VENDOR
> > + default "anbernic"
> > +
> > +config SYS_CONFIG_NAME
> > + default "rg-ds-rk3568"
> > +
> > +endif
> > diff --git a/board/anbernic/rg-ds/MAINTAINERS b/board/anbernic/rg-ds/MAINTAINERS
> > new file mode 100644
> > index 00000000000..79ddb663ab7
> > --- /dev/null
> > +++ b/board/anbernic/rg-ds/MAINTAINERS
> > @@ -0,0 +1,7 @@
> > +ANBERNIC-RG-DS-RK3568
> > +M: Chris Morgan <macromorgan at hotmail.com>
> > +S: Maintained
> > +F: arch/arm/dts/rk3568-anbernic-rg-ds-u-boot.dtsi
> > +F: board/anbernic/rg-ds
>
> Should we have rk3568 mentioned here maybe? Not a blocker though.
I'll add it.
>
> > +F: configs/anbernic-rg-ds_defconfig
> > +F: include/configs/anbernic-rg-ds.h
>
> Both defconfig and include files do not match here.
>
Sorry, will fix.
> > diff --git a/configs/anbernic-rg-ds-rk3568_defconfig b/configs/anbernic-rg-ds-rk3568_defconfig
> > new file mode 100644
> > index 00000000000..c16a208a117
> > --- /dev/null
> > +++ b/configs/anbernic-rg-ds-rk3568_defconfig
> > @@ -0,0 +1,76 @@
> > +CONFIG_ARM=y
> > +CONFIG_SKIP_LOWLEVEL_INIT=y
> > +CONFIG_COUNTER_FREQUENCY=24000000
> > +CONFIG_ARCH_ROCKCHIP=y
> > +CONFIG_SPL_GPIO=y
> > +CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3568-anbernic-rg-ds"
> > +CONFIG_ROCKCHIP_RK3568=y
> > +CONFIG_ROCKCHIP_RK8XX_DISABLE_BOOT_ON_POWERON=y
> > +CONFIG_SPL_SERIAL=y
> > +CONFIG_TARGET_ANBERNIC_RG_DS_RK3568=y
> > +CONFIG_SYS_LOAD_ADDR=0xc00800
> > +CONFIG_DEBUG_UART_BASE=0xFE660000
> > +CONFIG_DEBUG_UART_CLOCK=24000000
> > +CONFIG_DEBUG_UART=y
> > +# CONFIG_EFI_LOADER is not set
>
> Any reason for explicitly disabling EFI support? (aside from other anbernic
> devices disabling it as well?) I believe some distros depend on that for
> booting up?
I don't use it, but I shouldn't explicitly disable it. I'll remove that.
>
> > +CONFIG_FIT=y
> > +CONFIG_FIT_VERBOSE=y
> > +CONFIG_SPL_FIT_SIGNATURE=y
> > +CONFIG_SPL_LOAD_FIT=y
> > +CONFIG_LEGACY_IMAGE_FORMAT=y
>
> Is this really used? I'm thinking we should probably stop using this for new
> boards if possible?
I don't use it, I just copied it from my other Rockchip boards. I'll remove it.
>
> > +CONFIG_OF_STDOUT_VIA_ALIAS=y
> > +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-anbernic-rg-ds.dtb"
> > +CONFIG_DISABLE_CONSOLE=y
>
> Why no console? This will make debugging harder no?
I belive this was a vestige from something I copied, so I'll remove that.
>
> > +# CONFIG_CONSOLE_MUX is not set
> > +CONFIG_BOARD_TYPES=y
> > +# CONFIG_DISPLAY_CPUINFO is not set
> > +CONFIG_DISPLAY_BOARDINFO_LATE=y
> > +CONFIG_BOARD_RNG_SEED=y
> > +CONFIG_SPL_MAX_SIZE=0x40000
> > +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> > +CONFIG_SPL_POWER=y
> > +CONFIG_SPL_ATF=y
> > +CONFIG_CMD_PWM=y
> > +CONFIG_CMD_GPT=y
> > +CONFIG_CMD_MMC=y
> > +# CONFIG_CMD_SETEXPR is not set
> > +# CONFIG_CMD_CLS is not set
> > +# CONFIG_SPL_DOS_PARTITION is not set
> > +CONFIG_SPL_OF_CONTROL=y
> > +CONFIG_OF_LIVE=y
> > +CONFIG_OF_LIST="rockchip/rk3568-anbernic-rg-ds"
> > +CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
>
> Why remove clock-names?
For the RK817 PMIC it has clocks but they are only needed for the audio codec.
Based on observation when probing the PMIC if the clocks are defined but cannot
be probed then probing the PMIC also fails. Since the clocks are really only
used for the audio codec, we don't need them here.
>
> Cheers,
> Quentin
I'll make all the changes you suggest, except for the clock-names one which
has an explicit reason. Thank you for your review.
Chris
More information about the U-Boot
mailing list