diff mbox series

dt-bindings: display: renesas, du: Provide bindings for r8a779a0

Message ID 20210622231146.3208404-1-kieran.bingham@ideasonboard.com (mailing list archive)
State New, archived
Headers show
Series dt-bindings: display: renesas, du: Provide bindings for r8a779a0 | expand

Commit Message

Kieran Bingham June 22, 2021, 11:11 p.m. UTC
From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

Extend the Renesas DU display bindings to support the r8a779a0 V3U.

Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
---
 .../bindings/display/renesas,du.yaml          | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)

Comments

Laurent Pinchart June 23, 2021, 2:44 a.m. UTC | #1
Hi Kieran,

Thank you for the patch.

On Wed, Jun 23, 2021 at 12:11:46AM +0100, Kieran Bingham wrote:
> From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> 
> Extend the Renesas DU display bindings to support the r8a779a0 V3U.
> 
> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  .../bindings/display/renesas,du.yaml          | 52 +++++++++++++++++++
>  1 file changed, 52 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/display/renesas,du.yaml b/Documentation/devicetree/bindings/display/renesas,du.yaml
> index 121596f106da..febbd89a646e 100644
> --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> @@ -39,6 +39,7 @@ properties:
>        - renesas,du-r8a77980 # for R-Car V3H compatible DU
>        - renesas,du-r8a77990 # for R-Car E3 compatible DU
>        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
>  
>    reg:
>      maxItems: 1
> @@ -774,6 +775,57 @@ allOf:
>          - reset-names
>          - renesas,vsps
>  
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - renesas,du-r8a779a0
> +    then:
> +      properties:
> +        clocks:
> +          items:
> +            - description: Functional clock for DU0
> +            - description: Functional clock for DU1
> +
> +        clock-names:
> +          items:
> +            - const: du.0
> +            - const: du.1
> +
> +        interrupts:
> +          maxItems: 2
> +
> +        resets:
> +          maxItems: 1
> +
> +        reset-names:
> +          items:
> +            - const: du.0
> +
> +        ports:
> +          properties:
> +            port@0:
> +              description: DSI 0
> +            port@1:
> +              description: DSI 1
> +            port@2: false
> +            port@3: false
> +
> +          required:
> +            - port@0
> +            - port@1
> +
> +        renesas,vsps:
> +          minItems: 2
> +
> +      required:
> +        - clock-names
> +        - interrupts
> +        - resets
> +        - reset-names
> +        - renesas,vsps
> +
>  additionalProperties: false
>  
>  examples:
Geert Uytterhoeven June 23, 2021, 12:53 p.m. UTC | #2
Hi Kieran,

On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
> From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
>
> Extend the Renesas DU display bindings to support the r8a779a0 V3U.
>
> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

Thanks for your patch!

> --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> @@ -39,6 +39,7 @@ properties:
>        - renesas,du-r8a77980 # for R-Car V3H compatible DU
>        - renesas,du-r8a77990 # for R-Car E3 compatible DU
>        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
>
>    reg:
>      maxItems: 1
> @@ -774,6 +775,57 @@ allOf:
>          - reset-names
>          - renesas,vsps
>
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - renesas,du-r8a779a0
> +    then:
> +      properties:
> +        clocks:
> +          items:
> +            - description: Functional clock for DU0
> +            - description: Functional clock for DU1
> +
> +        clock-names:
> +          items:
> +            - const: du.0
> +            - const: du.1

The hardware block has only a single function clock for both channels,
like on R-Car H1.

And what about DU_DOTCLKIN?

Gr{oetje,eeting}s,

                        Geert
Laurent Pinchart June 23, 2021, 12:58 p.m. UTC | #3
Hi Geert,

On Wed, Jun 23, 2021 at 02:53:33PM +0200, Geert Uytterhoeven wrote:
> On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham wrote:
> > From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> >
> > Extend the Renesas DU display bindings to support the r8a779a0 V3U.
> >
> > Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> 
> Thanks for your patch!
> 
> > --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> > +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> > @@ -39,6 +39,7 @@ properties:
> >        - renesas,du-r8a77980 # for R-Car V3H compatible DU
> >        - renesas,du-r8a77990 # for R-Car E3 compatible DU
> >        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> > +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
> >
> >    reg:
> >      maxItems: 1
> > @@ -774,6 +775,57 @@ allOf:
> >          - reset-names
> >          - renesas,vsps
> >
> > +  - if:
> > +      properties:
> > +        compatible:
> > +          contains:
> > +            enum:
> > +              - renesas,du-r8a779a0
> > +    then:
> > +      properties:
> > +        clocks:
> > +          items:
> > +            - description: Functional clock for DU0
> > +            - description: Functional clock for DU1
> > +
> > +        clock-names:
> > +          items:
> > +            - const: du.0
> > +            - const: du.1
> 
> The hardware block has only a single function clock for both channels,
> like on R-Car H1.
> 
> And what about DU_DOTCLKIN?

