From e21dcb1dc8ee74f27358d9783fa3679db639370d Mon Sep 17 00:00:00 2001 From: Antonio Flores Date: Mon, 12 Aug 2024 22:15:28 -0400 Subject: [PATCH] uboot-rockchip: add FriendlyElec NanoPi R6C 1- The NanoPi R6C is a SBC by FriendlyElec based on the Rockchip RK3588s. It comes with 4GB or 8GB of RAM, a microSD card slot, optional 32GB eMMC storage, one M.2 M-Key connector, one RTL8211F 1GbE and one RTL8125 2.5GbE Ethernet port, one USB 2.0 Type-A and one USB 3.0 Type-A port, a HDMI port, a 30-pin GPIO header as well as multiple buttons and LEDs. 2- Renamed 000-backport-upstream-dts-sync.patch -> 000-v2024.10-rc1-backport-upstream-dts-sync.patch to add the version when was applied upstream Signed-off-by: Antonio Flores Link: https://github.com/openwrt/openwrt/pull/16275 Signed-off-by: Hauke Mehrtens --- package/boot/uboot-rockchip/Makefile | 8 + ...4.10-rc1-backport-upstream-dts-sync.patch} | 29 +++ ...rockchip-Add-FriendlyElec-NanoPi-R6C.patch | 213 ++++++++++++++++++ 3 files changed, 250 insertions(+) rename package/boot/uboot-rockchip/patches/{000-backport-upstream-dts-sync.patch => 000-v2024.10-rc1-backport-upstream-dts-sync.patch} (98%) create mode 100644 package/boot/uboot-rockchip/patches/107-v2024.10-rc1-board-rockchip-Add-FriendlyElec-NanoPi-R6C.patch diff --git a/package/boot/uboot-rockchip/Makefile b/package/boot/uboot-rockchip/Makefile index 7718c8985b4..f6399d374d6 100644 --- a/package/boot/uboot-rockchip/Makefile +++ b/package/boot/uboot-rockchip/Makefile @@ -262,6 +262,13 @@ endef # RK3588S boards +define U-Boot/nanopi-r6c-rk3588s + $(U-Boot/rk3588/Default) + NAME:=NanoPi R6C + BUILD_DEVICES:= \ + friendlyarm_nanopi-r6c +endef + define U-Boot/nanopi-r6s-rk3588s $(U-Boot/rk3588/Default) NAME:=NanoPi R6S @@ -302,6 +309,7 @@ UBOOT_TARGETS := \ rock-3b-rk3568 \ nanopc-t6-rk3588 \ rock5b-rk3588 \ + nanopi-r6c-rk3588s \ nanopi-r6s-rk3588s \ rock5a-rk3588s diff --git a/package/boot/uboot-rockchip/patches/000-backport-upstream-dts-sync.patch b/package/boot/uboot-rockchip/patches/000-v2024.10-rc1-backport-upstream-dts-sync.patch similarity index 98% rename from package/boot/uboot-rockchip/patches/000-backport-upstream-dts-sync.patch rename to package/boot/uboot-rockchip/patches/000-v2024.10-rc1-backport-upstream-dts-sync.patch index bd639a683d8..4c018ea7005 100644 --- a/package/boot/uboot-rockchip/patches/000-backport-upstream-dts-sync.patch +++ b/package/boot/uboot-rockchip/patches/000-v2024.10-rc1-backport-upstream-dts-sync.patch @@ -1,3 +1,32 @@ +From 6bb92fcf7d2fea2314d616e5e2391a8bf2b0fdfa Mon Sep 17 00:00:00 2001 +From: Tom Rini +Date: Mon, 20 May 2024 09:54:58 -0600 +Subject: [PATCH] Squashed 'dts/upstream/' changes from + b35b9bd1d4ee..7e08733c96c8 +--- + .../src/arm64/rockchip/rk3588s-nanopi-r6c.dts | 14 + + .../src/arm64/rockchip/rk3588s-nanopi-r6s.dts | 764 ++++++++++++++++++ + 2 files changed, 778 insertions(+) + create mode 100644 dts/upstream/src/arm64/rockchip/rk3588s-nanopi-r6c.dts + create mode 100644 dts/upstream/src/arm64/rockchip/rk3588s-nanopi-r6s.dts + +--- /dev/null ++++ b/dts/upstream/src/arm64/rockchip/rk3588s-nanopi-r6c.dts +@@ -0,0 +1,14 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "rk3588s-nanopi-r6s.dts" ++ ++/ { ++ model = "FriendlyElec NanoPi R6C"; ++ compatible = "friendlyarm,nanopi-r6c", "rockchip,rk3588s"; ++}; ++ ++&lan2_led { ++ label = "user_led"; ++}; --- /dev/null +++ b/dts/upstream/src/arm64/rockchip/rk3588s-nanopi-r6s.dts @@ -0,0 +1,764 @@ diff --git a/package/boot/uboot-rockchip/patches/107-v2024.10-rc1-board-rockchip-Add-FriendlyElec-NanoPi-R6C.patch b/package/boot/uboot-rockchip/patches/107-v2024.10-rc1-board-rockchip-Add-FriendlyElec-NanoPi-R6C.patch new file mode 100644 index 00000000000..ba00a5c9dee --- /dev/null +++ b/package/boot/uboot-rockchip/patches/107-v2024.10-rc1-board-rockchip-Add-FriendlyElec-NanoPi-R6C.patch @@ -0,0 +1,213 @@ +From f59d40aa5598063396164b3248f0f8ed6591e3db Mon Sep 17 00:00:00 2001 +From: Sebastian Kropatsch +Date: Thu, 11 Jul 2024 12:15:17 +0200 +Subject: [PATCH] board: rockchip: Add FriendlyElec NanoPi R6C + +The NanoPi R6C is a SBC by FriendlyElec based on the Rockchip RK3588s. +It comes with 4GB or 8GB of RAM, a microSD card slot, optional 32GB eMMC +storage, one M.2 M-Key connector, one RTL8211F 1GbE and one RTL8125 +2.5GbE Ethernet port, one USB 2.0 Type-A and one USB 3.0 Type-A port, a +HDMI port, a 30-pin GPIO header as well as multiple buttons and LEDs. + +Add initial support for this board using the upstream devicetree sources. + +Tested in U-Boot proper: +- Booting from eMMC works +- 1GbE Ethernet works using the eth_eqos driver (tested by ping) +- 2.5GbE Ethernet works using the eth_rtl8169 driver (tested by ping), + but the status LEDs on this specific port currently aren't working +- NVMe SSD in M.2 socket does get recognized (tested with `nvme scan` + followed by `nvme details`) + +Kernel commit: +d5f1d7437451 ("arm64: dts: rockchip: Add support for NanoPi R6C") + +Reviewed-by: Quentin Schulz +Reviewed-by: Kever Yang +Signed-off-by: Sebastian Kropatsch +--- + arch/arm/dts/rk3588s-nanopi-r6c-u-boot.dtsi | 3 + + arch/arm/mach-rockchip/rk3588/Kconfig | 13 +++ + board/friendlyelec/nanopi-r6c-rk3588s/Kconfig | 12 +++ + .../nanopi-r6c-rk3588s/MAINTAINERS | 7 ++ + configs/nanopi-r6c-rk3588s_defconfig | 83 +++++++++++++++++++ + doc/board/rockchip/rockchip.rst | 1 + + include/configs/nanopi-r6c-rk3588s.h | 12 +++ + 7 files changed, 131 insertions(+) + create mode 100644 arch/arm/dts/rk3588s-nanopi-r6c-u-boot.dtsi + create mode 100644 board/friendlyelec/nanopi-r6c-rk3588s/Kconfig + create mode 100644 board/friendlyelec/nanopi-r6c-rk3588s/MAINTAINERS + create mode 100644 configs/nanopi-r6c-rk3588s_defconfig + create mode 100644 include/configs/nanopi-r6c-rk3588s.h + +--- /dev/null ++++ b/arch/arm/dts/rk3588s-nanopi-r6c-u-boot.dtsi +@@ -0,0 +1,3 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++#include "rk3588s-u-boot.dtsi" +--- a/arch/arm/mach-rockchip/rk3588/Kconfig ++++ b/arch/arm/mach-rockchip/rk3588/Kconfig +@@ -90,6 +90,18 @@ config TARGET_NANOPI_R6S_RK3588S + 12-pin GPIO FPC connector, a fan connector, IR receiver as well + as some buttons and LEDs. + ++config TARGET_NANOPI_R6C_RK3588S ++ bool "FriendlyElec NanoPi R6C" ++ select BOARD_LATE_INIT ++ help ++ The NanoPi R6C is a SBC by FriendlyElec based on the Rockchip ++ RK3588s. ++ It comes with 4GB or 8GB of RAM, a microSD card slot, optional 32GB ++ eMMC storage, one M.2 M-Key connector, one RTL8211F 1GbE and one ++ RTL8125 2.5GbE Ethernet port, one USB 2.0 Type-A and one USB 3.0 ++ Type-A port, a HDMI port, a 30-pin GPIO header as well as some ++ buttons and LEDs. ++ + config TARGET_NOVA_RK3588 + bool "Indiedroid Nova RK3588" + select BOARD_LATE_INIT +@@ -245,6 +257,7 @@ config TEXT_BASE + source "board/edgeble/neural-compute-module-6/Kconfig" + source "board/friendlyelec/nanopc-t6-rk3588/Kconfig" + source "board/friendlyelec/nanopi-r6s-rk3588s/Kconfig" ++source "board/friendlyelec/nanopi-r6c-rk3588s/Kconfig" + source "board/indiedroid/nova/Kconfig" + source "board/pine64/quartzpro64-rk3588/Kconfig" + source "board/turing/turing-rk1-rk3588/Kconfig" +--- /dev/null ++++ b/board/friendlyelec/nanopi-r6c-rk3588s/Kconfig +@@ -0,0 +1,12 @@ ++if TARGET_NANOPI_R6C_RK3588S ++ ++config SYS_BOARD ++ default "nanopi-r6c-rk3588s" ++ ++config SYS_VENDOR ++ default "friendlyelec" ++ ++config SYS_CONFIG_NAME ++ default "nanopi-r6c-rk3588s" ++ ++endif +--- /dev/null ++++ b/board/friendlyelec/nanopi-r6c-rk3588s/MAINTAINERS +@@ -0,0 +1,7 @@ ++NANOPI-R6C ++M: Sebastian Kropatsch ++S: Maintained ++F: arch/arm/dts/rk3588s-nanopi-r6c-u-boot.dtsi ++F: board/friendlyelec/nanopi-r6c-rk3588s ++F: configs/nanopi-r6c-rk3588s_defconfig ++F: include/configs/nanopi-r6c-rk3588s.h +--- /dev/null ++++ b/configs/nanopi-r6c-rk3588s_defconfig +@@ -0,0 +1,83 @@ ++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/rk3588s-nanopi-r6c" ++CONFIG_ROCKCHIP_RK3588=y ++CONFIG_SPL_SERIAL=y ++CONFIG_TARGET_NANOPI_R6C_RK3588S=y ++CONFIG_DEBUG_UART_BASE=0xFEB50000 ++CONFIG_DEBUG_UART_CLOCK=24000000 ++CONFIG_SYS_LOAD_ADDR=0xc00800 ++CONFIG_PCI=y ++CONFIG_DEBUG_UART=y ++CONFIG_FIT=y ++CONFIG_FIT_VERBOSE=y ++CONFIG_SPL_FIT_SIGNATURE=y ++CONFIG_SPL_LOAD_FIT=y ++CONFIG_LEGACY_IMAGE_FORMAT=y ++CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588s-nanopi-r6c.dtb" ++# CONFIG_DISPLAY_CPUINFO is not set ++CONFIG_DISPLAY_BOARDINFO_LATE=y ++CONFIG_SPL_MAX_SIZE=0x40000 ++CONFIG_SPL_PAD_TO=0x7f8000 ++# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set ++CONFIG_SPL_ATF=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_PWM=y ++CONFIG_CMD_GPT=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_PCI=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_ROCKUSB=y ++# CONFIG_CMD_SETEXPR is not set ++CONFIG_CMD_REGULATOR=y ++# CONFIG_SPL_DOS_PARTITION is not set ++CONFIG_SPL_OF_CONTROL=y ++CONFIG_OF_LIVE=y ++CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents" ++CONFIG_SPL_DM_SEQ_ALIAS=y ++CONFIG_SPL_REGMAP=y ++CONFIG_SPL_SYSCON=y ++CONFIG_SPL_CLK=y ++# CONFIG_USB_FUNCTION_FASTBOOT is not set ++CONFIG_ROCKCHIP_GPIO=y ++CONFIG_SYS_I2C_ROCKCHIP=y ++CONFIG_MISC=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_SPI_FLASH is not set ++CONFIG_PHY_REALTEK=y ++CONFIG_DWC_ETH_QOS=y ++CONFIG_DWC_ETH_QOS_ROCKCHIP=y ++CONFIG_RTL8169=y ++CONFIG_NVME_PCI=y ++CONFIG_PCIE_DW_ROCKCHIP=y ++CONFIG_PHY_ROCKCHIP_INNO_USB2=y ++CONFIG_PHY_ROCKCHIP_NANENG_COMBOPHY=y ++CONFIG_PHY_ROCKCHIP_USBDP=y ++CONFIG_SPL_PINCTRL=y ++CONFIG_PWM_ROCKCHIP=y ++CONFIG_SPL_RAM=y ++CONFIG_BAUDRATE=1500000 ++CONFIG_DEBUG_UART_SHIFT=2 ++CONFIG_SYS_NS16550_MEM32=y ++CONFIG_SYSRESET=y ++CONFIG_USB=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_GENERIC=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_OHCI_GENERIC=y ++CONFIG_USB_DWC3=y ++CONFIG_USB_DWC3_GENERIC=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_DOWNLOAD=y ++CONFIG_USB_FUNCTION_ROCKUSB=y ++CONFIG_ERRNO_STR=y +--- a/doc/board/rockchip/rockchip.rst ++++ b/doc/board/rockchip/rockchip.rst +@@ -126,6 +126,7 @@ List of mainline supported Rockchip boar + - Edgeble Neural Compute Module 6A SoM - Neu6a (neu6a-io-rk3588) + - Edgeble Neural Compute Module 6B SoM - Neu6b (neu6b-io-rk3588) + - FriendlyElec NanoPC-T6 (nanopc-t6-rk3588) ++ - FriendlyElec NanoPi R6C (nanopi-r6c-rk3588s) + - Generic RK3588S/RK3588 (generic-rk3588) + - Indiedroid Nova (nova-rk3588s) + - Pine64 QuartzPro64 (quartzpro64-rk3588) +--- /dev/null ++++ b/include/configs/nanopi-r6c-rk3588s.h +@@ -0,0 +1,12 @@ ++/* SPDX-License-Identifier: GPL-2.0+ */ ++ ++#ifndef __NANOPI_R6C_RK3588S_H ++#define __NANOPI_R6C_RK3588S_H ++ ++#define ROCKCHIP_DEVICE_SETTINGS \ ++ "stdout=serial,vidconsole\0" \ ++ "stderr=serial,vidconsole\0" ++ ++#include ++ ++#endif /* __NANOPI_R6C_RK3588S_H */