diff mbox

[v5,1/5] dt-bindings: gpu: add bindings for the ARM Mali Midgard GPU

Message ID bebe578ba130de5fa320ca7c6427b2fae83d61d7.1493804968.git.guillaume.tucker@collabora.com (mailing list archive)
State New, archived
Headers show

Commit Message

Guillaume Tucker May 3, 2017, 9:56 a.m. UTC
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

Remove the copyright and GPL licence header as deemed not necessary.

Redesign the "compatible" property strings to list all the Mali
Midgard GPU types and add vendor specific ones.

Drop the "clock-names" property as the Mali Midgard GPU uses only one
clock (the driver now needs to call clk_get with NULL).

Convert the "interrupt-names" property values to lower-case: "job",
"mmu" and "gpu".

Replace the deprecated "operating-points" optional property with
"operating-points-v2".

Omit the following optional properties 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

Update the example accordingly to reflect all these changes, based on
rk3288 mali-t760.

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

Comments

Rob Herring May 8, 2017, 4:18 p.m. UTC | #1
On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:
> 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
> 
> Remove the copyright and GPL licence header as deemed not necessary.
> 
> Redesign the "compatible" property strings to list all the Mali
> Midgard GPU types and add vendor specific ones.
> 
> Drop the "clock-names" property as the Mali Midgard GPU uses only one
> clock (the driver now needs to call clk_get with NULL).
> 
> Convert the "interrupt-names" property values to lower-case: "job",
> "mmu" and "gpu".
> 
> Replace the deprecated "operating-points" optional property with
> "operating-points-v2".
> 
> Omit the following optional properties 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
> 
> Update the example accordingly to reflect all these changes, based on
> rk3288 mali-t760.
> 
> CC: John Reitan <john.reitan@arm.com>
> Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
> ---
>  .../devicetree/bindings/gpu/arm,mali-midgard.txt   | 86 ++++++++++++++++++++++
>  1 file changed, 86 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt

Reviewed-by: Rob Herring <robh@kernel.org>
Brian Norris July 12, 2017, 5:26 p.m. UTC | #2
Hi Guillaume,

I know this has already been merged, but I figured here was an OK place
to note (inline):

On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:
> 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
> 
> Remove the copyright and GPL licence header as deemed not necessary.
> 
> Redesign the "compatible" property strings to list all the Mali
> Midgard GPU types and add vendor specific ones.
> 
> Drop the "clock-names" property as the Mali Midgard GPU uses only one
> clock (the driver now needs to call clk_get with NULL).
> 
> Convert the "interrupt-names" property values to lower-case: "job",
> "mmu" and "gpu".
> 
> Replace the deprecated "operating-points" optional property with
> "operating-points-v2".
> 
> Omit the following optional properties 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
> 
> Update the example accordingly to reflect all these changes, based on
> rk3288 mali-t760.
> 
> CC: John Reitan <john.reitan@arm.com>
> Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
> ---
>  .../devicetree/bindings/gpu/arm,mali-midgard.txt   | 86 ++++++++++++++++++++++
>  1 file changed, 86 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..d3b6e1a4713a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt

^^ This file name implies we're talking about a base "arm,mali-midgard"
compatible property.

> @@ -0,0 +1,86 @@
> +ARM Mali Midgard GPU
> +====================
> +
> +Required properties:
> +
> +- compatible :
> +  * Must contain one of the following:
> +    + "arm,mali-t604"
> +    + "arm,mali-t624"
> +    + "arm,mali-t628"
> +    + "arm,mali-t720"
> +    + "arm,mali-t760"
> +    + "arm,mali-t820"
> +    + "arm,mali-t830"
> +    + "arm,mali-t860"
> +    + "arm,mali-t880"
> +  * which must be preceded by one of the following vendor specifics:
> +    + "amlogic,meson-gxm-mali"
> +    + "rockchip,rk3288-mali"

But it's not listed here.

> +
> +- 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-v2 : Refer to Documentation/devicetree/bindings/power/opp.txt
> +  for details.
> +
> +
> +Example for a Mali-T760:
> +
> +gpu@ffa30000 {
> +	compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";

And it *is* used here in this example.

So, should it be used/documented or not?

> +	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>;
> +	mali-supply = <&vdd_gpu>;
> +	operating-points-v2 = <&gpu_opp_table>;
> +	power-domains = <&power RK3288_PD_GPU>;
> +};

[...]

Brian
Heiko Stuebner July 12, 2017, 6:30 p.m. UTC | #3
Hi Brian,

Am Mittwoch, 12. Juli 2017, 10:26:39 CEST schrieb Brian Norris:
> Hi Guillaume,
> 
> I know this has already been merged, but I figured here was an OK place
> to note (inline):
> 
> On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:
> > 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/ma
> >   li-midgard-gpu/TX011-SW-99002-r16p0-00rel0.tgz> 
> > Remove the copyright and GPL licence header as deemed not necessary.
> > 
> > Redesign the "compatible" property strings to list all the Mali
> > Midgard GPU types and add vendor specific ones.
> > 
> > Drop the "clock-names" property as the Mali Midgard GPU uses only one
> > clock (the driver now needs to call clk_get with NULL).
> > 
> > Convert the "interrupt-names" property values to lower-case: "job",
> > "mmu" and "gpu".
> > 
> > Replace the deprecated "operating-points" optional property with
> > "operating-points-v2".
> > 
> > Omit the following optional properties 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
> > 
> > Update the example accordingly to reflect all these changes, based on
> > rk3288 mali-t760.
> > 
> > CC: John Reitan <john.reitan@arm.com>
> > Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
> > ---
> > 
> >  .../devicetree/bindings/gpu/arm,mali-midgard.txt   | 86
> >  ++++++++++++++++++++++ 1 file changed, 86 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..d3b6e1a4713a
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
> 
> ^^ This file name implies we're talking about a base "arm,mali-midgard"
> compatible property.

it follows the precedent of arm,mali-utgard.txt and while the file-name
is not part of the compatible list, it feels way better collecting all the 
variants in one file, compared to spawning multiple ones for each soc
vendor using a mali gpu.

Also in other places the naming of binding descriptions does not follow
any compatible at all, so the filename = main-compatible does not seem
to be the rule.


> > @@ -0,0 +1,86 @@
> > +ARM Mali Midgard GPU
> > +====================
> > +
> > +Required properties:
> > +
> > +- compatible :
> > +  * Must contain one of the following:
> > +    + "arm,mali-t604"
> > +    + "arm,mali-t624"
> > +    + "arm,mali-t628"
> > +    + "arm,mali-t720"
> > +    + "arm,mali-t760"
> > +    + "arm,mali-t820"
> > +    + "arm,mali-t830"
> > +    + "arm,mali-t860"
> > +    + "arm,mali-t880"
> > +  * which must be preceded by one of the following vendor specifics:
> > +    + "amlogic,meson-gxm-mali"
> > +    + "rockchip,rk3288-mali"
> 
> But it's not listed here.
> 
> > +
> > +- 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-v2 : Refer to
> > Documentation/devicetree/bindings/power/opp.txt +  for details.
> > +
> > +
> > +Example for a Mali-T760:
> > +
> > +gpu@ffa30000 {
> > +	compatible = "rockchip,rk3288-mali", "arm,mali-t760",
> > "arm,mali-midgard";
> 
> And it *is* used here in this example.
> 
> So, should it be used/documented or not?

No I don't think it should and have patches that drop the mali-midgard from
the example + rk3288 dtsi to not confuse people:
- https://patchwork.kernel.org/patch/9832811/
- https://patchwork.kernel.org/patch/9832807/


Devicetree supposedly should not contain wildcards and without knowing
for real that all of then in fact are compatible we should not assume so
[and that's hard to check with all the secrecy :-) ] . Using the real name 
(tXXX) sounds nice enough.


Heiko

> > +	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>;
> > +	mali-supply = <&vdd_gpu>;
> > +	operating-points-v2 = <&gpu_opp_table>;
> > +	power-domains = <&power RK3288_PD_GPU>;
> > +};
> 
> [...]
> 
> Brian
Brian Norris July 12, 2017, 6:43 p.m. UTC | #4
Hi Heiko,

On Wed, Jul 12, 2017 at 08:30:55PM +0200, Heiko Stuebner wrote:
> Am Mittwoch, 12. Juli 2017, 10:26:39 CEST schrieb Brian Norris:
> > On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:
> > > 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/ma
> > >   li-midgard-gpu/TX011-SW-99002-r16p0-00rel0.tgz> 
> > > Remove the copyright and GPL licence header as deemed not necessary.
> > > 
> > > Redesign the "compatible" property strings to list all the Mali
> > > Midgard GPU types and add vendor specific ones.
> > > 
> > > Drop the "clock-names" property as the Mali Midgard GPU uses only one
> > > clock (the driver now needs to call clk_get with NULL).
> > > 
> > > Convert the "interrupt-names" property values to lower-case: "job",
> > > "mmu" and "gpu".
> > > 
> > > Replace the deprecated "operating-points" optional property with
> > > "operating-points-v2".
> > > 
> > > Omit the following optional properties 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
> > > 
> > > Update the example accordingly to reflect all these changes, based on
> > > rk3288 mali-t760.
> > > 
> > > CC: John Reitan <john.reitan@arm.com>
> > > Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > > Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
> > > ---
> > > 
> > >  .../devicetree/bindings/gpu/arm,mali-midgard.txt   | 86
> > >  ++++++++++++++++++++++ 1 file changed, 86 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..d3b6e1a4713a
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
> > 
> > ^^ This file name implies we're talking about a base "arm,mali-midgard"
> > compatible property.
> 
> it follows the precedent of arm,mali-utgard.txt and while the file-name
> is not part of the compatible list, it feels way better collecting all the 
> variants in one file, compared to spawning multiple ones for each soc
> vendor using a mali gpu.
> 
> Also in other places the naming of binding descriptions does not follow
> any compatible at all, so the filename = main-compatible does not seem
> to be the rule.

Well, when they do get a name in the form of "<vendor>,<foo>.txt", the
"<vendor>,<foo>" is usually at least *a* valid compatible string. For
example, "nvidia,gk20a.txt" has several other strings, but its filename
is one of the supported ones.

Anyway, that wasn't my main worry. I was mostly curious about the body
of the text.

> > > @@ -0,0 +1,86 @@
> > > +ARM Mali Midgard GPU
> > > +====================
> > > +
> > > +Required properties:
> > > +
> > > +- compatible :
> > > +  * Must contain one of the following:
> > > +    + "arm,mali-t604"
> > > +    + "arm,mali-t624"
> > > +    + "arm,mali-t628"
> > > +    + "arm,mali-t720"
> > > +    + "arm,mali-t760"
> > > +    + "arm,mali-t820"
> > > +    + "arm,mali-t830"
> > > +    + "arm,mali-t860"
> > > +    + "arm,mali-t880"
> > > +  * which must be preceded by one of the following vendor specifics:
> > > +    + "amlogic,meson-gxm-mali"
> > > +    + "rockchip,rk3288-mali"
> > 
> > But it's not listed here.
> > 
> > > +
> > > +- 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-v2 : Refer to
> > > Documentation/devicetree/bindings/power/opp.txt +  for details.
> > > +
> > > +
> > > +Example for a Mali-T760:
> > > +
> > > +gpu@ffa30000 {
> > > +	compatible = "rockchip,rk3288-mali", "arm,mali-t760",
> > > "arm,mali-midgard";
> > 
> > And it *is* used here in this example.
> > 
> > So, should it be used/documented or not?
> 
> No I don't think it should and have patches that drop the mali-midgard from
> the example + rk3288 dtsi to not confuse people:
> - https://patchwork.kernel.org/patch/9832811/
> - https://patchwork.kernel.org/patch/9832807/

I didn't notice those. Thanks.

> Devicetree supposedly should not contain wildcards and without knowing
> for real that all of then in fact are compatible we should not assume so
> [and that's hard to check with all the secrecy :-) ] . Using the real name 
> (tXXX) sounds nice enough.

Fine with me.

Brian
Guillaume Tucker July 14, 2017, 6:41 a.m. UTC | #5
Hi Brian,

On 12/07/17 18:26, Brian Norris wrote:
> Hi Guillaume,
>
> I know this has already been merged, but I figured here was an OK place
> to note (inline):
>
> On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:

[...]

>> 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..d3b6e1a4713a
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
>
> ^^ This file name implies we're talking about a base "arm,mali-midgard"
> compatible property.
>
>> @@ -0,0 +1,86 @@
>> +ARM Mali Midgard GPU
>> +====================
>> +
>> +Required properties:
>> +
>> +- compatible :
>> +  * Must contain one of the following:
>> +    + "arm,mali-t604"
>> +    + "arm,mali-t624"
>> +    + "arm,mali-t628"
>> +    + "arm,mali-t720"
>> +    + "arm,mali-t760"
>> +    + "arm,mali-t820"
>> +    + "arm,mali-t830"
>> +    + "arm,mali-t860"
>> +    + "arm,mali-t880"
>> +  * which must be preceded by one of the following vendor specifics:
>> +    + "amlogic,meson-gxm-mali"
>> +    + "rockchip,rk3288-mali"
>
> But it's not listed here.
>
>> +
>> +- 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-v2 : Refer to Documentation/devicetree/bindings/power/opp.txt
>> +  for details.
>> +
>> +
>> +Example for a Mali-T760:
>> +
>> +gpu@ffa30000 {
>> +	compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";
>
> And it *is* used here in this example.
>
> So, should it be used/documented or not?

The important part is that having only arm,mali-midgard in the
gpu node is not enough to accurately describe the hardware, which
is why it is not listed in the required compatible strings.  On
the other hand, it does help with describing the hardware, so
it's fine to use it.  If people find this confusing then I guess
we could add something to say that arm,mali-midgard can be used
optionally in addition to the specific ones.

Also, if you look at the 64-bit ARM CPUs for example, they
typically have armv8 in their node although armv8 is not
mentioned anywhere in the bindings documentation...

Guillaume
Guillaume Tucker July 14, 2017, 7:42 a.m. UTC | #6
On 14/07/17 07:41, Guillaume Tucker wrote:
> Hi Brian,
>
> On 12/07/17 18:26, Brian Norris wrote:
>> Hi Guillaume,
>>
>> I know this has already been merged, but I figured here was an OK place
>> to note (inline):
>>
>> On Wed, May 03, 2017 at 10:56:25AM +0100, Guillaume Tucker wrote:
>
> [...]
>
>>> 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..d3b6e1a4713a
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
>>
>> ^^ This file name implies we're talking about a base "arm,mali-midgard"
>> compatible property.
>>
>>> @@ -0,0 +1,86 @@
>>> +ARM Mali Midgard GPU
>>> +====================
>>> +
>>> +Required properties:
>>> +
>>> +- compatible :
>>> +  * Must contain one of the following:
>>> +    + "arm,mali-t604"
>>> +    + "arm,mali-t624"
>>> +    + "arm,mali-t628"
>>> +    + "arm,mali-t720"
>>> +    + "arm,mali-t760"
>>> +    + "arm,mali-t820"
>>> +    + "arm,mali-t830"
>>> +    + "arm,mali-t860"
>>> +    + "arm,mali-t880"
>>> +  * which must be preceded by one of the following vendor specifics:
>>> +    + "amlogic,meson-gxm-mali"
>>> +    + "rockchip,rk3288-mali"
>>
>> But it's not listed here.
>>
>>> +
>>> +- 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-v2 : Refer to Documentation/devicetree/bindings/power/opp.txt
>>> +  for details.
>>> +
>>> +
>>> +Example for a Mali-T760:
>>> +
>>> +gpu@ffa30000 {
>>> +    compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard";
>>
>> And it *is* used here in this example.
>>
>> So, should it be used/documented or not?
>
> The important part is that having only arm,mali-midgard in the
> gpu node is not enough to accurately describe the hardware, which
> is why it is not listed in the required compatible strings.  On
> the other hand, it does help with describing the hardware, so
> it's fine to use it.  If people find this confusing then I guess
> we could add something to say that arm,mali-midgard can be used
> optionally in addition to the specific ones.
>
> Also, if you look at the 64-bit ARM CPUs for example, they
> typically have armv8 in their node although armv8 is not
> mentioned anywhere in the bindings documentation...

Sorry I've only just seen Heiko's other emails and patches about
removing arm,mali-midgard from the example.

Guillaume
diff mbox

Patch

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..d3b6e1a4713a
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
@@ -0,0 +1,86 @@ 
+ARM Mali Midgard GPU
+====================
+
+Required properties:
+
+- compatible :
+  * Must contain one of the following:
+    + "arm,mali-t604"
+    + "arm,mali-t624"
+    + "arm,mali-t628"
+    + "arm,mali-t720"
+    + "arm,mali-t760"
+    + "arm,mali-t820"
+    + "arm,mali-t830"
+    + "arm,mali-t860"
+    + "arm,mali-t880"
+  * which must be preceded by one of the following vendor specifics:
+    + "amlogic,meson-gxm-mali"
+    + "rockchip,rk3288-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-v2 : Refer to Documentation/devicetree/bindings/power/opp.txt
+  for details.
+
+
+Example for a Mali-T760:
+
+gpu@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>;
+	mali-supply = <&vdd_gpu>;
+	operating-points-v2 = <&gpu_opp_table>;
+	power-domains = <&power RK3288_PD_GPU>;
+};
+
+gpu_opp_table: opp_table0 {
+	compatible = "operating-points-v2";
+
+	opp@533000000 {
+		opp-hz = /bits/ 64 <533000000>;
+		opp-microvolt = <1250000>;
+	};
+	opp@450000000 {
+		opp-hz = /bits/ 64 <450000000>;
+		opp-microvolt = <1150000>;
+	};
+	opp@400000000 {
+		opp-hz = /bits/ 64 <400000000>;
+		opp-microvolt = <1125000>;
+	};
+	opp@350000000 {
+		opp-hz = /bits/ 64 <350000000>;
+		opp-microvolt = <1075000>;
+	};
+	opp@266000000 {
+		opp-hz = /bits/ 64 <266000000>;
+		opp-microvolt = <1025000>;
+	};
+	opp@160000000 {
+		opp-hz = /bits/ 64 <160000000>;
+		opp-microvolt = <925000>;
+	};
+	opp@100000000 {
+		opp-hz = /bits/ 64 <100000000>;
+		opp-microvolt = <912500>;
+	};
+};