Hi Jonas,
On 1/8/26 3:35 PM, Jonas Karlman wrote:
The NanoPi R76S (as "R76S") is an open-sourced mini IoT gateway
device with two 2.5G, designed and developed by FriendlyElec.
Features tested on a NanoPi R76S 2411:
- SD-card boot
- eMMC boot
- LEDs and button
- PCIe/Ethernet
- USB host
Signed-off-by: Jonas Karlman <[email protected]>
---
arch/arm/dts/rk3576-nanopi-r76s-u-boot.dtsi | 3 ++
arch/arm/mach-rockchip/rk3576/MAINTAINERS | 6 +++
configs/nanopi-r76s-rk3576_defconfig | 60 +++++++++++++++++++++
doc/board/rockchip/rockchip.rst | 1 +
4 files changed, 70 insertions(+)
create mode 100644 arch/arm/dts/rk3576-nanopi-r76s-u-boot.dtsi
create mode 100644 configs/nanopi-r76s-rk3576_defconfig
diff --git a/arch/arm/dts/rk3576-nanopi-r76s-u-boot.dtsi
b/arch/arm/dts/rk3576-nanopi-r76s-u-boot.dtsi
new file mode 100644
index 000000000000..632fabb6af56
--- /dev/null
+++ b/arch/arm/dts/rk3576-nanopi-r76s-u-boot.dtsi
@@ -0,0 +1,3 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+#include "rk3576-u-boot.dtsi"
I don't think that should be necessary?
U-Boot should fallback to rj3576-u-boot.dtsi if there's no
rk3576-nanopi-r76s-u-boot.dtsi, because SYS_SOC is rk3576 in
arch/arm/mach-rockchip/rk3576/Kconfig and the wildcard list in
u_boot_dtsi_options in scripts/Makefile.lib.
More comments below but they are definitely not blocker for merging this.
diff --git a/arch/arm/mach-rockchip/rk3576/MAINTAINERS
b/arch/arm/mach-rockchip/rk3576/MAINTAINERS
index 393edd3984ce..79cf9e97f70b 100644
--- a/arch/arm/mach-rockchip/rk3576/MAINTAINERS
+++ b/arch/arm/mach-rockchip/rk3576/MAINTAINERS
@@ -10,6 +10,12 @@ S: Maintained
F: arch/arm/dts/rk3576-nanopi-m5*
F: configs/nanopi-m5-rk3576_defconfig
+NANOPI-R76S-RK3576
+M: Jonas Karlman <[email protected]>
+S: Maintained
+F: arch/arm/dts/rk3576-nanopi-r76s*
+F: configs/nanopi-r76s-rk3576_defconfig
+
OMNI3576-RK3576
M: Jonas Karlman <[email protected]>
S: Maintained
diff --git a/configs/nanopi-r76s-rk3576_defconfig
b/configs/nanopi-r76s-rk3576_defconfig
new file mode 100644
index 000000000000..af149dc4ba56
--- /dev/null
+++ b/configs/nanopi-r76s-rk3576_defconfig
@@ -0,0 +1,60 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_SYS_HAS_NONCACHED_MEMORY=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3576-nanopi-r76s"
+CONFIG_ROCKCHIP_RK3576=y
+CONFIG_SYS_LOAD_ADDR=0x40c00800
Should we think about adding a default value for various Rockchip SoCs
in root Kconfig for SYS_LOAD_ADDR?
+CONFIG_DEBUG_UART_BASE=0x2AD40000
+CONFIG_DEBUG_UART_CLOCK=24000000
Same here. I'm assuming there's a reference design most people are
basing their HW on, so having a default DEBUG_UART_BASE common for the
SoC makes sense (and we could even then have a comment specifying which
UART controller that is). As for the clock speed, I'm wondering if we
ever had something different than that. And also wondering if it's
related (should be in sync?) with &uart0/clock-frequency?
+CONFIG_PCI=y
+CONFIG_DEBUG_UART=y
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3576-nanopi-r76s.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
Why not :)?
+CONFIG_SPL_MAX_SIZE=0x40000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+CONFIG_CMD_MEMINFO=y
+CONFIG_CMD_MEMINFO_MAP=y
+CONFIG_CMD_ADC=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MISC=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_RNG=y
+CONFIG_CMD_REGULATOR=y
+# CONFIG_SPL_DOS_PARTITION is not set
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks
assigned-clock-rates assigned-clock-parents"
+CONFIG_BUTTON=y
+CONFIG_BUTTON_GPIO=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_RTL8169=y
+CONFIG_PCIE_DW_ROCKCHIP=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y
+CONFIG_PHY_ROCKCHIP_USBDP=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_RK8XX=y
+CONFIG_REGULATOR_RK8XX=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
The two above also are always the same on Rockchip no?
By default, the expected baudrate is probably 1500000 on Rockchip,
wondering if we shouldn't make that the default either?
+CONFIG_SYSRESET_PSCI=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GENERIC=y
+CONFIG_ERRNO_STR=y
I'm wondering whether we should think about setting WERROR on by default
for new boards? What do you think?
Cheers,
Quentin