As far as I can tell, there's no DU_DOTCLKIN in V3U.
Geert Uytterhoeven June 23, 2021, 1:09 p.m. UTC | #4
Hi Laurent,

On Wed, Jun 23, 2021 at 2:58 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> On Wed, Jun 23, 2021 at 02:53:33PM +0200, Geert Uytterhoeven wrote:
> > On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham wrote:
> > > From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> > >
> > > Extend the Renesas DU display bindings to support the r8a779a0 V3U.
> > >
> > > Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> >
> > Thanks for your patch!
> >
> > > --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> > > +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> > > @@ -39,6 +39,7 @@ properties:
> > >        - renesas,du-r8a77980 # for R-Car V3H compatible DU
> > >        - renesas,du-r8a77990 # for R-Car E3 compatible DU
> > >        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> > > +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
> > >
> > >    reg:
> > >      maxItems: 1
> > > @@ -774,6 +775,57 @@ allOf:
> > >          - reset-names
> > >          - renesas,vsps
> > >
> > > +  - if:
> > > +      properties:
> > > +        compatible:
> > > +          contains:
> > > +            enum:
> > > +              - renesas,du-r8a779a0
> > > +    then:
> > > +      properties:
> > > +        clocks:
> > > +          items:
> > > +            - description: Functional clock for DU0
> > > +            - description: Functional clock for DU1
> > > +
> > > +        clock-names:
> > > +          items:
> > > +            - const: du.0
> > > +            - const: du.1
> >
> > The hardware block has only a single function clock for both channels,
> > like on R-Car H1.
> >
> > And what about DU_DOTCLKIN?
>
> As far as I can tell, there's no DU_DOTCLKIN in V3U.

See Table 6.13 of the Hardware User's Manual, pin IPC_CLKIN.
Note that the register bits to configure it are present in
drivers/pinctrl/renesas/pfc-r8a779a0.c, but the actual pin group is
missing.

Gr{oetje,eeting}s,

                        Geert
Laurent Pinchart June 23, 2021, 1:14 p.m. UTC | #5
Hi Geert,

On Wed, Jun 23, 2021 at 03:09:06PM +0200, Geert Uytterhoeven wrote:
> On Wed, Jun 23, 2021 at 2:58 PM Laurent Pinchart wrote:
> > On Wed, Jun 23, 2021 at 02:53:33PM +0200, Geert Uytterhoeven wrote:
> > > On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham wrote:
> > > > From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> > > >
> > > > Extend the Renesas DU display bindings to support the r8a779a0 V3U.
> > > >
> > > > Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> > >
> > > Thanks for your patch!
> > >
> > > > --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> > > > +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> > > > @@ -39,6 +39,7 @@ properties:
> > > >        - renesas,du-r8a77980 # for R-Car V3H compatible DU
> > > >        - renesas,du-r8a77990 # for R-Car E3 compatible DU
> > > >        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> > > > +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
> > > >
> > > >    reg:
> > > >      maxItems: 1
> > > > @@ -774,6 +775,57 @@ allOf:
> > > >          - reset-names
> > > >          - renesas,vsps
> > > >
> > > > +  - if:
> > > > +      properties:
> > > > +        compatible:
> > > > +          contains:
> > > > +            enum:
> > > > +              - renesas,du-r8a779a0
> > > > +    then:
> > > > +      properties:
> > > > +        clocks:
> > > > +          items:
> > > > +            - description: Functional clock for DU0
> > > > +            - description: Functional clock for DU1
> > > > +
> > > > +        clock-names:
> > > > +          items:
> > > > +            - const: du.0
> > > > +            - const: du.1
> > >
> > > The hardware block has only a single function clock for both channels,
> > > like on R-Car H1.
> > >
> > > And what about DU_DOTCLKIN?
> >
> > As far as I can tell, there's no DU_DOTCLKIN in V3U.
> 
> See Table 6.13 of the Hardware User's Manual, pin IPC_CLKIN.

