public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x
@ 2026-03-12 21:30 Heiko Stuebner
  2026-03-12 21:30 ` [PATCH v2 1/3] arm64: dts: rockchip: Enable OTP controller for RK3562 Heiko Stuebner
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Heiko Stuebner @ 2026-03-12 21:30 UTC (permalink / raw)
  To: heiko
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas

This is a companion series to the binding+driver changes [0], that adds
the relevant OTP controller nodes to the core SoC devicetrees.

[0] https://lore.kernel.org/linux-rockchip/20260205211901.490181-1-heiko@sntech.de/T/#t

changes in v2:
- rename node-names to be efuse@... following the dt-specfication
  2.2.2. Generic Names Recommendation

Heiko Stuebner (2):
  arm64: dts: rockchip: Enable OTP controller for RK3562
  arm64: dts: rockchip: Enable OTP controller for RK356x

Jonas Karlman (1):
  arm64: dts: rockchip: Enable OTP controller for RK3528

 arch/arm64/boot/dts/rockchip/rk3528.dtsi      | 47 +++++++++++++++++++
 arch/arm64/boot/dts/rockchip/rk3562.dtsi      | 46 ++++++++++++++++++
 arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 46 ++++++++++++++++++
 3 files changed, 139 insertions(+)

-- 
2.47.3



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/3] arm64: dts: rockchip: Enable OTP controller for RK3562
  2026-03-12 21:30 [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
@ 2026-03-12 21:30 ` Heiko Stuebner
  2026-03-12 21:30 ` [PATCH v2 2/3] arm64: dts: rockchip: Enable OTP controller for RK356x Heiko Stuebner
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Heiko Stuebner @ 2026-03-12 21:30 UTC (permalink / raw)
  To: heiko
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas

Enable the One Time Programmable Controller (OTPC) in RK3562 and add
an initial nvmem fixed layout.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/arm64/boot/dts/rockchip/rk3562.dtsi | 46 ++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3562.dtsi b/arch/arm64/boot/dts/rockchip/rk3562.dtsi
index f84676b47b27..e4816aa3dae0 100644
--- a/arch/arm64/boot/dts/rockchip/rk3562.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3562.dtsi
@@ -1093,6 +1093,52 @@ sdmmc1: mmc@ff890000 {
 			status = "disabled";
 		};
 
+		otp: efuse@ff930000 {
+			compatible = "rockchip,rk3562-otp";
+			reg = <0x0 0xff930000 0x0 0x4000>;
+			clocks = <&cru CLK_USER_OTPC_NS>, <&cru PCLK_OTPC_NS>,
+				 <&cru PCLK_OTPPHY>, <&cru CLK_SBPI_OTPC_NS>;
+			clock-names = "otp", "apb_pclk", "phy", "sbpi";
+			resets = <&cru SRST_USER_OTPC_NS>, <&cru SRST_P_OTPC_NS>,
+				 <&cru SRST_P_OTPPHY>, <&cru SRST_SBPI_OTPC_NS>;
+			reset-names = "otp", "apb", "phy", "sbpi";
+
+			nvmem-layout {
+				compatible = "fixed-layout";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				cpu_code: cpu-code@2 {
+					reg = <0x02 0x2>;
+				};
+
+				otp_cpu_version: cpu-version@8 {
+					reg = <0x08 0x1>;
+					bits = <3 3>;
+				};
+
+				otp_id: id@a {
+					reg = <0x0a 0x10>;
+				};
+
+				cpu_leakage: cpu-leakage@1a {
+					reg = <0x1a 0x1>;
+				};
+
+				log_leakage: log-leakage@1b {
+					reg = <0x1b 0x1>;
+				};
+
+				npu_leakage: npu-leakage@1c {
+					reg = <0x1c 0x1>;
+				};
+
+				gpu_leakage: gpu-leakage@1d {
+					reg = <0x1d 0x1>;
+				};
+			};
+		};
+
 		dmac: dma-controller@ff990000 {
 			compatible = "arm,pl330", "arm,primecell";
 			reg = <0x0 0xff990000 0x0 0x4000>;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/3] arm64: dts: rockchip: Enable OTP controller for RK356x
  2026-03-12 21:30 [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
  2026-03-12 21:30 ` [PATCH v2 1/3] arm64: dts: rockchip: Enable OTP controller for RK3562 Heiko Stuebner
@ 2026-03-12 21:30 ` Heiko Stuebner
       [not found]   ` <DH4BCBM75EA1.3S6GHUO64SAMA@cknow-tech.com>
  2026-03-12 21:30 ` [PATCH v2 3/3] arm64: dts: rockchip: Enable OTP controller for RK3528 Heiko Stuebner
  2026-03-24 19:53 ` [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
  3 siblings, 1 reply; 6+ messages in thread
From: Heiko Stuebner @ 2026-03-12 21:30 UTC (permalink / raw)
  To: heiko
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas

Enable the One Time Programmable Controller (OTPC) in RK356x and add
an initial nvmem fixed layout.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
index 68b48606f601..c8321af7de7d 100644
--- a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
@@ -1123,6 +1123,52 @@ rng: rng@fe388000 {
 		status = "disabled";
 	};
 
+	otp: efuse@fe38c000 {
+		compatible = "rockchip,rk3568-otp";
+		reg = <0x0 0xfe38c000 0x0 0x4000>;
+		clocks = <&cru CLK_OTPC_NS_USR>, <&cru PCLK_OTPC_NS>,
+			 <&cru PCLK_OTPPHY>, <&cru CLK_OTPC_NS_SBPI>;
+		clock-names = "otp", "apb_pclk", "phy", "sbpi";
+		resets = <&cru SRST_OTPC_NS_USR>, <&cru SRST_P_OTPC_NS>,
+			 <&cru SRST_OTPPHY>, <&cru SRST_OTPC_NS_SBPI>;
+		reset-names = "otp", "apb", "phy", "sbpi";
+
+		nvmem-layout {
+			compatible = "fixed-layout";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			cpu_code: cpu-code@2 {
+				reg = <0x02 0x2>;
+			};
+
+			otp_cpu_version: cpu-version@8 {
+				reg = <0x08 0x1>;
+				bits = <3 3>;
+			};
+
+			otp_id: id@a {
+				reg = <0x0a 0x10>;
+			};
+
+			cpu_leakage: cpu-leakage@1a {
+				reg = <0x1a 0x1>;
+			};
+
+			log_leakage: log-leakage@1b {
+				reg = <0x1b 0x1>;
+			};
+
+			npu_leakage: npu-leakage@1c {
+				reg = <0x1c 0x1>;
+			};
+
+			gpu_leakage: gpu-leakage@1d {
+				reg = <0x1d 0x1>;
+			};
+		};
+	};
+
 	i2s0_8ch: i2s@fe400000 {
 		compatible = "rockchip,rk3568-i2s-tdm";
 		reg = <0x0 0xfe400000 0x0 0x1000>;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/3] arm64: dts: rockchip: Enable OTP controller for RK3528
  2026-03-12 21:30 [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
  2026-03-12 21:30 ` [PATCH v2 1/3] arm64: dts: rockchip: Enable OTP controller for RK3562 Heiko Stuebner
  2026-03-12 21:30 ` [PATCH v2 2/3] arm64: dts: rockchip: Enable OTP controller for RK356x Heiko Stuebner
@ 2026-03-12 21:30 ` Heiko Stuebner
  2026-03-24 19:53 ` [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
  3 siblings, 0 replies; 6+ messages in thread
From: Heiko Stuebner @ 2026-03-12 21:30 UTC (permalink / raw)
  To: heiko
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas

From: Jonas Karlman <jonas@kwiboo.se>

Enable the One Time Programmable Controller (OTPC) in RK3528 and add
an initial nvmem fixed layout.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
---
 arch/arm64/boot/dts/rockchip/rk3528.dtsi | 47 ++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3528.dtsi b/arch/arm64/boot/dts/rockchip/rk3528.dtsi
index d402f2828814..806b8109f67d 100644
--- a/arch/arm64/boot/dts/rockchip/rk3528.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3528.dtsi
@@ -1190,6 +1190,53 @@ sdmmc: mmc@ffc30000 {
 			status = "disabled";
 		};
 
+		otp: efuse@ffce0000 {
+			compatible = "rockchip,rk3528-otp";
+			reg = <0x0 0xffce0000 0x0 0x4000>;
+			clocks = <&cru CLK_USER_OTPC_NS>, <&cru PCLK_OTPC_NS>,
+				 <&cru CLK_SBPI_OTPC_NS>;
+			clock-names = "otp", "apb_pclk", "sbpi";
+			resets = <&cru SRST_USER_OTPC_NS>, <&cru SRST_P_OTPC_NS>,
+				 <&cru SRST_SBPI_OTPC_NS>;
+			reset-names = "otp", "apb", "sbpi";
+
+			nvmem-layout {
+				compatible = "fixed-layout";
+				#address-cells = <1>;
+				#size-cells = <1>;
+
+				cpu_code: cpu-code@2 {
+					reg = <0x02 0x2>;
+				};
+
+				otp_cpu_version: cpu-version@8 {
+					reg = <0x08 0x1>;
+					bits = <3 3>;
+				};
+
+				otp_id: id@a {
+					reg = <0x0a 0x10>;
+				};
+
+				cpu_leakage: cpu-leakage@1a {
+					reg = <0x1a 0x1>;
+				};
+
+				logic_leakage: logic-leakage@1b {
+					reg = <0x1b 0x1>;
+				};
+
+				gpu_leakage: gpu-leakage@1c {
+					reg = <0x1c 0x1>;
+				};
+
+				tsadc_trim: tsadc-trim@44 {
+					reg = <0x44 0x2>;
+					bits = <0 10>;
+				};
+			};
+		};
+
 		dmac: dma-controller@ffd60000 {
 			compatible = "arm,pl330", "arm,primecell";
 			reg = <0x0 0xffd60000 0x0 0x4000>;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/3] arm64: dts: rockchip: Enable OTP controller for RK356x
       [not found]   ` <DH4BCBM75EA1.3S6GHUO64SAMA@cknow-tech.com>
@ 2026-03-16 16:22     ` Diederik de Haas
  0 siblings, 0 replies; 6+ messages in thread
From: Diederik de Haas @ 2026-03-16 16:22 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas

Hi Heiko,

On Thu Mar 12, 2026 at 10:30 PM CET, Heiko Stuebner wrote:
> Enable the One Time Programmable Controller (OTPC) in RK356x and add
> an initial nvmem fixed layout.

I build a kernel with the nvmem patches and your patches from this
series and tried it out on my NanoPi R5S with a RK3568 SoC.
Navigating to ``/sys/bus/nvmem/devices/rockchip-otp0/cells`` and then
doing ``hexdump <cell-name>`` showed all kind of values.

Then I did the same with my PineNote with a RK3566 SoC and that gave
different values, except for npu-leakage, which I guess is fine?
So feel free to include my

Tested-by: Diederik de Haas <diederik@cknow-tech.com>  # NanoPi R5S, PineNote

Cheers,
  Diederik

> Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> ---
>  arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 46 +++++++++++++++++++
>  1 file changed, 46 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> index 68b48606f601..c8321af7de7d 100644
> --- a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi
> @@ -1123,6 +1123,52 @@ rng: rng@fe388000 {
>  		status = "disabled";
>  	};
>  
> +	otp: efuse@fe38c000 {
> +		compatible = "rockchip,rk3568-otp";
> +		reg = <0x0 0xfe38c000 0x0 0x4000>;
> +		clocks = <&cru CLK_OTPC_NS_USR>, <&cru PCLK_OTPC_NS>,
> +			 <&cru PCLK_OTPPHY>, <&cru CLK_OTPC_NS_SBPI>;
> +		clock-names = "otp", "apb_pclk", "phy", "sbpi";
> +		resets = <&cru SRST_OTPC_NS_USR>, <&cru SRST_P_OTPC_NS>,
> +			 <&cru SRST_OTPPHY>, <&cru SRST_OTPC_NS_SBPI>;
> +		reset-names = "otp", "apb", "phy", "sbpi";
> +
> +		nvmem-layout {
> +			compatible = "fixed-layout";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			cpu_code: cpu-code@2 {
> +				reg = <0x02 0x2>;
> +			};
> +
> +			otp_cpu_version: cpu-version@8 {
> +				reg = <0x08 0x1>;
> +				bits = <3 3>;
> +			};
> +
> +			otp_id: id@a {
> +				reg = <0x0a 0x10>;
> +			};
> +
> +			cpu_leakage: cpu-leakage@1a {
> +				reg = <0x1a 0x1>;
> +			};
> +
> +			log_leakage: log-leakage@1b {
> +				reg = <0x1b 0x1>;
> +			};
> +
> +			npu_leakage: npu-leakage@1c {
> +				reg = <0x1c 0x1>;
> +			};
> +
> +			gpu_leakage: gpu-leakage@1d {
> +				reg = <0x1d 0x1>;
> +			};
> +		};
> +	};
> +
>  	i2s0_8ch: i2s@fe400000 {
>  		compatible = "rockchip,rk3568-i2s-tdm";
>  		reg = <0x0 0xfe400000 0x0 0x1000>;



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x
  2026-03-12 21:30 [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
                   ` (2 preceding siblings ...)
  2026-03-12 21:30 ` [PATCH v2 3/3] arm64: dts: rockchip: Enable OTP controller for RK3528 Heiko Stuebner
@ 2026-03-24 19:53 ` Heiko Stuebner
  3 siblings, 0 replies; 6+ messages in thread
From: Heiko Stuebner @ 2026-03-24 19:53 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, kever.yang,
	finley.xiao, w, jonas


On Thu, 12 Mar 2026 22:30:16 +0100, Heiko Stuebner wrote:
> This is a companion series to the binding+driver changes [0], that adds
> the relevant OTP controller nodes to the core SoC devicetrees.
> 
> [0] https://lore.kernel.org/linux-rockchip/20260205211901.490181-1-heiko@sntech.de/T/#t
> 
> changes in v2:
> - rename node-names to be efuse@... following the dt-specfication
>   2.2.2. Generic Names Recommendation
> 
> [...]

Applied, thanks!

[1/3] arm64: dts: rockchip: Enable OTP controller for RK3562
      commit: d7a73e63b9c4c1e31bf7898d45418eaa69790057
[2/3] arm64: dts: rockchip: Enable OTP controller for RK356x
      commit: 2d7b5e1c962158833ef778a09d9293ed710fcc84
[3/3] arm64: dts: rockchip: Enable OTP controller for RK3528
      commit: a956b54f33de96e0d879e679c22a717d390e1afa

Best regards,
-- 
Heiko Stuebner <heiko@sntech.de>


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-03-24 19:54 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12 21:30 [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner
2026-03-12 21:30 ` [PATCH v2 1/3] arm64: dts: rockchip: Enable OTP controller for RK3562 Heiko Stuebner
2026-03-12 21:30 ` [PATCH v2 2/3] arm64: dts: rockchip: Enable OTP controller for RK356x Heiko Stuebner
     [not found]   ` <DH4BCBM75EA1.3S6GHUO64SAMA@cknow-tech.com>
2026-03-16 16:22     ` Diederik de Haas
2026-03-12 21:30 ` [PATCH v2 3/3] arm64: dts: rockchip: Enable OTP controller for RK3528 Heiko Stuebner
2026-03-24 19:53 ` [PATCH v2 0/3] Add devicetree nodes for RK3528, RK3562 and RK356x Heiko Stuebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox