* [PATCH v2 1/6] arm64: dts: rockchip: add RK3576 RNG node
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-08-30 14:43 ` Kever Yang
2025-07-11 22:21 ` [PATCH v2 2/6] rng: rockchip_rng: Add compatible for RK3576 Jonas Karlman
` (4 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini, Sumit Garg
Cc: u-boot, Jonas Karlman, Nicolas Frattaroli, Heiko Stuebner
From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
The RK3576 has a hardware random number generator IP built into the SoC.
Add it to the SoC's .dtsi, now that there's a binding and driver for it.
Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Link: https://lore.kernel.org/r/20250430-rk3576-hwrng-v1-3-480c15b5843e@collabora.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
[ upstream commit: 5268f3b5d29887480011b44567bcbf0d422cda94 ]
(cherry picked from commit 25cfcb091747900639f2b5df297d26b3a6ca3989)
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch
---
dts/upstream/src/arm64/rockchip/rk3576.dtsi | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/dts/upstream/src/arm64/rockchip/rk3576.dtsi b/dts/upstream/src/arm64/rockchip/rk3576.dtsi
index ebb5fc8bb8b1..50332ec6e0de 100644
--- a/dts/upstream/src/arm64/rockchip/rk3576.dtsi
+++ b/dts/upstream/src/arm64/rockchip/rk3576.dtsi
@@ -1419,6 +1419,14 @@
status = "disabled";
};
+ rng: rng@2a410000 {
+ compatible = "rockchip,rk3576-rng";
+ reg = <0x0 0x2a410000 0x0 0x200>;
+ clocks = <&cru HCLK_TRNG_NS>;
+ interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
+ resets = <&cru SRST_H_TRNG_NS>;
+ };
+
otp: otp@2a580000 {
compatible = "rockchip,rk3576-otp";
reg = <0x0 0x2a580000 0x0 0x400>;
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 1/6] arm64: dts: rockchip: add RK3576 RNG node
2025-07-11 22:21 ` [PATCH v2 1/6] arm64: dts: rockchip: add RK3576 RNG node Jonas Karlman
@ 2025-08-30 14:43 ` Kever Yang
0 siblings, 0 replies; 13+ messages in thread
From: Kever Yang @ 2025-08-30 14:43 UTC (permalink / raw)
To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini, Sumit Garg
Cc: u-boot, Nicolas Frattaroli, Heiko Stuebner
On 2025/7/12 06:21, Jonas Karlman wrote:
> From: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
>
> The RK3576 has a hardware random number generator IP built into the SoC.
>
> Add it to the SoC's .dtsi, now that there's a binding and driver for it.
>
> Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
> Link: https://lore.kernel.org/r/20250430-rk3576-hwrng-v1-3-480c15b5843e@collabora.com
> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
>
> [ upstream commit: 5268f3b5d29887480011b44567bcbf0d422cda94 ]
>
> (cherry picked from commit 25cfcb091747900639f2b5df297d26b3a6ca3989)
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Thanks,
- Kever
> ---
> v2: New patch
> ---
> dts/upstream/src/arm64/rockchip/rk3576.dtsi | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/dts/upstream/src/arm64/rockchip/rk3576.dtsi b/dts/upstream/src/arm64/rockchip/rk3576.dtsi
> index ebb5fc8bb8b1..50332ec6e0de 100644
> --- a/dts/upstream/src/arm64/rockchip/rk3576.dtsi
> +++ b/dts/upstream/src/arm64/rockchip/rk3576.dtsi
> @@ -1419,6 +1419,14 @@
> status = "disabled";
> };
>
> + rng: rng@2a410000 {
> + compatible = "rockchip,rk3576-rng";
> + reg = <0x0 0x2a410000 0x0 0x200>;
> + clocks = <&cru HCLK_TRNG_NS>;
> + interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
> + resets = <&cru SRST_H_TRNG_NS>;
> + };
> +
> otp: otp@2a580000 {
> compatible = "rockchip,rk3576-otp";
> reg = <0x0 0x2a580000 0x0 0x400>;
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 2/6] rng: rockchip_rng: Add compatible for RK3576
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
2025-07-11 22:21 ` [PATCH v2 1/6] arm64: dts: rockchip: add RK3576 RNG node Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-08-30 14:43 ` Kever Yang
2025-07-11 22:21 ` [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM " Jonas Karlman
` (3 subsequent siblings)
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini, Sughosh Ganu,
Heinrich Schuchardt
Cc: u-boot, Jonas Karlman
The RK3576 SoC contains a RKRNG block that can be used to generate
random numbers using the rockchip_rng driver.
Add compatible for RK3576 to support random numbers:
=> rng list
RNG #0 - rng@2a410000
=> rng
00000000: 36 dd ab 98 ec fb fe d1 cf 36 b3 e1 9b 3d 00 90 6........6...=..
00000010: f5 84 de 75 6b 27 48 9e 13 62 12 6c 50 ca 47 1a ...uk'H..b.lP.G.
00000020: b3 4d fc 43 c5 b5 2d be 07 27 03 26 bb 69 61 2a .M.C..-..'.&.ia*
00000030: 6f 70 01 83 4e ce 91 7a 5a 6c 7c 00 43 87 3e c5 op..N..zZl|.C.>.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch
---
drivers/rng/rockchip_rng.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/rng/rockchip_rng.c b/drivers/rng/rockchip_rng.c
index d854ea900442..8cf750e043cf 100644
--- a/drivers/rng/rockchip_rng.c
+++ b/drivers/rng/rockchip_rng.c
@@ -393,6 +393,10 @@ static const struct udevice_id rockchip_rng_match[] = {
.compatible = "rockchip,rk3588-rng",
.data = (ulong)&rk_trngv1_soc_data,
},
+ {
+ .compatible = "rockchip,rk3576-rng",
+ .data = (ulong)&rkrng_soc_data,
+ },
{
.compatible = "rockchip,rkrng",
.data = (ulong)&rkrng_soc_data,
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 2/6] rng: rockchip_rng: Add compatible for RK3576
2025-07-11 22:21 ` [PATCH v2 2/6] rng: rockchip_rng: Add compatible for RK3576 Jonas Karlman
@ 2025-08-30 14:43 ` Kever Yang
0 siblings, 0 replies; 13+ messages in thread
From: Kever Yang @ 2025-08-30 14:43 UTC (permalink / raw)
To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini,
Sughosh Ganu, Heinrich Schuchardt
Cc: u-boot
On 2025/7/12 06:21, Jonas Karlman wrote:
> The RK3576 SoC contains a RKRNG block that can be used to generate
> random numbers using the rockchip_rng driver.
>
> Add compatible for RK3576 to support random numbers:
>
> => rng list
> RNG #0 - rng@2a410000
>
> => rng
> 00000000: 36 dd ab 98 ec fb fe d1 cf 36 b3 e1 9b 3d 00 90 6........6...=..
> 00000010: f5 84 de 75 6b 27 48 9e 13 62 12 6c 50 ca 47 1a ...uk'H..b.lP.G.
> 00000020: b3 4d fc 43 c5 b5 2d be 07 27 03 26 bb 69 61 2a .M.C..-..'.&.ia*
> 00000030: 6f 70 01 83 4e ce 91 7a 5a 6c 7c 00 43 87 3e c5 op..N..zZl|.C.>.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Thanks,
- Kever
> ---
> v2: New patch
> ---
> drivers/rng/rockchip_rng.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/rng/rockchip_rng.c b/drivers/rng/rockchip_rng.c
> index d854ea900442..8cf750e043cf 100644
> --- a/drivers/rng/rockchip_rng.c
> +++ b/drivers/rng/rockchip_rng.c
> @@ -393,6 +393,10 @@ static const struct udevice_id rockchip_rng_match[] = {
> .compatible = "rockchip,rk3588-rng",
> .data = (ulong)&rk_trngv1_soc_data,
> },
> + {
> + .compatible = "rockchip,rk3576-rng",
> + .data = (ulong)&rkrng_soc_data,
> + },
> {
> .compatible = "rockchip,rkrng",
> .data = (ulong)&rkrng_soc_data,
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM for RK3576
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
2025-07-11 22:21 ` [PATCH v2 1/6] arm64: dts: rockchip: add RK3576 RNG node Jonas Karlman
2025-07-11 22:21 ` [PATCH v2 2/6] rng: rockchip_rng: Add compatible for RK3576 Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-07-15 8:03 ` Mattijs Korpershoek
2025-08-30 14:43 ` Kever Yang
2025-07-11 22:21 ` [PATCH v2 4/6] board: rockchip: Add minimal generic RK3576 board Jonas Karlman
` (2 subsequent siblings)
5 siblings, 2 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini,
Lukasz Majewski, Mattijs Korpershoek, Marek Vasut
Cc: u-boot, Jonas Karlman
Use 0x350e as the default USB Product ID for Rockchip RK3576, same PID
being used by the BootROM when the device is in MASKROM mode.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
v2: New patch
---
drivers/usb/gadget/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index 46a83141481f..bab88567ea62 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -86,6 +86,7 @@ config USB_GADGET_PRODUCT_NUM
default 0x350a if ROCKCHIP_RK3568
default 0x350b if ROCKCHIP_RK3588
default 0x350c if ROCKCHIP_RK3528
+ default 0x350e if ROCKCHIP_RK3576
default 0x0
help
Product ID of the USB device emulated, reported to the host device.
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM for RK3576
2025-07-11 22:21 ` [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM " Jonas Karlman
@ 2025-07-15 8:03 ` Mattijs Korpershoek
2025-08-30 14:43 ` Kever Yang
1 sibling, 0 replies; 13+ messages in thread
From: Mattijs Korpershoek @ 2025-07-15 8:03 UTC (permalink / raw)
To: Jonas Karlman, Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini,
Lukasz Majewski, Mattijs Korpershoek, Marek Vasut
Cc: u-boot, Jonas Karlman
Hi Jonas,
Thank you for the patch.
On Fri, Jul 11, 2025 at 22:21, Jonas Karlman <jonas@kwiboo.se> wrote:
> Use 0x350e as the default USB Product ID for Rockchip RK3576, same PID
> being used by the BootROM when the device is in MASKROM mode.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@kernel.org>
> ---
> v2: New patch
> ---
> drivers/usb/gadget/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
> index 46a83141481f..bab88567ea62 100644
> --- a/drivers/usb/gadget/Kconfig
> +++ b/drivers/usb/gadget/Kconfig
> @@ -86,6 +86,7 @@ config USB_GADGET_PRODUCT_NUM
> default 0x350a if ROCKCHIP_RK3568
> default 0x350b if ROCKCHIP_RK3588
> default 0x350c if ROCKCHIP_RK3528
> + default 0x350e if ROCKCHIP_RK3576
> default 0x0
> help
> Product ID of the USB device emulated, reported to the host device.
> --
> 2.49.0
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM for RK3576
2025-07-11 22:21 ` [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM " Jonas Karlman
2025-07-15 8:03 ` Mattijs Korpershoek
@ 2025-08-30 14:43 ` Kever Yang
1 sibling, 0 replies; 13+ messages in thread
From: Kever Yang @ 2025-08-30 14:43 UTC (permalink / raw)
To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini,
Lukasz Majewski, Mattijs Korpershoek, Marek Vasut
Cc: u-boot
On 2025/7/12 06:21, Jonas Karlman wrote:
> Use 0x350e as the default USB Product ID for Rockchip RK3576, same PID
> being used by the BootROM when the device is in MASKROM mode.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Thanks,
- Kever
> ---
> v2: New patch
> ---
> drivers/usb/gadget/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
> index 46a83141481f..bab88567ea62 100644
> --- a/drivers/usb/gadget/Kconfig
> +++ b/drivers/usb/gadget/Kconfig
> @@ -86,6 +86,7 @@ config USB_GADGET_PRODUCT_NUM
> default 0x350a if ROCKCHIP_RK3568
> default 0x350b if ROCKCHIP_RK3588
> default 0x350c if ROCKCHIP_RK3528
> + default 0x350e if ROCKCHIP_RK3576
> default 0x0
> help
> Product ID of the USB device emulated, reported to the host device.
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 4/6] board: rockchip: Add minimal generic RK3576 board
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
` (2 preceding siblings ...)
2025-07-11 22:21 ` [PATCH v2 3/6] rockchip: Add default USB_GADGET_PRODUCT_NUM " Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-07-11 22:21 ` [PATCH v2 5/6] rockchip: rk3576: Implement checkboard() to print SoC variant Jonas Karlman
2025-07-11 22:21 ` [PATCH v2 6/6] arm: dts: rockchip: Include OTP in U-Boot pre-reloc phase for RK3576 Jonas Karlman
5 siblings, 0 replies; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini, Jonas Karlman; +Cc: u-boot
Add a minimal generic RK3576 board that only have eMMC, SDMMC and USB
OTG enabled. This defconfig can be used to boot from eMMC or SD-card on
most RK3576 boards that follow reference board design.
eMMC and SD-card boot tested on:
- ArmSoM CM5
- ArmSoM Sige5
- FriendlyElec NanoPi M5
- Luckfox Omni3576
- Toybrick TB-RK3576D
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
---
v2: Add nodes and Kconfig options for USB OTG
---
arch/arm/dts/rk3576-generic-u-boot.dtsi | 3 ++
arch/arm/dts/rk3576-generic.dts | 65 +++++++++++++++++++++++
arch/arm/mach-rockchip/rk3576/MAINTAINERS | 5 ++
configs/generic-rk3576_defconfig | 51 ++++++++++++++++++
doc/board/rockchip/rockchip.rst | 1 +
5 files changed, 125 insertions(+)
create mode 100644 arch/arm/dts/rk3576-generic-u-boot.dtsi
create mode 100644 arch/arm/dts/rk3576-generic.dts
create mode 100644 arch/arm/mach-rockchip/rk3576/MAINTAINERS
create mode 100644 configs/generic-rk3576_defconfig
diff --git a/arch/arm/dts/rk3576-generic-u-boot.dtsi b/arch/arm/dts/rk3576-generic-u-boot.dtsi
new file mode 100644
index 000000000000..632fabb6af56
--- /dev/null
+++ b/arch/arm/dts/rk3576-generic-u-boot.dtsi
@@ -0,0 +1,3 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+#include "rk3576-u-boot.dtsi"
diff --git a/arch/arm/dts/rk3576-generic.dts b/arch/arm/dts/rk3576-generic.dts
new file mode 100644
index 000000000000..d984fa3746e0
--- /dev/null
+++ b/arch/arm/dts/rk3576-generic.dts
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Minimal generic DT for RK3576 with eMMC, SD-card and USB OTG enabled
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "rk3576.dtsi"
+
+/ {
+ model = "Generic RK3576";
+ compatible = "rockchip,rk3576";
+
+ aliases {
+ mmc0 = &sdhci;
+ mmc1 = &sdmmc;
+ };
+
+ chosen {
+ stdout-path = "serial0:1500000n8";
+ };
+};
+
+&sdhci {
+ bus-width = <8>;
+ cap-mmc-highspeed;
+ mmc-hs200-1_8v;
+ no-sd;
+ no-sdio;
+ non-removable;
+ status = "okay";
+};
+
+&sdmmc {
+ bus-width = <4>;
+ cap-sd-highspeed;
+ disable-wp;
+ no-mmc;
+ no-sdio;
+ status = "okay";
+};
+
+&u2phy0 {
+ status = "okay";
+};
+
+&u2phy0_otg {
+ status = "okay";
+};
+
+&uart0 {
+ pinctrl-0 = <&uart0m0_xfer>;
+ status = "okay";
+};
+
+&usb_drd0_dwc3 {
+ dr_mode = "peripheral";
+ maximum-speed = "high-speed";
+ status = "okay";
+};
+
+&usbdp_phy {
+ status = "okay";
+};
diff --git a/arch/arm/mach-rockchip/rk3576/MAINTAINERS b/arch/arm/mach-rockchip/rk3576/MAINTAINERS
new file mode 100644
index 000000000000..b5190c818468
--- /dev/null
+++ b/arch/arm/mach-rockchip/rk3576/MAINTAINERS
@@ -0,0 +1,5 @@
+GENERIC-RK3576
+M: Jonas Karlman <jonas@kwiboo.se>
+S: Maintained
+F: arch/arm/dts/rk3576-generic*
+F: configs/generic-rk3576_defconfig
diff --git a/configs/generic-rk3576_defconfig b/configs/generic-rk3576_defconfig
new file mode 100644
index 000000000000..a5b82f219aa4
--- /dev/null
+++ b/configs/generic-rk3576_defconfig
@@ -0,0 +1,51 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3576-generic"
+CONFIG_ROCKCHIP_RK3576=y
+CONFIG_SYS_LOAD_ADDR=0x40c00800
+CONFIG_DEBUG_UART_BASE=0x2AD40000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART=y
+# CONFIG_BOOTMETH_VBE is not set
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3576-generic.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_SPL_MAX_SIZE=0x40000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+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_OF_UPSTREAM is not set
+CONFIG_OF_SPL_REMOVE_PROPS="clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+CONFIG_NO_NET=y
+# CONFIG_ADC is not set
+# CONFIG_USB_FUNCTION_FASTBOOT is not set
+CONFIG_ROCKCHIP_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_PHY_ROCKCHIP_INNO_USB2=y
+CONFIG_PHY_ROCKCHIP_USBDP=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_SYSRESET_PSCI=y
+CONFIG_USB=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
diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst
index 1e46f2b56192..6a8a3b386d22 100644
--- a/doc/board/rockchip/rockchip.rst
+++ b/doc/board/rockchip/rockchip.rst
@@ -138,6 +138,7 @@ List of mainline supported Rockchip boards:
* rk3576
- Firefly ROC-RK3576-PC (roc-pc-rk3576)
+ - Generic RK3576 (generic-rk3576)
* rk3588
- ArmSoM Sige7 (sige7-rk3588)
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* [PATCH v2 5/6] rockchip: rk3576: Implement checkboard() to print SoC variant
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
` (3 preceding siblings ...)
2025-07-11 22:21 ` [PATCH v2 4/6] board: rockchip: Add minimal generic RK3576 board Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-08-30 14:43 ` Kever Yang
2025-07-11 22:21 ` [PATCH v2 6/6] arm: dts: rockchip: Include OTP in U-Boot pre-reloc phase for RK3576 Jonas Karlman
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman
Implement checkboard() to print current SoC model used by a board when
U-Boot proper is running.
U-Boot 2025.04 (Apr 22 2025 - 20:43:17 +0000)
Model: Generic RK3576
SoC: RK3576
DRAM: 8 GiB
Information about the SoC model and variant is read from OTP.
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
arch/arm/mach-rockchip/rk3576/rk3576.c | 48 ++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/arch/arm/mach-rockchip/rk3576/rk3576.c b/arch/arm/mach-rockchip/rk3576/rk3576.c
index ba5c94b4b3dd..2b1318f9532f 100644
--- a/arch/arm/mach-rockchip/rk3576/rk3576.c
+++ b/arch/arm/mach-rockchip/rk3576/rk3576.c
@@ -3,6 +3,10 @@
* Copyright (c) 2024 Rockchip Electronics Co., Ltd
*/
+#define LOG_CATEGORY LOGC_ARCH
+
+#include <dm.h>
+#include <misc.h>
#include <asm/armv8/mmu.h>
#include <asm/arch-rockchip/bootrom.h>
#include <asm/arch-rockchip/hardware.h>
@@ -153,3 +157,47 @@ int arch_cpu_init(void)
return 0;
}
+
+#define RK3576_OTP_CPU_CODE_OFFSET 0x02
+#define RK3576_OTP_SPECIFICATION_OFFSET 0x08
+
+int checkboard(void)
+{
+ u8 cpu_code[2], specification;
+ struct udevice *dev;
+ char suffix[2];
+ int ret;
+
+ if (!IS_ENABLED(CONFIG_ROCKCHIP_OTP) || !CONFIG_IS_ENABLED(MISC))
+ return 0;
+
+ ret = uclass_get_device_by_driver(UCLASS_MISC,
+ DM_DRIVER_GET(rockchip_otp), &dev);
+ if (ret) {
+ log_debug("Could not find otp device, ret=%d\n", ret);
+ return 0;
+ }
+
+ /* cpu-code: SoC model, e.g. 0x35 0x76 */
+ ret = misc_read(dev, RK3576_OTP_CPU_CODE_OFFSET, cpu_code, 2);
+ if (ret < 0) {
+ log_debug("Could not read cpu-code, ret=%d\n", ret);
+ return 0;
+ }
+
+ /* specification: SoC variant, e.g. 0xA for RK3576J */
+ ret = misc_read(dev, RK3576_OTP_SPECIFICATION_OFFSET, &specification, 1);
+ if (ret < 0) {
+ log_debug("Could not read specification, ret=%d\n", ret);
+ return 0;
+ }
+ specification &= 0x1f;
+
+ /* for RK3576J i.e. '@' + 0xA = 'J' */
+ suffix[0] = specification > 1 ? '@' + specification : '\0';
+ suffix[1] = '\0';
+
+ printf("SoC: RK%02x%02x%s\n", cpu_code[0], cpu_code[1], suffix);
+
+ return 0;
+}
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 5/6] rockchip: rk3576: Implement checkboard() to print SoC variant
2025-07-11 22:21 ` [PATCH v2 5/6] rockchip: rk3576: Implement checkboard() to print SoC variant Jonas Karlman
@ 2025-08-30 14:43 ` Kever Yang
0 siblings, 0 replies; 13+ messages in thread
From: Kever Yang @ 2025-08-30 14:43 UTC (permalink / raw)
To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot
On 2025/7/12 06:21, Jonas Karlman wrote:
> Implement checkboard() to print current SoC model used by a board when
> U-Boot proper is running.
>
> U-Boot 2025.04 (Apr 22 2025 - 20:43:17 +0000)
>
> Model: Generic RK3576
> SoC: RK3576
> DRAM: 8 GiB
>
> Information about the SoC model and variant is read from OTP.
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Thanks,
- Kever
> ---
> arch/arm/mach-rockchip/rk3576/rk3576.c | 48 ++++++++++++++++++++++++++
> 1 file changed, 48 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/rk3576/rk3576.c b/arch/arm/mach-rockchip/rk3576/rk3576.c
> index ba5c94b4b3dd..2b1318f9532f 100644
> --- a/arch/arm/mach-rockchip/rk3576/rk3576.c
> +++ b/arch/arm/mach-rockchip/rk3576/rk3576.c
> @@ -3,6 +3,10 @@
> * Copyright (c) 2024 Rockchip Electronics Co., Ltd
> */
>
> +#define LOG_CATEGORY LOGC_ARCH
> +
> +#include <dm.h>
> +#include <misc.h>
> #include <asm/armv8/mmu.h>
> #include <asm/arch-rockchip/bootrom.h>
> #include <asm/arch-rockchip/hardware.h>
> @@ -153,3 +157,47 @@ int arch_cpu_init(void)
>
> return 0;
> }
> +
> +#define RK3576_OTP_CPU_CODE_OFFSET 0x02
> +#define RK3576_OTP_SPECIFICATION_OFFSET 0x08
> +
> +int checkboard(void)
> +{
> + u8 cpu_code[2], specification;
> + struct udevice *dev;
> + char suffix[2];
> + int ret;
> +
> + if (!IS_ENABLED(CONFIG_ROCKCHIP_OTP) || !CONFIG_IS_ENABLED(MISC))
> + return 0;
> +
> + ret = uclass_get_device_by_driver(UCLASS_MISC,
> + DM_DRIVER_GET(rockchip_otp), &dev);
> + if (ret) {
> + log_debug("Could not find otp device, ret=%d\n", ret);
> + return 0;
> + }
> +
> + /* cpu-code: SoC model, e.g. 0x35 0x76 */
> + ret = misc_read(dev, RK3576_OTP_CPU_CODE_OFFSET, cpu_code, 2);
> + if (ret < 0) {
> + log_debug("Could not read cpu-code, ret=%d\n", ret);
> + return 0;
> + }
> +
> + /* specification: SoC variant, e.g. 0xA for RK3576J */
> + ret = misc_read(dev, RK3576_OTP_SPECIFICATION_OFFSET, &specification, 1);
> + if (ret < 0) {
> + log_debug("Could not read specification, ret=%d\n", ret);
> + return 0;
> + }
> + specification &= 0x1f;
> +
> + /* for RK3576J i.e. '@' + 0xA = 'J' */
> + suffix[0] = specification > 1 ? '@' + specification : '\0';
> + suffix[1] = '\0';
> +
> + printf("SoC: RK%02x%02x%s\n", cpu_code[0], cpu_code[1], suffix);
> +
> + return 0;
> +}
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 6/6] arm: dts: rockchip: Include OTP in U-Boot pre-reloc phase for RK3576
2025-07-11 22:21 [PATCH v2 0/6] rockchip: rk3576: Add rng, checkboard() and generic board Jonas Karlman
` (4 preceding siblings ...)
2025-07-11 22:21 ` [PATCH v2 5/6] rockchip: rk3576: Implement checkboard() to print SoC variant Jonas Karlman
@ 2025-07-11 22:21 ` Jonas Karlman
2025-08-30 14:44 ` Kever Yang
5 siblings, 1 reply; 13+ messages in thread
From: Jonas Karlman @ 2025-07-11 22:21 UTC (permalink / raw)
To: Kever Yang, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot, Jonas Karlman
Update rk3576-u-boot.dtsi to include OTP in U-Boot pre-reloc phase for
checkboard() to be able to read information about the running SoC model
and variant from OTP and print it during boot:
U-Boot 2025.04 (Apr 22 2025 - 20:43:17 +0000)
Model: Generic RK3576
SoC: RK3576
DRAM: 8 GiB
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
---
arch/arm/dts/rk3576-u-boot.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm/dts/rk3576-u-boot.dtsi b/arch/arm/dts/rk3576-u-boot.dtsi
index be99a48a630f..fb5a107f47d9 100644
--- a/arch/arm/dts/rk3576-u-boot.dtsi
+++ b/arch/arm/dts/rk3576-u-boot.dtsi
@@ -49,6 +49,10 @@
bootph-all;
};
+&otp {
+ bootph-some-ram;
+};
+
&pcfg_pull_none {
bootph-all;
};
--
2.49.0
^ permalink raw reply related [flat|nested] 13+ messages in thread* Re: [PATCH v2 6/6] arm: dts: rockchip: Include OTP in U-Boot pre-reloc phase for RK3576
2025-07-11 22:21 ` [PATCH v2 6/6] arm: dts: rockchip: Include OTP in U-Boot pre-reloc phase for RK3576 Jonas Karlman
@ 2025-08-30 14:44 ` Kever Yang
0 siblings, 0 replies; 13+ messages in thread
From: Kever Yang @ 2025-08-30 14:44 UTC (permalink / raw)
To: Jonas Karlman, Simon Glass, Philipp Tomsich, Tom Rini; +Cc: u-boot
On 2025/7/12 06:21, Jonas Karlman wrote:
> Update rk3576-u-boot.dtsi to include OTP in U-Boot pre-reloc phase for
> checkboard() to be able to read information about the running SoC model
> and variant from OTP and print it during boot:
>
> U-Boot 2025.04 (Apr 22 2025 - 20:43:17 +0000)
>
> Model: Generic RK3576
> SoC: RK3576
> DRAM: 8 GiB
>
> Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Thanks,
- Kever
> ---
> arch/arm/dts/rk3576-u-boot.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm/dts/rk3576-u-boot.dtsi b/arch/arm/dts/rk3576-u-boot.dtsi
> index be99a48a630f..fb5a107f47d9 100644
> --- a/arch/arm/dts/rk3576-u-boot.dtsi
> +++ b/arch/arm/dts/rk3576-u-boot.dtsi
> @@ -49,6 +49,10 @@
> bootph-all;
> };
>
> +&otp {
> + bootph-some-ram;
> +};
> +
> &pcfg_pull_none {
> bootph-all;
> };
^ permalink raw reply [flat|nested] 13+ messages in thread