Maybe that's incorrect ? There's no mention of DU_DOTCLKIN anywhere
else, and the DU bits that allow selection of the input clocks list the
value documented for Gen3 SoCs as selected DU_DOTCLKIN as reserved.

> Note that the register bits to configure it are present in
> drivers/pinctrl/renesas/pfc-r8a779a0.c, but the actual pin group is
> missing.
Kieran Bingham Sept. 1, 2021, 10:01 p.m. UTC | #6
Hi Geert,

On 23/06/2021 13:53, Geert Uytterhoeven wrote:
> Hi Kieran,
> 
> On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham
> <kieran.bingham@ideasonboard.com> wrote:
>> From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
>>
>> Extend the Renesas DU display bindings to support the r8a779a0 V3U.
>>
>> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> 
> Thanks for your patch!
> 
>> --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
>> +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
>> @@ -39,6 +39,7 @@ properties:
>>        - renesas,du-r8a77980 # for R-Car V3H compatible DU
>>        - renesas,du-r8a77990 # for R-Car E3 compatible DU
>>        - renesas,du-r8a77995 # for R-Car D3 compatible DU
>> +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
>>
>>    reg:
>>      maxItems: 1
>> @@ -774,6 +775,57 @@ allOf:
>>          - reset-names
>>          - renesas,vsps
>>
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            enum:
>> +              - renesas,du-r8a779a0
>> +    then:
>> +      properties:
>> +        clocks:
>> +          items:
>> +            - description: Functional clock for DU0
>> +            - description: Functional clock for DU1
>> +
>> +        clock-names:
>> +          items:
>> +            - const: du.0
>> +            - const: du.1
> 
> The hardware block has only a single function clock for both channels,
> like on R-Car H1.

Indeed, but I believe both channels still need to set them, if they can
be operated independently, the driver looks up the clock based on the
du.%d, and so for DU1, it is simply expressed as the same clock in DT.

Is this acceptable? or is there further issues there?

> 
> And what about DU_DOTCLKIN?

This thread has already discussed this with Laurent, and I concur -
There doesn't appear to be any relevant reference to DU_DOTCLKIN on the
DU side.


> 
> Gr{oetje,eeting}s,
> 
>                         Geert
>
Laurent Pinchart Sept. 1, 2021, 10:13 p.m. UTC | #7
Hi Kieran,

On Wed, Sep 01, 2021 at 11:01:11PM +0100, Kieran Bingham wrote:
> On 23/06/2021 13:53, Geert Uytterhoeven wrote:
> > On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham wrote:
> >> From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> >>
> >> Extend the Renesas DU display bindings to support the r8a779a0 V3U.
> >>
> >> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
> > 
> > Thanks for your patch!
> > 
> >> --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
> >> +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
> >> @@ -39,6 +39,7 @@ properties:
> >>        - renesas,du-r8a77980 # for R-Car V3H compatible DU
> >>        - renesas,du-r8a77990 # for R-Car E3 compatible DU
> >>        - renesas,du-r8a77995 # for R-Car D3 compatible DU
> >> +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
> >>
> >>    reg:
> >>      maxItems: 1
> >> @@ -774,6 +775,57 @@ allOf:
> >>          - reset-names
> >>          - renesas,vsps
> >>
> >> +  - if:
> >> +      properties:
> >> +        compatible:
> >> +          contains:
> >> +            enum:
> >> +              - renesas,du-r8a779a0
> >> +    then:
> >> +      properties:
> >> +        clocks:
> >> +          items:
> >> +            - description: Functional clock for DU0
> >> +            - description: Functional clock for DU1
> >> +
> >> +        clock-names:
> >> +          items:
> >> +            - const: du.0
> >> +            - const: du.1
> > 
> > The hardware block has only a single function clock for both channels,
> > like on R-Car H1.
> 
> Indeed, but I believe both channels still need to set them, if they can
> be operated independently, the driver looks up the clock based on the
> du.%d, and so for DU1, it is simply expressed as the same clock in DT.
> 
> Is this acceptable? or is there further issues there?

Could we handle that on the driver side, like we do for H1 by not
setting RCAR_DU_FEATURE_CRTC_IRQ_CLOCK ? We would probably need to split
that flag in two, as there are two interrupts.

It's a bit annoying not knowing what the MSTP bits do exactly, we've
modelled them as gates for the functional clock, but maybe in cases like
this one the mapping isn't fully correct, I'm not sure.

> > And what about DU_DOTCLKIN?
> 
> This thread has already discussed this with Laurent, and I concur -
> There doesn't appear to be any relevant reference to DU_DOTCLKIN on the
> DU side.
Kieran Bingham Sept. 1, 2021, 11:20 p.m. UTC | #8
Hi Laurent,

On 01/09/2021 23:13, Laurent Pinchart wrote:
> Hi Kieran,
> 
> On Wed, Sep 01, 2021 at 11:01:11PM +0100, Kieran Bingham wrote:
>> On 23/06/2021 13:53, Geert Uytterhoeven wrote:
>>> On Wed, Jun 23, 2021 at 1:11 AM Kieran Bingham wrote:
>>>> From: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
>>>>
>>>> Extend the Renesas DU display bindings to support the r8a779a0 V3U.
>>>>
>>>> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
>>>
>>> Thanks for your patch!
>>>
>>>> --- a/Documentation/devicetree/bindings/display/renesas,du.yaml
>>>> +++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
>>>> @@ -39,6 +39,7 @@ properties:
>>>>        - renesas,du-r8a77980 # for R-Car V3H compatible DU
>>>>        - renesas,du-r8a77990 # for R-Car E3 compatible DU
>>>>        - renesas,du-r8a77995 # for R-Car D3 compatible DU
>>>> +      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
>>>>
>>>>    reg:
>>>>      maxItems: 1
>>>> @@ -774,6 +775,57 @@ allOf:
>>>>          - reset-names
>>>>          - renesas,vsps
>>>>
>>>> +  - if:
>>>> +      properties:
>>>> +        compatible:
>>>> +          contains:
>>>> +            enum:
>>>> +              - renesas,du-r8a779a0
>>>> +    then:
>>>> +      properties:
>>>> +        clocks:
>>>> +          items:
>>>> +            - description: Functional clock for DU0
>>>> +            - description: Functional clock for DU1
>>>> +
>>>> +        clock-names:
>>>> +          items:
>>>> +            - const: du.0
>>>> +            - const: du.1
>>>
>>> The hardware block has only a single function clock for both channels,
>>> like on R-Car H1.
>>
>> Indeed, but I believe both channels still need to set them, if they can
>> be operated independently, the driver looks up the clock based on the
>> du.%d, and so for DU1, it is simply expressed as the same clock in DT.
>>
>> Is this acceptable? or is there further issues there?
> 
> Could we handle that on the driver side, like we do for H1 by not
> setting RCAR_DU_FEATURE_CRTC_IRQ_CLOCK ? We would probably need to split
> that flag in two, as there are two interrupts.

Ok, that's not so bad to split, Done.


> It's a bit annoying not knowing what the MSTP bits do exactly, we've
> modelled them as gates for the functional clock, but maybe in cases like
> this one the mapping isn't fully correct, I'm not sure.
> 
>>> And what about DU_DOTCLKIN?
>>
>> This thread has already discussed this with Laurent, and I concur -
>> There doesn't appear to be any relevant reference to DU_DOTCLKIN on the
>> DU side.
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/renesas,du.yaml b/Documentation/devicetree/bindings/display/renesas,du.yaml
index 121596f106da..febbd89a646e 100644
--- a/Documentation/devicetree/bindings/display/renesas,du.yaml
+++ b/Documentation/devicetree/bindings/display/renesas,du.yaml
@@ -39,6 +39,7 @@  properties:
       - renesas,du-r8a77980 # for R-Car V3H compatible DU
       - renesas,du-r8a77990 # for R-Car E3 compatible DU
       - renesas,du-r8a77995 # for R-Car D3 compatible DU
+      - renesas,du-r8a779a0 # for R-Car V3U compatible DU
 
   reg:
     maxItems: 1
@@ -774,6 +775,57 @@  allOf:
         - reset-names
         - renesas,vsps
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,du-r8a779a0
+    then:
+      properties:
+        clocks:
+          items:
+            - description: Functional clock for DU0
+            - description: Functional clock for DU1
+
+        clock-names:
+          items:
+            - const: du.0
+            - const: du.1
+
+        interrupts:
+          maxItems: 2
+
+        resets:
+          maxItems: 1
+
+        reset-names:
+          items:
+            - const: du.0
+
+        ports:
+          properties:
+            port@0:
+              description: DSI 0
+            port@1:
+              description: DSI 1
+            port@2: false
+            port@3: false
+
+          required:
+            - port@0
+            - port@1
+
+        renesas,vsps:
+          minItems: 2
+
+      required:
+        - clock-names
+        - interrupts
+        - resets
+        - reset-names
+        - renesas,vsps
+
 additionalProperties: false
 
 examples: