* [PATCH v2 2/5] roc-pc-rk3399: Introduce a common defconfig
2026-07-01 17:57 [PATCH v2 1/5] roc-pc-rk3399: Enable redundant SPI flash environment Fabio Estevam
@ 2026-07-01 17:57 ` Fabio Estevam
2026-07-01 17:57 ` [PATCH v2 3/5] mtd: spi-nor-ids: Add XMC XM25QH128C Fabio Estevam
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Fabio Estevam @ 2026-07-01 17:57 UTC (permalink / raw)
To: kever.yang; +Cc: djw, u-boot, Fabio Estevam
From: Fabio Estevam <festevam@nabladev.com>
Introduce a common roc-pc-rk3399_common.config file to make it easier
to introduce new roc-pc-rk3399 board variants.
No functional change.
Signed-off-by: Fabio Estevam <festevam@nabladev.com>
---
Changes since v1:
- None.
configs/roc-pc-rk3399_common.config | 89 ++++++++++++++++++++++++++++
configs/roc-pc-rk3399_defconfig | 90 +----------------------------
2 files changed, 90 insertions(+), 89 deletions(-)
create mode 100644 configs/roc-pc-rk3399_common.config
diff --git a/configs/roc-pc-rk3399_common.config b/configs/roc-pc-rk3399_common.config
new file mode 100644
index 000000000000..7ead746cec92
--- /dev/null
+++ b/configs/roc-pc-rk3399_common.config
@@ -0,0 +1,89 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_GPIO=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SF_DEFAULT_SPEED=30000000
+CONFIG_ENV_SIZE=0x8000
+CONFIG_ENV_OFFSET=0x3F8000
+CONFIG_ENV_SECT_SIZE=0x1000
+CONFIG_DM_RESET=y
+CONFIG_ROCKCHIP_RK3399=y
+CONFIG_ROCKCHIP_SPI_IMAGE=y
+CONFIG_TARGET_ROC_PC_RK3399=y
+CONFIG_SYS_LOAD_ADDR=0x800800
+CONFIG_SF_DEFAULT_BUS=1
+CONFIG_DEBUG_UART_BASE=0xFF1A0000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_ENV_OFFSET_REDUND=0x3F8000
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI=y
+CONFIG_DEBUG_UART=y
+# CONFIG_ANDROID_BOOT_IMAGE is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_SPL_MAX_SIZE=0x40000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+CONFIG_SPL_ENV_SUPPORT=y
+CONFIG_SPL_SPI_LOAD=y
+CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000
+CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
+CONFIG_TPL=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TIME=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_ENV_REDUNDANT=y
+CONFIG_ENV_RELOC_GD_ENV_ADDR=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=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_SFDP_SUPPORT=y
+CONFIG_DM_ETH_PHY=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_PHY_REALTEK=y
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_TYPEC=y
+CONFIG_PMIC_RK8XX=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_SPL_DM_REGULATOR_FIXED=y
+CONFIG_REGULATOR_RK8XX=y
+CONFIG_PWM_ROCKCHIP=y
+# CONFIG_RAM_ROCKCHIP_DEBUG is not set
+CONFIG_RAM_ROCKCHIP_LPDDR4=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_ROCKCHIP_SPI=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_KEYBOARD=y
+CONFIG_USB_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_ETHER_ASIX88179=y
+CONFIG_USB_ETHER_MCS7830=y
+CONFIG_USB_ETHER_RTL8152=y
+CONFIG_USB_ETHER_SMSC95XX=y
+CONFIG_USB_GADGET=y
+CONFIG_VIDEO=y
+CONFIG_DISPLAY=y
+CONFIG_VIDEO_ROCKCHIP=y
+CONFIG_DISPLAY_ROCKCHIP_HDMI=y
+CONFIG_ERRNO_STR=y
diff --git a/configs/roc-pc-rk3399_defconfig b/configs/roc-pc-rk3399_defconfig
index 4c9a5a69b4d0..d72e64db1327 100644
--- a/configs/roc-pc-rk3399_defconfig
+++ b/configs/roc-pc-rk3399_defconfig
@@ -1,92 +1,4 @@
-CONFIG_ARM=y
-CONFIG_SKIP_LOWLEVEL_INIT=y
-CONFIG_COUNTER_FREQUENCY=24000000
-CONFIG_ARCH_ROCKCHIP=y
-CONFIG_SPL_GPIO=y
-CONFIG_NR_DRAM_BANKS=1
-CONFIG_SF_DEFAULT_SPEED=30000000
-CONFIG_ENV_SIZE=0x8000
-CONFIG_ENV_OFFSET=0x3F8000
-CONFIG_ENV_SECT_SIZE=0x1000
+#include <configs/roc-pc-rk3399_common.config>
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-roc-pc"
-CONFIG_DM_RESET=y
-CONFIG_ROCKCHIP_RK3399=y
-CONFIG_ROCKCHIP_SPI_IMAGE=y
-CONFIG_TARGET_ROC_PC_RK3399=y
-CONFIG_SYS_LOAD_ADDR=0x800800
-CONFIG_SF_DEFAULT_BUS=1
-CONFIG_DEBUG_UART_BASE=0xFF1A0000
-CONFIG_DEBUG_UART_CLOCK=24000000
-CONFIG_ENV_OFFSET_REDUND=0x3F8000
-CONFIG_SPL_SPI_FLASH_SUPPORT=y
-CONFIG_SPL_SPI=y
-CONFIG_DEBUG_UART=y
-# CONFIG_ANDROID_BOOT_IMAGE is not set
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc.dtb"
-CONFIG_DISPLAY_BOARDINFO_LATE=y
-CONFIG_SPL_MAX_SIZE=0x40000
-# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
-CONFIG_SPL_ENV_SUPPORT=y
-CONFIG_SPL_SPI_LOAD=y
-CONFIG_SYS_SPI_U_BOOT_OFFS=0xE0000
-CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
-CONFIG_TPL=y
-CONFIG_CMD_BOOTZ=y
-CONFIG_CMD_GPT=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_CMD_TIME=y
-CONFIG_SPL_OF_CONTROL=y
-CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
-CONFIG_ENV_IS_IN_SPI_FLASH=y
-CONFIG_ENV_REDUNDANT=y
-CONFIG_ENV_RELOC_GD_ENV_ADDR=y
-CONFIG_ROCKCHIP_GPIO=y
-CONFIG_SYS_I2C_ROCKCHIP=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_SFDP_SUPPORT=y
CONFIG_SPI_FLASH_WINBOND=y
-CONFIG_DM_ETH_PHY=y
-CONFIG_ETH_DESIGNWARE=y
-CONFIG_GMAC_ROCKCHIP=y
-CONFIG_PHY_REALTEK=y
-CONFIG_PHY_ROCKCHIP_INNO_USB2=y
-CONFIG_PHY_ROCKCHIP_TYPEC=y
-CONFIG_PMIC_RK8XX=y
-CONFIG_REGULATOR_PWM=y
-CONFIG_SPL_DM_REGULATOR_FIXED=y
-CONFIG_REGULATOR_RK8XX=y
-CONFIG_PWM_ROCKCHIP=y
-# CONFIG_RAM_ROCKCHIP_DEBUG is not set
-CONFIG_RAM_ROCKCHIP_LPDDR4=y
-CONFIG_BAUDRATE=1500000
-CONFIG_DEBUG_UART_SHIFT=2
-CONFIG_SYS_NS16550_MEM32=y
-CONFIG_ROCKCHIP_SPI=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_KEYBOARD=y
-CONFIG_USB_HOST_ETHER=y
-CONFIG_USB_ETHER_ASIX=y
-CONFIG_USB_ETHER_ASIX88179=y
-CONFIG_USB_ETHER_MCS7830=y
-CONFIG_USB_ETHER_RTL8152=y
-CONFIG_USB_ETHER_SMSC95XX=y
-CONFIG_USB_GADGET=y
-CONFIG_VIDEO=y
-CONFIG_DISPLAY=y
-CONFIG_VIDEO_ROCKCHIP=y
-CONFIG_DISPLAY_ROCKCHIP_HDMI=y
-CONFIG_ERRNO_STR=y
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 3/5] mtd: spi-nor-ids: Add XMC XM25QH128C
2026-07-01 17:57 [PATCH v2 1/5] roc-pc-rk3399: Enable redundant SPI flash environment Fabio Estevam
2026-07-01 17:57 ` [PATCH v2 2/5] roc-pc-rk3399: Introduce a common defconfig Fabio Estevam
@ 2026-07-01 17:57 ` Fabio Estevam
2026-07-01 17:57 ` [PATCH v2 4/5] roc-pc-plus-rk3399: Introduce new variant Fabio Estevam
2026-07-01 17:58 ` [PATCH v2 5/5] roc-pc-plus-rk3399: Enable USB Mass Storage support Fabio Estevam
3 siblings, 0 replies; 5+ messages in thread
From: Fabio Estevam @ 2026-07-01 17:57 UTC (permalink / raw)
To: kever.yang; +Cc: djw, u-boot, Fabio Estevam
From: Fabio Estevam <festevam@nabladev.com>
Add the JEDEC ID for the XMC XM25QH128C SPI NOR flash.
This is a 128Mbit device using 64KiB sectors and supporting 4KiB
erase, dual read and quad read, matching the other XM25QH128 variants.
Signed-off-by: Fabio Estevam <festevam@nabladev.com>
---
Changes since v1:
- None.
drivers/mtd/spi/spi-nor-ids.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/mtd/spi/spi-nor-ids.c b/drivers/mtd/spi/spi-nor-ids.c
index c0fa98424aab..18d61ddd2e33 100644
--- a/drivers/mtd/spi/spi-nor-ids.c
+++ b/drivers/mtd/spi/spi-nor-ids.c
@@ -669,6 +669,7 @@ const struct flash_info spi_nor_ids[] = {
{ INFO("XM25QH64A", 0x207017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ INFO("XM25QH64C", 0x204017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ INFO("XM25QH128A", 0x207018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
+ { INFO("XM25QH128C", 0x204018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ INFO("XM25QU128C", 0x204118, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ INFO("XM25QH256C", 0x204019, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
{ INFO("XM25QU256C", 0x204119, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) },
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 4/5] roc-pc-plus-rk3399: Introduce new variant
2026-07-01 17:57 [PATCH v2 1/5] roc-pc-rk3399: Enable redundant SPI flash environment Fabio Estevam
2026-07-01 17:57 ` [PATCH v2 2/5] roc-pc-rk3399: Introduce a common defconfig Fabio Estevam
2026-07-01 17:57 ` [PATCH v2 3/5] mtd: spi-nor-ids: Add XMC XM25QH128C Fabio Estevam
@ 2026-07-01 17:57 ` Fabio Estevam
2026-07-01 17:58 ` [PATCH v2 5/5] roc-pc-plus-rk3399: Enable USB Mass Storage support Fabio Estevam
3 siblings, 0 replies; 5+ messages in thread
From: Fabio Estevam @ 2026-07-01 17:57 UTC (permalink / raw)
To: kever.yang; +Cc: djw, u-boot, Fabio Estevam
From: Fabio Estevam <festevam@nabladev.com>
The roc-pc-plus-rk3399 board shares a lot of features with the
existing supported roc-pc-rk3399 board.
Its devicetree is also supported in the upstream kernel.
The plus variant has only a 12V supply. It contains a XMC XM25QH128C
SPI NOR flash.
Add support for the plus variant.
Signed-off-by: Fabio Estevam <festevam@nabladev.com>
---
Changes since v1:
- None.
arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi | 9 +++++++++
board/firefly/roc-pc-rk3399/MAINTAINERS | 1 +
configs/roc-pc-plus-rk3399_defconfig | 4 ++++
doc/board/rockchip/rockchip.rst | 3 ++-
4 files changed, 16 insertions(+), 1 deletion(-)
create mode 100644 arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
create mode 100644 configs/roc-pc-plus-rk3399_defconfig
diff --git a/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi b/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
new file mode 100644
index 000000000000..7d5af3e234da
--- /dev/null
+++ b/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include "rk3399-roc-pc-u-boot.dtsi"
+
+/delete-node/ &vcc_hub_en;
+
+&dc_12v {
+ /delete-property/ vin-supply;
+};
diff --git a/board/firefly/roc-pc-rk3399/MAINTAINERS b/board/firefly/roc-pc-rk3399/MAINTAINERS
index 2c0de4432fa8..d32b078431ab 100644
--- a/board/firefly/roc-pc-rk3399/MAINTAINERS
+++ b/board/firefly/roc-pc-rk3399/MAINTAINERS
@@ -5,5 +5,6 @@ S: Maintained
F: board/firefly/roc-pc-rk3399
F: include/configs/roc-pc-rk3399.h
F: configs/roc-pc-rk3399_defconfig
+F: configs/roc-pc-plus-rk3399_defconfig
F: configs/roc-pc-mezzanine-rk3399_defconfig
F: arch/arm/dts/rk3399-roc-pc*
diff --git a/configs/roc-pc-plus-rk3399_defconfig b/configs/roc-pc-plus-rk3399_defconfig
new file mode 100644
index 000000000000..4ec2f7d44b5f
--- /dev/null
+++ b/configs/roc-pc-plus-rk3399_defconfig
@@ -0,0 +1,4 @@
+#include <configs/roc-pc-rk3399_common.config>
+CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-roc-pc-plus"
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-plus.dtb"
+CONFIG_SPI_FLASH_XMC=y
diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst
index ae18b08031d2..b87d857a312e 100644
--- a/doc/board/rockchip/rockchip.rst
+++ b/doc/board/rockchip/rockchip.rst
@@ -81,7 +81,8 @@ List of mainline supported Rockchip boards:
- 96boards RK3399 Ficus (ficus-rk3399)
- 96boards Rock960 (rock960-rk3399)
- Firefly-RK3399 (firefly_rk3399)
- - Firefly ROC-RK3399-PC
+ - Firefly ROC-RK3399-PC (roc-pc-rk3399)
+ - Firefly ROC-RK3399-PC Plus (roc-pc-plus-rk3399)
- FriendlyElec NanoPC-T4 (nanopc-t4-rk3399)
- FriendlyElec NanoPi M4 (nanopi-m4-rk3399)
- FriendlyElec NanoPi M4B (nanopi-m4b-rk3399)
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH v2 5/5] roc-pc-plus-rk3399: Enable USB Mass Storage support
2026-07-01 17:57 [PATCH v2 1/5] roc-pc-rk3399: Enable redundant SPI flash environment Fabio Estevam
` (2 preceding siblings ...)
2026-07-01 17:57 ` [PATCH v2 4/5] roc-pc-plus-rk3399: Introduce new variant Fabio Estevam
@ 2026-07-01 17:58 ` Fabio Estevam
3 siblings, 0 replies; 5+ messages in thread
From: Fabio Estevam @ 2026-07-01 17:58 UTC (permalink / raw)
To: kever.yang; +Cc: djw, u-boot, Fabio Estevam
From: Fabio Estevam <festevam@nabladev.com>
Configure the USB0 DWC3 controller for peripheral mode and enable the
required USB gadget options to support the U-Boot 'ums' command on the
ROC-RK3399-PC Plus.
The 'ums' command provides a convenient way to expose the on-board eMMC
as a USB Mass Storage device to a host computer, simplifying development,
image installation and recovery without requiring removable media or
network access.
Limit the controller to High-Speed operation by using the USB2 OTG PHY.
Signed-off-by: Fabio Estevam <festevam@nabladev.com>
---
Changes since v1:
- None.
arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi | 7 +++++++
configs/roc-pc-plus-rk3399_defconfig | 3 +++
2 files changed, 10 insertions(+)
diff --git a/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi b/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
index 7d5af3e234da..f613d75646c3 100644
--- a/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
+++ b/arch/arm/dts/rk3399-roc-pc-plus-u-boot.dtsi
@@ -7,3 +7,10 @@
&dc_12v {
/delete-property/ vin-supply;
};
+
+&usbdrd_dwc3_0 {
+ dr_mode = "peripheral";
+ maximum-speed = "high-speed";
+ phys = <&u2phy0_otg>;
+ phy-names = "usb2-phy";
+};
diff --git a/configs/roc-pc-plus-rk3399_defconfig b/configs/roc-pc-plus-rk3399_defconfig
index 4ec2f7d44b5f..f3d78c53e672 100644
--- a/configs/roc-pc-plus-rk3399_defconfig
+++ b/configs/roc-pc-plus-rk3399_defconfig
@@ -2,3 +2,6 @@
CONFIG_DEFAULT_DEVICE_TREE="rockchip/rk3399-roc-pc-plus"
CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-roc-pc-plus.dtb"
CONFIG_SPI_FLASH_XMC=y
+CONFIG_CMD_USB_MASS_STORAGE=y
+# CONFIG_USB_FUNCTION_FASTBOOT is not set
+CONFIG_USB_GADGET_DOWNLOAD=y
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread