Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH v3 0/5] Add ARM Mali Midgard device tree bindings and gpu node for rk3288

244 views
Skip to first unread message

Guillaume Tucker

unread,
Apr 19, 2017, 4:10:05 AM4/19/17
to
The ARM Mali Midgard GPU kernel driver is only available
out-of-tree and is not going to be merged in its current form.
However, it would be useful to have its device tree bindings
merged. In particular, this would enable distributions to create
working driver packages (dkms...) without having to patch the
kernel.

The bindings for the earlier Mali Utgard GPU family have already
been merged, so this is essentially the same scenario but for
newer GPUs (Mali-T604 ~ Mali-T880).

This series of patches first imports the bindings from the latest
driver release with some clean-up then adds a gpu node for the
rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
Firefly, Veyron Minnie and Jerry boards board using Mali kernel
driver r16p0 and r12p0 user-space binary.

Changes since v1:
- enabled gpu on rk3288-veyron boards

Changes since v2:
- removed "clk-names" property and "clk_mali" name
- converted values of "interrupt-names" property to
lower-case: "job", "mmu" and "gpu"
- replaced dt compatible strings with list of all Midgard GPU variants and
optional vendors
- cleaned up gpu node example


Enric Balletbo i Serra (1):
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-veyron

Guillaume Tucker (4):
dt-bindings: gpu: add bindings for the ARM Mali Midgard GPU
ARM: dts: rockchip: add ARM Mali GPU node for rk3288
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-rock2-som
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-firefly

.../devicetree/bindings/gpu/arm,mali-midgard.txt | 57 ++++++++++++++++++++++
arch/arm/boot/dts/rk3288-firefly.dtsi | 5 ++
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 ++
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 ++
arch/arm/boot/dts/rk3288.dtsi | 22 +++++++++
5 files changed, 94 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt

--
2.11.0

Guillaume Tucker

unread,
Apr 19, 2017, 4:10:05 AM4/19/17
to
From: Enric Balletbo i Serra <enric.b...@collabora.com>

Add reference to the Mali GPU device tree node on rk3288-veyron.
Tested on Minnie and Jerry boards.

Signed-off-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
index 5d1eb0a25827..9847d5c6db3b 100644
--- a/arch/arm/boot/dts/rk3288-veyron.dtsi
+++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
@@ -447,6 +447,11 @@
status = "okay";
};

+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};
+
&wdt {
status = "okay";
};
--
2.11.0

Guillaume Tucker

unread,
Apr 19, 2017, 4:10:06 AM4/19/17
to
The ARM Mali Midgard GPU family is present in a number of SoCs
from many different vendors such as Samsung Exynos and Rockchip.

Import the device tree bindings documentation from the r16p0
release of the Mali Midgard GPU kernel driver:

https://developer.arm.com/-/media/Files/downloads/mali-drivers/kernel/mali-midgard-gpu/TX011-SW-99002-r16p0-00rel0.tgz

The "compatible" property strings have been redesigned to explicitly
list all the Mali Midgard GPU types and include optional vendor ones.

The "clock-names" property has been dropped as only one clock is used
by the Mali Midgard driver which now needs to call clk_get with NULL.

The "interrupt-names" property values have been converted to
lower-case: "job", "mmu" and "gpu".

The following optional bindings have been omitted in this initial
version as they are only used in very specific cases:

* snoop_enable_smc
* snoop_disable_smc
* jm_config
* power_model
* system-coherency
* ipa-model

The example has been simplified accordingly.

The copyright and GPL licence header has been removed as deemed not
necessary.

CC: John Reitan <john....@arm.com>
Tested-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
.../devicetree/bindings/gpu/arm,mali-midgard.txt | 57 ++++++++++++++++++++++
1 file changed, 57 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt

diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
new file mode 100644
index 000000000000..917c4f8d178f
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
@@ -0,0 +1,57 @@
+ARM Mali Midgard GPU
+====================
+
+Required properties:
+
+- compatible :
+ * Must be one of the following:
+ + "arm,mali-t60x"
+ + "arm,mali-t62x"
+ + "arm,mali-t720"
+ + "arm,mali-t760"
+ + "arm,mali-t820"
+ + "arm,mali-t830"
+ + "arm,mali-t860"
+ + "arm,mali-t880"
+ * And, optionally, one of the vendor specific compatible:
+ + "amlogic,meson-gxm-mali"
+
+- reg : Physical base address of the device and length of the register area.
+
+- interrupts : Contains the three IRQ lines required by Mali Midgard devices.
+
+- interrupt-names : Contains the names of IRQ resources in the order they were
+ provided in the interrupts property. Must contain: "job", "mmu", "gpu".
+
+
+Optional properties:
+
+- clocks : Phandle to clock for the Mali Midgard device.
+
+- mali-supply : Phandle to regulator for the Mali device. Refer to
+ Documentation/devicetree/bindings/regulator/regulator.txt for details.
+
+- operating-points : Refer to Documentation/devicetree/bindings/power/opp.txt
+ for details.
+
+
+Example for a Mali-T602:
+
+gpu@fc010000 {
+ compatible = "arm,mali-t60x", "arm,mali-midgard";
+ reg = <0xfc010000 0x4000>;
+ interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
+ interrupt-names = "job", "mmu", "gpu";
+ clocks = <&pclk_mali>;
+ mali-supply = <&vdd_mali>;
+ operating-points = <
+ /* KHz uV */
+ 533000 1250000,
+ 450000 1150000,
+ 400000 1125000,
+ 350000 1075000,
+ 266000 1025000,
+ 160000 925000,
+ 100000 912500,
+ >;
+};
--
2.11.0

Guillaume Tucker

unread,
Apr 19, 2017, 4:10:06 AM4/19/17
to
Add Mali GPU device tree node for the rk3288 SoC, with devfreq
opp table.

Tested-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288.dtsi | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index df8a0dbe9d91..187eed528f83 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -43,6 +43,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/clock/rk3288-cru.h>
+#include <dt-bindings/power/rk3288-power.h>
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/power/rk3288-power.h>
#include <dt-bindings/soc/rockchip,boot-mode.h>
@@ -227,6 +228,27 @@
ports = <&vopl_out>, <&vopb_out>;
};

+ gpu: mali@ffa30000 {
+ compatible = "arm,mali-t760", "arm,mali-midgard";
+ reg = <0xffa30000 0x10000>;
+ interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "job", "mmu", "gpu";
+ clocks = <&cru ACLK_GPU>;
+ operating-points = <
+ /* KHz uV */
+ 100000 950000
+ 200000 950000
+ 300000 1000000
+ 400000 1100000
+ 500000 1200000
+ 600000 1250000
+ >;
+ power-domains = <&power RK3288_PD_GPU>;
+ status = "disabled";
+ };
+
sdmmc: dwmmc@ff0c0000 {
compatible = "rockchip,rk3288-dw-mshc";
max-frequency = <150000000>;
--
2.11.0

Guillaume Tucker

unread,
Apr 19, 2017, 4:20:05 AM4/19/17
to
Add reference to the Mali GPU device tree node on the
rk3288-rock2-som platform. Tested on a Radxa Rock2 Square board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-rock2-som.dtsi b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
index 1c0bbc9b928b..f694867fa46a 100644
--- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi
+++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
@@ -301,3 +301,8 @@
&wdt {
status = "okay";
};
+
+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};
--
2.11.0

Guillaume Tucker

unread,
Apr 19, 2017, 4:20:05 AM4/19/17
to
Add reference to the Mali GPU device tree node on rk3288-firefly.
Tested on Firefly board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-firefly.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-firefly.dtsi b/arch/arm/boot/dts/rk3288-firefly.dtsi
index 10793ac18599..f520589493b4 100644
--- a/arch/arm/boot/dts/rk3288-firefly.dtsi
+++ b/arch/arm/boot/dts/rk3288-firefly.dtsi
@@ -594,3 +594,8 @@

Heiko Stuebner

unread,
Apr 19, 2017, 5:00:05 AM4/19/17
to
Am Mittwoch, 19. April 2017, 09:06:18 CEST schrieb Guillaume Tucker:
> Add Mali GPU device tree node for the rk3288 SoC, with devfreq
> opp table.
>
> Tested-by: Enric Balletbo i Serra <enric.b...@collabora.com>
> Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
> ---
> arch/arm/boot/dts/rk3288.dtsi | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
> index df8a0dbe9d91..187eed528f83 100644
> --- a/arch/arm/boot/dts/rk3288.dtsi
> +++ b/arch/arm/boot/dts/rk3288.dtsi
> @@ -43,6 +43,7 @@
> #include <dt-bindings/interrupt-controller/arm-gic.h>
> #include <dt-bindings/pinctrl/rockchip.h>
> #include <dt-bindings/clock/rk3288-cru.h>
> +#include <dt-bindings/power/rk3288-power.h>
> #include <dt-bindings/thermal/thermal.h>
> #include <dt-bindings/power/rk3288-power.h>
> #include <dt-bindings/soc/rockchip,boot-mode.h>
> @@ -227,6 +228,27 @@
> ports = <&vopl_out>, <&vopb_out>;
> };
>
> + gpu: mali@ffa30000 {

please sort nodes by address. ffa30000 should be placed below hdmi@ff980000
and above qos@ffaa0000 .


> + compatible = "arm,mali-t760", "arm,mali-midgard";

As indicated before I don't trust that a generic binding will work for
everything, so I would feel safer if we had a "rockchip,rk3288-mali" in
front for future purposes, making it a

compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";


> + reg = <0xffa30000 0x10000>;
> + interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "job", "mmu", "gpu";
> + clocks = <&cru ACLK_GPU>;
> + operating-points = <
> + /* KHz uV */
> + 100000 950000
> + 200000 950000
> + 300000 1000000
> + 400000 1100000
> + 500000 1200000
> + 600000 1250000
> + >;

Wasn't there a wish for opp-v2 in a previous version?


Thanks
Heiko

Heiko Stuebner

unread,
Apr 19, 2017, 5:10:04 AM4/19/17
to
Please add a "rockchip,rk3288-mali" as well :-) , as I don't trust that the
generic compatible will be enough for all time and having that already
defined makes fixing the per soc things later a lot easier.


Thanks
Heiko

Guillaume Tucker

unread,
Apr 20, 2017, 1:50:05 AM4/20/17
to
Hi Heiko,
Sure, will fix that in v4.

>> + compatible = "arm,mali-t760", "arm,mali-midgard";
>
> As indicated before I don't trust that a generic binding will work for
> everything, so I would feel safer if we had a "rockchip,rk3288-mali" in
> front for future purposes, making it a
>
> compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";

OK, sorry I overlooked this part. I'll add it in v4 with a
vendor compatible string in the binding documentation.

>> + reg = <0xffa30000 0x10000>;
>> + interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
>> + <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
>> + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
>> + interrupt-names = "job", "mmu", "gpu";
>> + clocks = <&cru ACLK_GPU>;
>> + operating-points = <
>> + /* KHz uV */
>> + 100000 950000
>> + 200000 950000
>> + 300000 1000000
>> + 400000 1100000
>> + 500000 1200000
>> + 600000 1250000
>> + >;
>
> Wasn't there a wish for opp-v2 in a previous version?

Well it wasn't entirely clear to me in Rob's email whether it was
necessary to use opp-v2 now or rather if it would be a potential
option whenever opp-v2 was needed. If operating-points (v1) are
being deprecated then I can change that in my next patch v4.
Using operating-points-v2 with the Mali driver works as far as I
can tell on rk3288 so that's not an issue.

Thanks,
Guillaume

Guillaume Tucker

unread,
Apr 20, 2017, 2:00:05 AM4/20/17
to
Hi Heiko,
Sure, will do in patch v4.

>> +
>> +- reg : Physical base address of the device and length of the register area.
>> +
>> +- interrupts : Contains the three IRQ lines required by Mali Midgard devices.
>> +
>> +- interrupt-names : Contains the names of IRQ resources in the order they were
>> + provided in the interrupts property. Must contain: "job", "mmu", "gpu".
>> +
>> +
>> +Optional properties:
>> +
>> +- clocks : Phandle to clock for the Mali Midgard device.
>> +
>> +- mali-supply : Phandle to regulator for the Mali device. Refer to
>> + Documentation/devicetree/bindings/regulator/regulator.txt for details.
>> +
>> +- operating-points : Refer to Documentation/devicetree/bindings/power/opp.txt
>> + for details.

So I can simply change that to operating-points-v2. Both
versions can be used in practice but it sounds like
operating-points can just be ignored in this binding's
documentation. Could you please confirm?

Thanks,
Guillaume

Heiko Stuebner

unread,
Apr 20, 2017, 2:50:08 AM4/20/17
to
Hi Guillaume,
great, thanks :-)

>
> >> + reg = <0xffa30000 0x10000>;
> >> + interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
> >> + <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
> >> + <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
> >> + interrupt-names = "job", "mmu", "gpu";
> >> + clocks = <&cru ACLK_GPU>;
> >> + operating-points = <
> >> + /* KHz uV */
> >> + 100000 950000
> >> + 200000 950000
> >> + 300000 1000000
> >> + 400000 1100000
> >> + 500000 1200000
> >> + 600000 1250000
> >> + >;
> >
> > Wasn't there a wish for opp-v2 in a previous version?
>
> Well it wasn't entirely clear to me in Rob's email whether it was
> necessary to use opp-v2 now or rather if it would be a potential
> option whenever opp-v2 was needed. If operating-points (v1) are
> being deprecated then I can change that in my next patch v4.
> Using operating-points-v2 with the Mali driver works as far as I
> can tell on rk3288 so that's not an issue.

I don't care to much either way, just remembered it being mentioned
in the previous version. So lets see what Rob says.


Heiko

Guillaume Tucker

unread,
Apr 25, 2017, 9:20:04 AM4/25/17
to
Add reference to the Mali GPU device tree node on rk3288-firefly.
Tested on Firefly board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---

Guillaume Tucker

unread,
Apr 25, 2017, 9:20:05 AM4/25/17
to
Add reference to the Mali GPU device tree node on the
rk3288-rock2-som platform. Tested on a Radxa Rock2 Square board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-rock2-som.dtsi b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
index 1c0bbc9b928b..f694867fa46a 100644
--- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi
+++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
@@ -301,3 +301,8 @@

Guillaume Tucker

unread,
Apr 25, 2017, 9:20:05 AM4/25/17
to
From: Enric Balletbo i Serra <enric.b...@collabora.com>

Add reference to the Mali GPU device tree node on rk3288-veyron.
Tested on Minnie and Jerry boards.

Signed-off-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
index 5d1eb0a25827..9847d5c6db3b 100644
--- a/arch/arm/boot/dts/rk3288-veyron.dtsi
+++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
@@ -447,6 +447,11 @@
status = "okay";
};

+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};

Guillaume Tucker

unread,
Apr 25, 2017, 9:20:05 AM4/25/17
to
The ARM Mali Midgard GPU kernel driver is only available
out-of-tree and is not going to be merged in its current form.
However, it would be useful to have its device tree bindings
merged. In particular, this would enable distributions to create
working driver packages (dkms...) without having to patch the
kernel.

The bindings for the earlier Mali Utgard GPU family have already
been merged, so this is essentially the same scenario but for
newer GPUs (Mali-T604 ~ Mali-T880).

This series of patches first imports the bindings from the latest
driver release with some clean-up then adds a gpu node for the
rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
r16p0 and r12p0 user-space binary.


Changes since v1:
- enabled gpu on rk3288-veyron boards

Changes since v2:
- removed "clk-names" property and "clk_mali" name
- converted values of "interrupt-names" property to
lower-case: "job", "mmu" and "gpu"
- replaced dt compatible strings with list of all Midgard GPU variants and
optional vendors
- cleaned up gpu node example

Changes since v3:
- add "rockchip,rk3288-mali" vendor compatible string
- move gpu node at the right location in rk3288.dtsi
- use operating-points-v2 in documentation and rk3288.dtsi


Enric Balletbo i Serra (1):
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-veyron

Guillaume Tucker (4):
dt-bindings: gpu: add bindings for the ARM Mali Midgard GPU
ARM: dts: rockchip: add ARM Mali GPU node for rk3288
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-rock2-som
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-firefly

.../devicetree/bindings/gpu/arm,mali-midgard.txt | 82 ++++++++++++++++++++++
arch/arm/boot/dts/rk3288-firefly.dtsi | 5 ++
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 ++
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 ++
arch/arm/boot/dts/rk3288.dtsi | 43 ++++++++++++
5 files changed, 140 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt

--
2.11.0

Guillaume Tucker

unread,
Apr 25, 2017, 9:20:05 AM4/25/17
to
Add Mali GPU device tree node for the rk3288 SoC, with devfreq
opp table.

Tested-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288.dtsi | 43 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index df8a0dbe9d91..35969041eae2 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -43,6 +43,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/clock/rk3288-cru.h>
+#include <dt-bindings/power/rk3288-power.h>
#include <dt-bindings/thermal/thermal.h>
#include <dt-bindings/power/rk3288-power.h>
#include <dt-bindings/soc/rockchip,boot-mode.h>
@@ -1117,6 +1118,48 @@
};
};

+ gpu: mali@ffa30000 {
+ compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";
+ reg = <0xffa30000 0x10000>;
+ interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "job", "mmu", "gpu";
+ clocks = <&cru ACLK_GPU>;
+ operating-points-v2 = <&gpu_opp_table>;
+ power-domains = <&power RK3288_PD_GPU>;
+ status = "disabled";
+ };
+
+ gpu_opp_table: opp_table0 {
+ compatible = "operating-points-v2";
+
+ opp@100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ opp-microvolt = <950000>;
+ };
+ opp@200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ opp-microvolt = <950000>;
+ };
+ opp@300000000 {
+ opp-hz = /bits/ 64 <300000000>;
+ opp-microvolt = <1000000>;
+ };
+ opp@400000000 {
+ opp-hz = /bits/ 64 <400000000>;
+ opp-microvolt = <1100000>;
+ };
+ opp@500000000 {
+ opp-hz = /bits/ 64 <500000000>;
+ opp-microvolt = <1200000>;
+ };
+ opp@600000000 {
+ opp-hz = /bits/ 64 <600000000>;
+ opp-microvolt = <1250000>;
+ };
+ };
+
qos_gpu_r: qos@ffaa0000 {
compatible = "syscon";
reg = <0xffaa0000 0x20>;
--
2.11.0

Guillaume Tucker

unread,
May 3, 2017, 6:00:05 AM5/3/17
to
Add reference to the Mali GPU device tree node on the
rk3288-rock2-som platform. Tested on a Radxa Rock2 Square board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-rock2-som.dtsi b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
index 1c0bbc9b928b..f694867fa46a 100644
--- a/arch/arm/boot/dts/rk3288-rock2-som.dtsi
+++ b/arch/arm/boot/dts/rk3288-rock2-som.dtsi
@@ -301,3 +301,8 @@
&wdt {
status = "okay";
};
+
+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};
--
2.11.0

Guillaume Tucker

unread,
May 3, 2017, 6:00:05 AM5/3/17
to
From: Enric Balletbo i Serra <enric.b...@collabora.com>

Add reference to the Mali GPU device tree node on rk3288-veyron.
Tested on Minnie and Jerry boards.

Signed-off-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
index 5d1eb0a25827..9847d5c6db3b 100644
--- a/arch/arm/boot/dts/rk3288-veyron.dtsi
+++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
@@ -447,6 +447,11 @@
status = "okay";
};

+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};

Guillaume Tucker

unread,
May 3, 2017, 6:00:06 AM5/3/17
to
Add Mali GPU device tree node for the rk3288 SoC, with devfreq
opp table.

Tested-by: Enric Balletbo i Serra <enric.b...@collabora.com>
Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---

Guillaume Tucker

unread,
May 3, 2017, 6:00:08 AM5/3/17
to
Add reference to the Mali GPU device tree node on rk3288-firefly.
Tested on Firefly board.

Signed-off-by: Guillaume Tucker <guillaum...@collabora.com>
---
arch/arm/boot/dts/rk3288-firefly.dtsi | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/arch/arm/boot/dts/rk3288-firefly.dtsi b/arch/arm/boot/dts/rk3288-firefly.dtsi
index 10793ac18599..f520589493b4 100644
--- a/arch/arm/boot/dts/rk3288-firefly.dtsi
+++ b/arch/arm/boot/dts/rk3288-firefly.dtsi
@@ -594,3 +594,8 @@
&wdt {
status = "okay";
};
+
+&gpu {
+ mali-supply = <&vdd_gpu>;
+ status = "okay";
+};
--
2.11.0

Guillaume Tucker

unread,
May 3, 2017, 6:00:08 AM5/3/17
to
Changes since v4:
- removed wildcards (mali-t60x, -t62x)
- vendor compatible strings are not optional any more
- example updated accordingly, based on rk3288


Enric Balletbo i Serra (1):
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-veyron

Guillaume Tucker (4):
dt-bindings: gpu: add bindings for the ARM Mali Midgard GPU
ARM: dts: rockchip: add ARM Mali GPU node for rk3288
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-rock2-som
ARM: dts: rockchip: enable ARM Mali GPU on rk3288-firefly

.../devicetree/bindings/gpu/arm,mali-midgard.txt | 86 ++++++++++++++++++++++
arch/arm/boot/dts/rk3288-firefly.dtsi | 5 ++
arch/arm/boot/dts/rk3288-rock2-som.dtsi | 5 ++
arch/arm/boot/dts/rk3288-veyron.dtsi | 5 ++
arch/arm/boot/dts/rk3288.dtsi | 43 +++++++++++
5 files changed, 144 insertions(+)

Heiko Stübner

unread,
May 8, 2017, 12:30:06 PM5/8/17
to
Am Mittwoch, 3. Mai 2017, 10:56:24 CEST schrieb Guillaume Tucker:
> The ARM Mali Midgard GPU kernel driver is only available
> out-of-tree and is not going to be merged in its current form.
> However, it would be useful to have its device tree bindings
> merged. In particular, this would enable distributions to create
> working driver packages (dkms...) without having to patch the
> kernel.
>
> The bindings for the earlier Mali Utgard GPU family have already
> been merged, so this is essentially the same scenario but for
> newer GPUs (Mali-T604 ~ Mali-T880).
>
> This series of patches first imports the bindings from the latest
> driver release with some clean-up then adds a gpu node for the
> rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
> Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
> r16p0 and r12p0 user-space binary.

The actual devicetree parts are all Rockchip-specific, so I guess I'll just
pick up the whole series, including the binding doc, after the merge
window if nobody complains before that :-)


Heiko

Randy Li

unread,
May 8, 2017, 9:20:05 PM5/8/17
to


On 05/09/2017 12:27 AM, Heiko Stübner wrote:
> Am Mittwoch, 3. Mai 2017, 10:56:24 CEST schrieb Guillaume Tucker:
>> The ARM Mali Midgard GPU kernel driver is only available
>> out-of-tree and is not going to be merged in its current form.
>> However, it would be useful to have its device tree bindings
>> merged. In particular, this would enable distributions to create
>> working driver packages (dkms...) without having to patch the
>> kernel.
>>
>> The bindings for the earlier Mali Utgard GPU family have already
>> been merged, so this is essentially the same scenario but for
>> newer GPUs (Mali-T604 ~ Mali-T880).
>>
>> This series of patches first imports the bindings from the latest
>> driver release with some clean-up then adds a gpu node for the
>> rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
>> Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
>> r16p0 and r12p0 user-space binary.
I won't suggest such combine. We meet some problems at mali 400 serial.
I would suggest the kernel version would match the user library.
Also please notice there is rk3288w, the hardware version becomes r1p0.
>
> The actual devicetree parts are all Rockchip-specific, so I guess I'll just
> pick up the whole series, including the binding doc, after the merge
> window if nobody complains before that :-)
>
>
> Heiko
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-r...@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>

--
Randy Li

Randy Li

unread,
May 9, 2017, 3:50:05 AM5/9/17
to


On 05/09/2017 03:40 PM, Guillaume Tucker wrote:
> On 09/05/17 02:16, Randy Li wrote:
>>
>>
>> On 05/09/2017 12:27 AM, Heiko Stübner wrote:
>>> Am Mittwoch, 3. Mai 2017, 10:56:24 CEST schrieb Guillaume Tucker:
>>>> The ARM Mali Midgard GPU kernel driver is only available
>>>> out-of-tree and is not going to be merged in its current form.
>>>> However, it would be useful to have its device tree bindings
>>>> merged. In particular, this would enable distributions to create
>>>> working driver packages (dkms...) without having to patch the
>>>> kernel.
>>>>
>>>> The bindings for the earlier Mali Utgard GPU family have already
>>>> been merged, so this is essentially the same scenario but for
>>>> newer GPUs (Mali-T604 ~ Mali-T880).
>>>>
>>>> This series of patches first imports the bindings from the latest
>>>> driver release with some clean-up then adds a gpu node for the
>>>> rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
>>>> Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
>>>> r16p0 and r12p0 user-space binary.
>> I won't suggest such combine. We meet some problems at mali 400 serial.
>> I would suggest the kernel version would match the user library.
>
> Well, I can test it again with r12p0 kernel driver (out-of-tree)
> if you want. The user-space driver checks the version of the
> kernel driver and gives up if it's not compatible. With Midgard,
> there's a range of versions that maintain kernel/userspace
> compatibility unlike Utgard and older Midgard releases where they
> had to exactly match. Again, if there was a mismatch then the
> user-space would fail to initialise and report an error.
Anyway, could you verify the mali userspace library r13p0?
Rockchip would use this version to offer the support of X11, wayland and
gbm.
>
>> Also please notice there is rk3288w, the hardware version becomes r1p0.
>
> Sounds like a new SoC? Does rk3288w affect rk3288 in any way?
It is not a new SoC, just a new version of rk3288. It fixes a various of
the chip bug of the rk3288.
>
> Unless it's a special case, it seems to me that any new SoC with
> a Midgard GPU would need an extra vendor compatible string in the
> binding documentation and maybe a separate gpu dt node.
>
>>> The actual devicetree parts are all Rockchip-specific, so I guess
>>> I'll just
>>> pick up the whole series, including the binding doc, after the merge
>>> window if nobody complains before that :-)
>
> Thanks!
>
>
> Guillaume
>
>

--
Randy Li

Guillaume Tucker

unread,
May 9, 2017, 3:50:10 AM5/9/17
to
On 09/05/17 02:16, Randy Li wrote:
>
>
> On 05/09/2017 12:27 AM, Heiko Stübner wrote:
>> Am Mittwoch, 3. Mai 2017, 10:56:24 CEST schrieb Guillaume Tucker:
>>> The ARM Mali Midgard GPU kernel driver is only available
>>> out-of-tree and is not going to be merged in its current form.
>>> However, it would be useful to have its device tree bindings
>>> merged. In particular, this would enable distributions to create
>>> working driver packages (dkms...) without having to patch the
>>> kernel.
>>>
>>> The bindings for the earlier Mali Utgard GPU family have already
>>> been merged, so this is essentially the same scenario but for
>>> newer GPUs (Mali-T604 ~ Mali-T880).
>>>
>>> This series of patches first imports the bindings from the latest
>>> driver release with some clean-up then adds a gpu node for the
>>> rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
>>> Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
>>> r16p0 and r12p0 user-space binary.
> I won't suggest such combine. We meet some problems at mali 400 serial.
> I would suggest the kernel version would match the user library.

Well, I can test it again with r12p0 kernel driver (out-of-tree)
if you want. The user-space driver checks the version of the
kernel driver and gives up if it's not compatible. With Midgard,
there's a range of versions that maintain kernel/userspace
compatibility unlike Utgard and older Midgard releases where they
had to exactly match. Again, if there was a mismatch then the
user-space would fail to initialise and report an error.

> Also please notice there is rk3288w, the hardware version becomes r1p0.

Sounds like a new SoC? Does rk3288w affect rk3288 in any way?

Unless it's a special case, it seems to me that any new SoC with
a Midgard GPU would need an extra vendor compatible string in the
binding documentation and maybe a separate gpu dt node.

>> The actual devicetree parts are all Rockchip-specific, so I guess I'll just
>> pick up the whole series, including the binding doc, after the merge
>> window if nobody complains before that :-)

Thanks!


Guillaume

Guillaume Tucker

unread,
May 10, 2017, 6:20:05 AM5/10/17
to
Hi Randi,
The latest user-space binary available from developer.arm.com for
rk3288 is 12p0. Maybe Rockchip could make some new binaries
available to the public?

> Rockchip would use this version to offer the support of X11, wayland and gbm.

Sounds great, although windowing systems are quite far away from
GPU device tree bindings so I don't think this is too relevant
for this current patch series.

On a side note, it would be fantastic to get all this available
in Debian packages :)

>>> Also please notice there is rk3288w, the hardware version becomes r1p0.
>>
>> Sounds like a new SoC? Does rk3288w affect rk3288 in any way?
> It is not a new SoC, just a new version of rk3288. It fixes a various of the chip bug of the rk3288.

I see. I don't have access to any rk3288w platform but if you do
then I guess it would be nice if you could test these patches on
it :) Also I'm not sure if all rk3288 device trees changes must
be tested on rk3288w, and this SoC is not mentioned anywhere in
the kernel (as far as I can tell).

Is there anything you think should block these current patches
which only claim to support rk3288 from being merged?

>> Unless it's a special case, it seems to me that any new SoC with
>> a Midgard GPU would need an extra vendor compatible string in the
>> binding documentation and maybe a separate gpu dt node.
>>
>>>> The actual devicetree parts are all Rockchip-specific, so I guess I'll just
>>>> pick up the whole series, including the binding doc, after the merge
>>>> window if nobody complains before that :-)
>>
>> Thanks!

Guillaume


P.S. kernel branch with a Mali driver I used for testing:
https://git.collabora.com/cgit/user/gtucker/linux.git/log/?h=linux-4.11-mali-dt-rk3288

Heiko Stübner

unread,
May 10, 2017, 6:30:05 AM5/10/17
to
From what I've read on #linux-rockchip:

<wzyy2> rk3288w have some differences: USB HOST : add ohci, fix ehci bug GPU : update rev
<wzyy2> VOP, video codec, rga : some bug fix
<wzyy2> hdmi : HDCP2.2

So from, yes a new gpu-revision, but that shouldn't affect this series.
From the above I guess the hooks into the rest of the soc haven't changed
so rk3288-mali should still be enough and the driver normally can detect
and handle revision differences.

And if there are really severe changes appearing later on _and_ we actually
get special support for the rk3288w in the kernel (googling for rk3288w
mentions it in conjunction with windows 10) there is nothing speaking
against having a rk3288w-mali compatible at that time.


Heiko

Wookey

unread,
May 10, 2017, 11:20:07 AM5/10/17
to
On 2017-05-10 11:10 +0100, Guillaume Tucker wrote:
>
> On a side note, it would be fantastic to get all this available
> in Debian packages :)

There are prototype debian packages here:
https://git.linaro.org/people/wookey/mali/mali-dkms.git/
https://git.linaro.org/people/wookey/mali/mali-drivers.git/

Which I'm very happy to get feedback on if people try them with
guillaume's DTB patches.

Quite hacky at the moment, but I want to prove they work at all before
tarting up the packaging.

Wookey
--
Principal hats: Linaro, Debian, Wookware, ARM
http://wookware.org/
signature.asc

Heiko Stuebner

unread,
May 19, 2017, 6:30:05 PM5/19/17
to
Hi Guillaume,

Am Mittwoch, 3. Mai 2017, 10:56:24 CEST schrieb Guillaume Tucker:
> The ARM Mali Midgard GPU kernel driver is only available
> out-of-tree and is not going to be merged in its current form.
> However, it would be useful to have its device tree bindings
> merged. In particular, this would enable distributions to create
> working driver packages (dkms...) without having to patch the
> kernel.
>
> The bindings for the earlier Mali Utgard GPU family have already
> been merged, so this is essentially the same scenario but for
> newer GPUs (Mali-T604 ~ Mali-T880).
>
> This series of patches first imports the bindings from the latest
> driver release with some clean-up then adds a gpu node for the
> rk3288 SoC. This was successfully tested on Radxa Rock2 Square,
> Firefly, Veyron Minnie and Jerry boards using Mali kernel driver
> r16p0 and r12p0 user-space binary.

as nobody complained anymore, I've applied all patches for 4.13
with the following small changes:
- patch2: node name to
gpu_opp_table: gpu-opp-table
from the original
gpu_opp_table: opp_table0
- patches3-5: moved &gpu{} to its alphabetical correct position
(below &gmac and above &hdmi)


Heiko
0 new messages