Devicetree
 help / color / mirror / Atom feed
* [PATCH RFC 0/2] riscv: dts: spacemit: Enable PowerVR GPU on OrangePi RV2
@ 2026-10-15 18:56 Iker Pedrosa
  2026-10-15 18:56 ` [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node Iker Pedrosa
  2026-10-15 18:56 ` [PATCH RFC 2/2] riscv: dts: spacemit: k1-orangepi-rv2: enable GPU Iker Pedrosa
  0 siblings, 2 replies; 4+ messages in thread
From: Iker Pedrosa @ 2026-10-15 18:56 UTC (permalink / raw)
  To: Alessio Belle, Luigi Santivetti, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Yixun Lan, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Alexandre Ghiti
  Cc: imagination, dri-devel, devicetree, linux-kernel, linux-riscv,
	spacemit, Iker Pedrosa

Enable the Imagination PowerVR Rogue GPU (BXE-2-32) on the SpacemiT K1
SoC for the OrangePi RV2 board.

This series depends on:
- Yixun Lan's power domain series [1], which provides the genpd-based
  GPU power domain driver required for proper power sequencing.
- Baihui Liang's dt-bindings patch [2], which adds the spacemit,k1-gpu
  compatible string to the img,powervr-rogue binding.

The GPU firmware is not yet available upstream. A copy can be found
at [3].

With this series applied on top of [1] and [2], the full GPU bring-up
path works end-to-end on hardware:
- Power domain: GPU power island on/off via APMU
- Clock: GPU clock enabled/gated through CCU
- Reset: GPU reset line deasserted
- Firmware: PowerVR RISC-V firmware loads and signals ready
- DMA: dma-ranges correctly maps CPU-to-GPU physical addresses
- DRM: kernel exposes /dev/dri/card0 and /dev/dri/renderD128
- IRQ: GPU interrupt registered, firmware watchdog running

Userspace rendering requires Mesa's PowerVR Vulkan driver
(imagination-experimental).

[1] https://lore.kernel.org/linux-riscv/20261008-04-k3-pm-support-v2-0-6f778a53dd2d@kernel.org/
[2] https://lore.kernel.org/linux-riscv/20261015-spacemit-gpu-binding-v1-1-a7a23c7e7788@linux.spacemit.com/
[2] https://gitlab.freedesktop.org/imagination/linux-firmware/-/blob/powervr/powervr/rogue_36.29.52.182_v1.fw

Signed-off-by: Iker Pedrosa <ikerpedrosam@gmail.com>
---
Iker Pedrosa (2):
      riscv: dts: spacemit: k1: add PowerVR GPU device node
      riscv: dts: spacemit: k1-orangepi-rv2: enable GPU

 arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts |  4 ++++
 arch/riscv/boot/dts/spacemit/k1.dtsi             | 12 ++++++++++++
 2 files changed, 16 insertions(+)
---
base-commit: 7e986b457d43edf8dd3eb3f6c34e55e92cd545f3
change-id: 20260413-orangepi-gpu-02d839d6506f

Best regards,
-- 
Iker Pedrosa <ikerpedrosam@gmail.com>


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

* [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node
  2026-10-15 18:56 [PATCH RFC 0/2] riscv: dts: spacemit: Enable PowerVR GPU on OrangePi RV2 Iker Pedrosa
@ 2026-10-15 18:56 ` Iker Pedrosa
  2026-10-15 19:06   ` sashiko-bot
  2026-10-15 18:56 ` [PATCH RFC 2/2] riscv: dts: spacemit: k1-orangepi-rv2: enable GPU Iker Pedrosa
  1 sibling, 1 reply; 4+ messages in thread
From: Iker Pedrosa @ 2026-10-15 18:56 UTC (permalink / raw)
  To: Alessio Belle, Luigi Santivetti, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Yixun Lan, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Alexandre Ghiti
  Cc: imagination, dri-devel, devicetree, linux-kernel, linux-riscv,
	spacemit, Iker Pedrosa

Add device tree node for the Imagination Technologies PowerVR Rogue GPU
(BVNC 36.29.52.182 / BXE-2-32) found in the Spacemit K1 SoC.

The GPU is located at address 0xcac00000 and uses:
- CLK_GPU for core clock from APMU controller
- RESET_GPU for reset control from APMU controller
- K1_PMDOMAIN_GPU for power management from syscon_apmu provider
- IRQ 75 for interrupt handling

Disabled by default; boards enable it individually.

Signed-off-by: Iker Pedrosa <ikerpedrosam@gmail.com>
---
 arch/riscv/boot/dts/spacemit/k1.dtsi | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
index 3fabfd34114b..82cade2f76fe 100644
--- a/arch/riscv/boot/dts/spacemit/k1.dtsi
+++ b/arch/riscv/boot/dts/spacemit/k1.dtsi
@@ -5,6 +5,7 @@
 
 #include <dt-bindings/clock/spacemit,k1-syscon.h>
 #include <dt-bindings/phy/phy.h>
+#include <dt-bindings/power/spacemit,k1-power.h>
 
 #include "k1-pdma.h"
 
@@ -1119,6 +1120,17 @@ multimedia-bus {
 			#size-cells = <2>;
 			dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
 				     <0x0 0x80000000 0x1 0x00000000 0x3 0x80000000>;
+
+			gpu: gpu@cac00000 {
+				compatible = "spacemit,k1-gpu", "img,img-bxe-2-32", "img,img-rogue";
+				reg = <0x0 0xcac00000 0x0 0x80000>;
+				interrupts = <75>;
+				clocks = <&syscon_apmu CLK_GPU>;
+				clock-names = "core";
+				resets = <&syscon_apmu RESET_GPU>;
+				power-domains = <&syscon_apmu K1_PMDOMAIN_GPU>;
+				status = "disabled";
+			};
 		};
 
 		network-bus {

-- 
2.56.0


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

* [PATCH RFC 2/2] riscv: dts: spacemit: k1-orangepi-rv2: enable GPU
  2026-10-15 18:56 [PATCH RFC 0/2] riscv: dts: spacemit: Enable PowerVR GPU on OrangePi RV2 Iker Pedrosa
  2026-10-15 18:56 ` [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node Iker Pedrosa
@ 2026-10-15 18:56 ` Iker Pedrosa
  1 sibling, 0 replies; 4+ messages in thread
From: Iker Pedrosa @ 2026-10-15 18:56 UTC (permalink / raw)
  To: Alessio Belle, Luigi Santivetti, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Yixun Lan, Paul Walmsley,
	Palmer Dabbelt, Albert Ou, Alexandre Ghiti
  Cc: imagination, dri-devel, devicetree, linux-kernel, linux-riscv,
	spacemit, Iker Pedrosa

Enable the PowerVR Rogue GPU on the OrangePi RV2 board by setting the
GPU device node status to "okay".

The GPU will use the clock, reset, and power management resources
defined in the k1.dtsi SoC device tree.

Signed-off-by: Iker Pedrosa <ikerpedrosam@gmail.com>
---
 arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts
index b907a1396b21..cc375dd1a77d 100644
--- a/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-orangepi-rv2.dts
@@ -384,3 +384,7 @@ &sdhci0 {
 	sd-uhs-sdr104;
 	status = "okay";
 };
+
+&gpu {
+	status = "okay";
+};

-- 
2.56.0


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

* Re: [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node
  2026-10-15 18:56 ` [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node Iker Pedrosa
@ 2026-10-15 19:06   ` sashiko-bot
  0 siblings, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-10-15 19:06 UTC (permalink / raw)
  To: Iker Pedrosa; +Cc: dri-devel, devicetree, robh, conor+dt

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] dts: build failure due to missing k1-power.h dt-binding header
- [Low] dts: undocumented compatible strings for spacemit k1-gpu
--

commit 8e44783c41b2ae5db8c6c7e6e7e39b06ba8d49af
Author: Iker Pedrosa <ikerpedrosam@gmail.com>

riscv: dts: spacemit: k1: add PowerVR GPU device node

Add device tree node for the Imagination Technologies PowerVR Rogue GPU
(BVNC 36.29.52.182 / BXE-2-32) found in the Spacemit K1 SoC.

> diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spacemit/k1.dtsi
> index 3fabfd34114b2..82cade2f76fe4 100644
> --- a/arch/riscv/boot/dts/spacemit/k1.dtsi
> +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi
> @@ -5,6 +5,7 @@
>  
>  #include <dt-bindings/clock/spacemit,k1-syscon.h>
>  #include <dt-bindings/phy/phy.h>
> +#include <dt-bindings/power/spacemit,k1-power.h>

[Severity: Low]
Does this header exist in the tree? It doesn't appear to be added in this
patch or in the tree yet, which causes a fatal preprocessor error and
compilation failure.

[ ... ]

> @@ -1119,6 +1120,17 @@ multimedia-bus {
>  			#size-cells = <2>;
>  			dma-ranges = <0x0 0x00000000 0x0 0x00000000 0x0 0x80000000>,
>  				     <0x0 0x80000000 0x1 0x00000000 0x3 0x80000000>;
> +
> +			gpu: gpu@cac00000 {
> +				compatible = "spacemit,k1-gpu", "img,img-bxe-2-32", "img,img-rogue";

[Severity: Low]
Are these compatible strings documented in a DT binding schema?

"spacemit,k1-gpu" and "img,img-bxe-2-32" appear to be undocumented, which will
cause dt_binding_check to fail. Omitting them from the schema also means
their constraints (like required clocks or power domains) won't be properly
validated.

> +				reg = <0x0 0xcac00000 0x0 0x80000>;
> +				interrupts = <75>;
> +				clocks = <&syscon_apmu CLK_GPU>;
> +				clock-names = "core";
> +				resets = <&syscon_apmu RESET_GPU>;
> +				power-domains = <&syscon_apmu K1_PMDOMAIN_GPU>;

[Severity: Low]
Is it possible to build this node? This relies on K1_PMDOMAIN_GPU which was
presumably provided by the missing spacemit,k1-power.h header mentioned
above.

> +				status = "disabled";
> +			};
>  		};

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261015-orangepi-gpu-v1-0-03566a615660@gmail.com?part=1

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

end of thread, other threads:[~2026-10-15 19:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-15 18:56 [PATCH RFC 0/2] riscv: dts: spacemit: Enable PowerVR GPU on OrangePi RV2 Iker Pedrosa
2026-10-15 18:56 ` [PATCH RFC 1/2] riscv: dts: spacemit: k1: add PowerVR GPU device node Iker Pedrosa
2026-10-15 19:06   ` sashiko-bot
2026-10-15 18:56 ` [PATCH RFC 2/2] riscv: dts: spacemit: k1-orangepi-rv2: enable GPU Iker Pedrosa

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