public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
@ 2025-08-12  8:52 Heiko Stuebner
  2025-08-12  8:52 ` [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar Heiko Stuebner
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Heiko Stuebner @ 2025-08-12  8:52 UTC (permalink / raw)
  To: heiko
  Cc: quentin.schulz, linux-arm-kernel, linux-rockchip, linux-kernel,
	Heiko Stuebner

From: Heiko Stuebner <heiko.stuebner@cherry.de>

Enable the NPU cores and their mmus and wire up the supply-regulator.
The regulator itself was already defined, but it does not need to be
always on - the npu can control it.

Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
---
 .../arm64/boot/dts/rockchip/rk3588-tiger.dtsi | 35 ++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
index f4bebd25e938..9859f31d2894 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
@@ -194,7 +194,6 @@ vdd_npu_s0: regulator@42 {
 		reg = <0x42>;
 		fcs,suspend-voltage-selector = <1>;
 		regulator-name = "vdd_npu_s0";
-		regulator-always-on;
 		regulator-boot-on;
 		regulator-min-microvolt = <550000>;
 		regulator-max-microvolt = <950000>;
@@ -337,6 +336,10 @@ &pd_gpu {
 	domain-supply = <&vdd_gpu_s0>;
 };
 
+&pd_npu {
+	domain-supply = <&vdd_npu_s0>;
+};
+
 &pinctrl {
 	emmc {
 		emmc_reset: emmc-reset {
@@ -375,6 +378,36 @@ &pwm0 {
 	pinctrl-names = "default";
 };
 
+&rknn_core_0 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_core_1 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_core_2 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_mmu_0 {
+	status = "okay";
+};
+
+&rknn_mmu_1 {
+	status = "okay";
+};
+
+&rknn_mmu_2 {
+	status = "okay";
+};
+
 &saradc {
 	vref-supply = <&vcc_1v8_s0>;
 	status = "okay";
-- 
2.47.2



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

* [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar
  2025-08-12  8:52 [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Heiko Stuebner
@ 2025-08-12  8:52 ` Heiko Stuebner
  2025-11-27 13:28   ` Quentin Schulz
  2025-08-22 15:16 ` [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Quentin Schulz
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Heiko Stuebner @ 2025-08-12  8:52 UTC (permalink / raw)
  To: heiko
  Cc: quentin.schulz, linux-arm-kernel, linux-rockchip, linux-kernel,
	Heiko Stuebner

From: Heiko Stuebner <heiko.stuebner@cherry.de>

Enable the NPU cores and their mmus and wire up the supply-regulator.
The regulator itself was already defined, but it does not need to be
always on - the npu can control it.

Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
---
 .../arm64/boot/dts/rockchip/rk3588-jaguar.dts | 35 ++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts b/arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts
index bcd15c1c930b..6de2ffe7fb87 100644
--- a/arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts
@@ -428,7 +428,6 @@ vdd_npu_s0: regulator@42 {
 		reg = <0x42>;
 		fcs,suspend-voltage-selector = <1>;
 		regulator-name = "vdd_npu_s0";
-		regulator-always-on;
 		regulator-boot-on;
 		regulator-min-microvolt = <550000>;
 		regulator-max-microvolt = <950000>;
@@ -607,6 +606,10 @@ &pd_gpu {
 	domain-supply = <&vdd_gpu_s0>;
 };
 
+&pd_npu {
+	domain-supply = <&vdd_npu_s0>;
+};
+
 &pinctrl {
 	emmc {
 		emmc_reset: emmc-reset {
@@ -661,6 +664,36 @@ typec1_sbu_dc_pins: typec1-sbu-dc-pins {
 	};
 };
 
+&rknn_core_0 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_core_1 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_core_2 {
+	npu-supply = <&vdd_npu_s0>;
+	sram-supply = <&vdd_npu_s0>;
+	status = "okay";
+};
+
+&rknn_mmu_0 {
+	status = "okay";
+};
+
+&rknn_mmu_1 {
+	status = "okay";
+};
+
+&rknn_mmu_2 {
+	status = "okay";
+};
+
 &saradc {
 	vref-supply = <&vcc_1v8_s0>;
 	status = "okay";
-- 
2.47.2



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

* Re: [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
  2025-08-12  8:52 [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Heiko Stuebner
  2025-08-12  8:52 ` [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar Heiko Stuebner
@ 2025-08-22 15:16 ` Quentin Schulz
  2025-11-28 10:32 ` Quentin Schulz
  2026-01-06 18:41 ` Heiko Stuebner
  3 siblings, 0 replies; 7+ messages in thread
From: Quentin Schulz @ 2025-08-22 15:16 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, Heiko Stuebner

Hi Heiko,

On 8/12/25 10:52 AM, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner@cherry.de>
> 
> Enable the NPU cores and their mmus and wire up the supply-regulator.
> The regulator itself was already defined, but it does not need to be
> always on - the npu can control it.
> 
> Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
> ---
>   .../arm64/boot/dts/rockchip/rk3588-tiger.dtsi | 35 ++++++++++++++++++-
>   1 file changed, 34 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
> index f4bebd25e938..9859f31d2894 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3588-tiger.dtsi
> @@ -194,7 +194,6 @@ vdd_npu_s0: regulator@42 {
>   		reg = <0x42>;
>   		fcs,suspend-voltage-selector = <1>;
>   		regulator-name = "vdd_npu_s0";
> -		regulator-always-on;
>   		regulator-boot-on;

I'm not sure we need this property?

The binding states:

"""
       This property is intended to only be used for regulators where
       software cannot read the state of the regulator.
"""

but the rk860 we use here can report its state if I read the driver 
properly.

If that is correct the same "mistake" was done for other RK3588 boards 
which enabled the NPU recently.

The diff makes sense compared to other RK3588 boards' recent NPU support 
addition so I guess this is fine :)

I am currently unable to test this though but considering that this is 
an IP within the SoC which only differs between different boards by its 
regulator feeding the controller(s) and that this change looks in sync 
with our hardware design, I guess we don't need to wait for me to be 
able to test this :)

Same remarks for the next patch in the series.

Cheers,
Quentin


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

* Re: [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar
  2025-08-12  8:52 ` [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar Heiko Stuebner
@ 2025-11-27 13:28   ` Quentin Schulz
  0 siblings, 0 replies; 7+ messages in thread
From: Quentin Schulz @ 2025-11-27 13:28 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, Heiko Stuebner

Hi Heiko,

On 8/12/25 10:52 AM, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner@cherry.de>
> 
> Enable the NPU cores and their mmus and wire up the supply-regulator.
> The regulator itself was already defined, but it does not need to be
> always on - the npu can control it.
> 

My apologies for the time it took me to review and test this.

I tested with aarch64 defconfig + DRM_ACCEL_ROCKET=m loosely following 
the instructions from https://docs.mesa3d.org/teflon.html and the script 
finishes, so I guess that means it works.

I have managed to get an Oops with another defconfig, but that is not 
related to DT so not a blocker for merging this.

Thus:

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Tested-by: Quentin Schulz <quentin.schulz@cherry.de>

Note that I have the same remark about regulator-boot-on property in 
vdd_npu_s0 I made[1] for Tiger here.

[1] 
https://lore.kernel.org/linux-rockchip/d784230e-49f4-49e9-be4a-bc7c00020cfb@cherry.de/

Thanks!
Quentin


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

* Re: [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
  2025-08-12  8:52 [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Heiko Stuebner
  2025-08-12  8:52 ` [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar Heiko Stuebner
  2025-08-22 15:16 ` [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Quentin Schulz
@ 2025-11-28 10:32 ` Quentin Schulz
  2026-01-06 18:52   ` Heiko Stuebner
  2026-01-06 18:41 ` Heiko Stuebner
  3 siblings, 1 reply; 7+ messages in thread
From: Quentin Schulz @ 2025-11-28 10:32 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, Heiko Stuebner

Hi Heiko,

On 8/12/25 10:52 AM, Heiko Stuebner wrote:
> From: Heiko Stuebner <heiko.stuebner@cherry.de>
> 
> Enable the NPU cores and their mmus and wire up the supply-regulator.
> The regulator itself was already defined, but it does not need to be
> always on - the npu can control it.
> 
> Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>

Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
Tested-by: Quentin Schulz <quentin.schulz@cherry.de>

I still have the same remark about regulator-boot-on but this isn't a 
blocker per-se.

The Oops I alluded to in my answer to the Jaguar patch is triggered by 
making DRM_ACCEL_ROCKET driver built-in instead of as a module. I'm not 
sure how much I will debug this on my side, I'll prolly just report this 
on the ML in a few hours.

Thanks!
Quentin


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

* Re: [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
  2025-08-12  8:52 [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Heiko Stuebner
                   ` (2 preceding siblings ...)
  2025-11-28 10:32 ` Quentin Schulz
@ 2026-01-06 18:41 ` Heiko Stuebner
  3 siblings, 0 replies; 7+ messages in thread
From: Heiko Stuebner @ 2026-01-06 18:41 UTC (permalink / raw)
  To: Heiko Stuebner
  Cc: quentin.schulz, linux-arm-kernel, linux-rockchip, linux-kernel,
	Heiko Stuebner


On Tue, 12 Aug 2025 10:52:12 +0200, Heiko Stuebner wrote:
> Enable the NPU cores and their mmus and wire up the supply-regulator.
> The regulator itself was already defined, but it does not need to be
> always on - the npu can control it.
> 
> 

Applied, thanks!

[1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
      commit: 8fd18d9b7b74bbd5ee5c562c2b94fdb7a356867e
[2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar
      commit: 843b912c7241ed0259f6234243da05e10ce67c0f

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


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

* Re: [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger
  2025-11-28 10:32 ` Quentin Schulz
@ 2026-01-06 18:52   ` Heiko Stuebner
  0 siblings, 0 replies; 7+ messages in thread
From: Heiko Stuebner @ 2026-01-06 18:52 UTC (permalink / raw)
  To: Quentin Schulz
  Cc: linux-arm-kernel, linux-rockchip, linux-kernel, Heiko Stuebner

Am Freitag, 28. November 2025, 11:32:17 Mitteleuropäische Normalzeit schrieb Quentin Schulz:
> Hi Heiko,
> 
> On 8/12/25 10:52 AM, Heiko Stuebner wrote:
> > From: Heiko Stuebner <heiko.stuebner@cherry.de>
> > 
> > Enable the NPU cores and their mmus and wire up the supply-regulator.
> > The regulator itself was already defined, but it does not need to be
> > always on - the npu can control it.
> > 
> > Signed-off-by: Heiko Stuebner <heiko.stuebner@cherry.de>
> 
> Reviewed-by: Quentin Schulz <quentin.schulz@cherry.de>
> Tested-by: Quentin Schulz <quentin.schulz@cherry.de>
> 
> I still have the same remark about regulator-boot-on but this isn't a 
> blocker per-se.
> 
> The Oops I alluded to in my answer to the Jaguar patch is triggered by 
> making DRM_ACCEL_ROCKET driver built-in instead of as a module. I'm not 
> sure how much I will debug this on my side, I'll prolly just report this 
> on the ML in a few hours.

Just for people stumbling over this, the cause is the pm-domains
being on on boot and the iommu after probing disabling the domain.

See discussion in
https://lore.kernel.org/linux-rockchip/20251216055247.13150-1-rmxpzlb@gmail.com/




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

end of thread, other threads:[~2026-01-06 18:53 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-12  8:52 [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Heiko Stuebner
2025-08-12  8:52 ` [PATCH 2/2] arm64: dts: rockchip: enable NPU on rk3588-jaguar Heiko Stuebner
2025-11-27 13:28   ` Quentin Schulz
2025-08-22 15:16 ` [PATCH 1/2] arm64: dts: rockchip: enable NPU on rk3588-tiger Quentin Schulz
2025-11-28 10:32 ` Quentin Schulz
2026-01-06 18:52   ` Heiko Stuebner
2026-01-06 18:41 ` Heiko Stuebner

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