mbox series

[v11,0/4] drm/panfrost: Add support for mt8183 GPU

Message ID 20210126011759.1605641-1-drinkcat@chromium.org
Headers show
Series drm/panfrost: Add support for mt8183 GPU | expand

Message

Nicolas Boichat Jan. 26, 2021, 1:17 a.m. UTC
Hi!

Follow-up on the v5 [1], things have gotten significantly
better in the last 9 months, thanks to the efforts on Bifrost
support by the Collabora team (and probably others I'm not
aware of).

I've been testing this series on a MT8183/kukui device, with a
chromeos-5.10 kernel [2], and got basic Chromium OS UI up with
mesa 20.3.2 (lots of artifacts though).

devfreq is currently not supported, as we'll need:
 - Clock core support for switching the GPU core clock (see 2/4).
 - Platform-specific handling of the 2-regulator (see 3/4).

Since the latter is easy to detect, patch 3/4 just disables
devfreq if the more than one regulator is specified in the
compatible matching table.

[1] https://patchwork.kernel.org/project/linux-mediatek/cover/20200306041345.259332-1-drinkcat@chromium.org/
[2] https://crrev.com/c/2608070

Changes in v11:
 - binding: power-domain-names not power-domainS-names
 - mt8183*.dts: remove incorrect supply-names

Changes in v10:
 - Fix the binding to make sure sram-supply property can be provided.

Changes in v9:
 - Explain why devfreq needs to be disabled for GPUs with >1
   regulators.

Changes in v8:
 - Use DRM_DEV_INFO instead of ERROR

Changes in v7:
 - Fix GPU ID in commit message
 - Fix GPU ID in commit message

Changes in v6:
 - Rebased, actually tested with recent mesa driver.
 - Add gpu regulators to kukui dtsi as well.
 - Power domains are now attached to spm, not scpsys
 - Drop R-B.
 - devfreq: New change
 - Context conflicts, reflow the code.
 - Use ARRAY_SIZE for power domains too.

Changes in v5:
 - Rename "2d" power domain to "core2"
 - Rename "2d" power domain to "core2" (keep R-B again).
 - Change power domain name from 2d to core2.

Changes in v4:
 - Add power-domain-names description
   (kept Alyssa's reviewed-by as the change is minor)
 - Add power-domain-names to describe the 3 domains.
   (kept Alyssa's reviewed-by as the change is minor)
 - Add power domain names.

Changes in v3:
 - Match mt8183-mali instead of bifrost, as we require special
   handling for the 2 regulators and 3 power domains.

Changes in v2:
 - Use sram instead of mali_sram as SRAM supply name.
 - Rename mali@ to gpu@.

Nicolas Boichat (4):
  dt-bindings: gpu: mali-bifrost: Add Mediatek MT8183
  arm64: dts: mt8183: Add node for the Mali GPU
  drm/panfrost: devfreq: Disable devfreq when num_supplies > 1
  drm/panfrost: Add mt8183-mali compatible string

 .../bindings/gpu/arm,mali-bifrost.yaml        |  28 +++++
 arch/arm64/boot/dts/mediatek/mt8183-evb.dts   |   5 +
 .../arm64/boot/dts/mediatek/mt8183-kukui.dtsi |   5 +
 arch/arm64/boot/dts/mediatek/mt8183.dtsi      | 105 ++++++++++++++++++
 drivers/gpu/drm/panfrost/panfrost_devfreq.c   |   9 ++
 drivers/gpu/drm/panfrost/panfrost_drv.c       |  10 ++
 6 files changed, 162 insertions(+)

Comments

Rob Herring Feb. 5, 2021, 5:55 p.m. UTC | #1
On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:
> Define a compatible string for the Mali Bifrost GPU found in
> Mediatek's MT8183 SoCs.
> 
> Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
> ---
> 
> Changes in v11:
>  - binding: power-domain-names not power-domainS-names
> 
> Changes in v10:
>  - Fix the binding to make sure sram-supply property can be provided.
> 
> Changes in v9: None
> Changes in v8: None
> Changes in v7: None
> Changes in v6:
>  - Rebased, actually tested with recent mesa driver.
> 
> Changes in v5:
>  - Rename "2d" power domain to "core2"
> 
> Changes in v4:
>  - Add power-domain-names description
>    (kept Alyssa's reviewed-by as the change is minor)
> 
> Changes in v3: None
> Changes in v2: None
> 
>  .../bindings/gpu/arm,mali-bifrost.yaml        | 28 +++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 


Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.

If a tag was not added on purpose, please state why and what changed.
Nicolas Boichat Feb. 6, 2021, 3:01 a.m. UTC | #2
On Sat, Feb 6, 2021 at 1:55 AM Rob Herring <robh@kernel.org> wrote:
>
> On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:
> > Define a compatible string for the Mali Bifrost GPU found in
> > Mediatek's MT8183 SoCs.
> >
> > Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
> > ---
> >
> > Changes in v11:
> >  - binding: power-domain-names not power-domainS-names
> >
> > Changes in v10:
> >  - Fix the binding to make sure sram-supply property can be provided.
> >
> > Changes in v9: None
> > Changes in v8: None
> > Changes in v7: None
> > Changes in v6:
> >  - Rebased, actually tested with recent mesa driver.
> >
> > Changes in v5:
> >  - Rename "2d" power domain to "core2"
> >
> > Changes in v4:
> >  - Add power-domain-names description
> >    (kept Alyssa's reviewed-by as the change is minor)
> >
> > Changes in v3: None
> > Changes in v2: None
> >
> >  .../bindings/gpu/arm,mali-bifrost.yaml        | 28 +++++++++++++++++++
> >  1 file changed, 28 insertions(+)
> >
>
>
> Please add Acked-by/Reviewed-by tags when posting new versions. However,
> there's no need to repost patches *only* to add the tags. The upstream
> maintainer will do that for acks received on the version they apply.
>
> If a tag was not added on purpose, please state why and what changed.

There were changes in v11, I thought you'd want to review again?

Anyway, I can resend a v12 with all the Rb/Ab if that works better for you.

>
Rob Herring April 20, 2021, 12:58 p.m. UTC | #3
On Fri, Feb 5, 2021 at 9:02 PM Nicolas Boichat <drinkcat@chromium.org> wrote:
>

> On Sat, Feb 6, 2021 at 1:55 AM Rob Herring <robh@kernel.org> wrote:

> >

> > On Tue, 26 Jan 2021 09:17:56 +0800, Nicolas Boichat wrote:

> > > Define a compatible string for the Mali Bifrost GPU found in

> > > Mediatek's MT8183 SoCs.

> > >

> > > Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>

> > > ---

> > >

> > > Changes in v11:

> > >  - binding: power-domain-names not power-domainS-names

> > >

> > > Changes in v10:

> > >  - Fix the binding to make sure sram-supply property can be provided.

> > >

> > > Changes in v9: None

> > > Changes in v8: None

> > > Changes in v7: None

> > > Changes in v6:

> > >  - Rebased, actually tested with recent mesa driver.

> > >

> > > Changes in v5:

> > >  - Rename "2d" power domain to "core2"

> > >

> > > Changes in v4:

> > >  - Add power-domain-names description

> > >    (kept Alyssa's reviewed-by as the change is minor)

> > >

> > > Changes in v3: None

> > > Changes in v2: None

> > >

> > >  .../bindings/gpu/arm,mali-bifrost.yaml        | 28 +++++++++++++++++++

> > >  1 file changed, 28 insertions(+)

> > >

> >

> >

> > Please add Acked-by/Reviewed-by tags when posting new versions. However,

> > there's no need to repost patches *only* to add the tags. The upstream

> > maintainer will do that for acks received on the version they apply.

> >

> > If a tag was not added on purpose, please state why and what changed.

>

> There were changes in v11, I thought you'd want to review again?


Looked like a minor change from the changelog, so it would have been
appropriate to keep. However, I see another issue.

Rob
Rob Herring April 20, 2021, 1:01 p.m. UTC | #4
On Mon, Jan 25, 2021 at 7:18 PM Nicolas Boichat <drinkcat@chromium.org> wrote:
>
> Define a compatible string for the Mali Bifrost GPU found in
> Mediatek's MT8183 SoCs.
>
> Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
> ---
>
> Changes in v11:
>  - binding: power-domain-names not power-domainS-names
>
> Changes in v10:
>  - Fix the binding to make sure sram-supply property can be provided.
>
> Changes in v9: None
> Changes in v8: None
> Changes in v7: None
> Changes in v6:
>  - Rebased, actually tested with recent mesa driver.
>
> Changes in v5:
>  - Rename "2d" power domain to "core2"
>
> Changes in v4:
>  - Add power-domain-names description
>    (kept Alyssa's reviewed-by as the change is minor)
>
> Changes in v3: None
> Changes in v2: None
>
>  .../bindings/gpu/arm,mali-bifrost.yaml        | 28 +++++++++++++++++++
>  1 file changed, 28 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml b/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml
> index 184492162e7e..3e758f88e2cd 100644
> --- a/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml
> +++ b/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml
> @@ -17,6 +17,7 @@ properties:
>      items:
>        - enum:
>            - amlogic,meson-g12a-mali
> +          - mediatek,mt8183-mali
>            - realtek,rtd1619-mali
>            - rockchip,px30-mali
>        - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
> @@ -41,6 +42,8 @@ properties:
>
>    mali-supply: true
>
> +  sram-supply: true
> +
>    operating-points-v2: true
>
>    power-domains:
> @@ -87,6 +90,31 @@ allOf:
>      then:
>        required:
>          - resets
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            const: mediatek,mt8183-mali
> +    then:
> +      properties:
> +        power-domains:
> +          description:
> +            List of phandle and PM domain specifier as documented in
> +            Documentation/devicetree/bindings/power/power_domain.txt
> +          minItems: 3
> +          maxItems: 3

This won't work because the top level schema restricts this to 1. The
top level needs to say:

power-domains:
  minItems: 1
  maxItems: 3

And you need just 'minItems: 3' here and 'maxItems: 1' in the else clause.

And drop the description. That's every 'power-domains' property.

> +        power-domain-names:
> +          items:
> +            - const: core0
> +            - const: core1
> +            - const: core2

Blank line

> +      required:
> +        - sram-supply
> +        - power-domains
> +        - power-domain-names
> +    else:
> +      properties:
> +        sram-supply: false
>
>  examples:
>    - |
> --
> 2.30.0.280.ga3ce27912f-goog
>
Nicolas Boichat April 21, 2021, 12:11 a.m. UTC | #5
On Tue, Apr 20, 2021 at 9:01 PM Rob Herring <robh@kernel.org> wrote:
>

> On Mon, Jan 25, 2021 at 7:18 PM Nicolas Boichat <drinkcat@chromium.org> wrote:

> >

> > Define a compatible string for the Mali Bifrost GPU found in

> > Mediatek's MT8183 SoCs.

> >

> > Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>

> > ---

> >

> > Changes in v11:

> >  - binding: power-domain-names not power-domainS-names

> >

> > Changes in v10:

> >  - Fix the binding to make sure sram-supply property can be provided.

> >

> > Changes in v9: None

> > Changes in v8: None

> > Changes in v7: None

> > Changes in v6:

> >  - Rebased, actually tested with recent mesa driver.

> >

> > Changes in v5:

> >  - Rename "2d" power domain to "core2"

> >

> > Changes in v4:

> >  - Add power-domain-names description

> >    (kept Alyssa's reviewed-by as the change is minor)

> >

> > Changes in v3: None

> > Changes in v2: None

> >

> >  .../bindings/gpu/arm,mali-bifrost.yaml        | 28 +++++++++++++++++++

> >  1 file changed, 28 insertions(+)

> >

> > diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml b/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml

> > index 184492162e7e..3e758f88e2cd 100644

> > --- a/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml

> > +++ b/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml

> > @@ -17,6 +17,7 @@ properties:

> >      items:

> >        - enum:

> >            - amlogic,meson-g12a-mali

> > +          - mediatek,mt8183-mali

> >            - realtek,rtd1619-mali

> >            - rockchip,px30-mali

> >        - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable

> > @@ -41,6 +42,8 @@ properties:

> >

> >    mali-supply: true

> >

> > +  sram-supply: true

> > +

> >    operating-points-v2: true

> >

> >    power-domains:

> > @@ -87,6 +90,31 @@ allOf:

> >      then:

> >        required:

> >          - resets

> > +  - if:

> > +      properties:

> > +        compatible:

> > +          contains:

> > +            const: mediatek,mt8183-mali

> > +    then:

> > +      properties:

> > +        power-domains:

> > +          description:

> > +            List of phandle and PM domain specifier as documented in

> > +            Documentation/devicetree/bindings/power/power_domain.txt

> > +          minItems: 3

> > +          maxItems: 3

>

> This won't work because the top level schema restricts this to 1. The

> top level needs to say:

>

> power-domains:

>   minItems: 1

>   maxItems: 3

>

> And you need just 'minItems: 3' here and 'maxItems: 1' in the else clause.

>

> And drop the description. That's every 'power-domains' property.

>

> > +        power-domain-names:

> > +          items:

> > +            - const: core0

> > +            - const: core1

> > +            - const: core2

>

> Blank line


Thanks, hopefully all fixed in v12.

> > +      required:

> > +        - sram-supply

> > +        - power-domains

> > +        - power-domain-names

> > +    else:

> > +      properties:

> > +        sram-supply: false

> >

> >  examples:

> >    - |

> > --

> > 2.30.0.280.ga3ce27912f-goog

> >