[v4,1/5] dt-bindings: media: renesas,vin: Add Gen4 family fallback

Message ID 20240624144108.1771189-2-niklas.soderlund+renesas@ragnatech.se (mailing list archive)
State Superseded
Headers
Series rcar-vin: Add support for R-Car V4M |

Commit Message

Niklas Söderlund June 24, 2024, 2:41 p.m. UTC
  The two Gen4 SoCs released (V4H and V4M) that have a video capture
pipeline the VIN IP are very similar.

The datasheet for the two SoCs have small nuances around the Pre-Clip
registers ELPrC and EPPrC in three use-cases, interlaced images,
embedded data and RAW8 input. On V4H the values written to the registers
are based on odd numbers while on V4M they are even numbers, values are
based on the input image size. No board that uses these SoCs which also
have the external peripherals to test these nuances exists. Most likely
this is an issue in the datasheet.

Before adding bindings for V4M add a family compatible fallback for
Gen4. That way the driver only needs to be updated once for Gen4, and we
still have the option to fix any problems in the driver if any testable
differences between the two SoCs is found.

There are already DTS files using the renesas,vin-r8a779g0 compatible
which needs to be updated to not produce a warning for DTS checks. And
the driver will need to kept compatible with renesas,vin-r8a779g0, but
for new Gen4 SoCs such as V4M we can avoid this.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
* Changes since v3
- New in v4.
---
 Documentation/devicetree/bindings/media/renesas,vin.yaml | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

Conor Dooley June 26, 2024, 11:44 a.m. UTC | #1
On Mon, Jun 24, 2024 at 04:41:04PM +0200, Niklas Söderlund wrote:
> The two Gen4 SoCs released (V4H and V4M) that have a video capture
> pipeline the VIN IP are very similar.
> 
> The datasheet for the two SoCs have small nuances around the Pre-Clip
> registers ELPrC and EPPrC in three use-cases, interlaced images,
> embedded data and RAW8 input. On V4H the values written to the registers
> are based on odd numbers while on V4M they are even numbers, values are
> based on the input image size. No board that uses these SoCs which also
> have the external peripherals to test these nuances exists. Most likely
> this is an issue in the datasheet.
> 
> Before adding bindings for V4M add a family compatible fallback for
> Gen4. That way the driver only needs to be updated once for Gen4, and we
> still have the option to fix any problems in the driver if any testable
> differences between the two SoCs is found.
> 
> There are already DTS files using the renesas,vin-r8a779g0 compatible
> which needs to be updated to not produce a warning for DTS checks. And
> the driver will need to kept compatible with renesas,vin-r8a779g0, but
> for new Gen4 SoCs such as V4M we can avoid this.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

Same caveat here. Using the g model as a fallback is, as we already
discussed, an option too and would be less disruptive.
Acked-by: Conor Dooley <conor.dooley@microchip.com>

> ---
> * Changes since v3
> - New in v4.
> ---
>  Documentation/devicetree/bindings/media/renesas,vin.yaml | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/media/renesas,vin.yaml b/Documentation/devicetree/bindings/media/renesas,vin.yaml
> index 5539d0f8e74d..c3ef4fde7baf 100644
> --- a/Documentation/devicetree/bindings/media/renesas,vin.yaml
> +++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml
> @@ -53,7 +53,10 @@ properties:
>                - renesas,vin-r8a77990 # R-Car E3
>                - renesas,vin-r8a77995 # R-Car D3
>                - renesas,vin-r8a779a0 # R-Car V3U
> +      - items:
> +          - enum:
>                - renesas,vin-r8a779g0 # R-Car V4H
> +          - const: renesas,rcar-gen4-vin # Generic R-Car Gen4
>  
>    reg:
>      maxItems: 1
> -- 
> 2.45.2
>
  
Geert Uytterhoeven July 2, 2024, 7:52 a.m. UTC | #2
Hi Niklas,

On Mon, Jun 24, 2024 at 4:43 PM Niklas Söderlund
<niklas.soderlund+renesas@ragnatech.se> wrote:
> The two Gen4 SoCs released (V4H and V4M) that have a video capture
> pipeline the VIN IP are very similar.
>
> The datasheet for the two SoCs have small nuances around the Pre-Clip
> registers ELPrC and EPPrC in three use-cases, interlaced images,
> embedded data and RAW8 input. On V4H the values written to the registers
> are based on odd numbers while on V4M they are even numbers, values are
> based on the input image size. No board that uses these SoCs which also
> have the external peripherals to test these nuances exists. Most likely
> this is an issue in the datasheet.
>
> Before adding bindings for V4M add a family compatible fallback for
> Gen4. That way the driver only needs to be updated once for Gen4, and we
> still have the option to fix any problems in the driver if any testable
> differences between the two SoCs is found.
>
> There are already DTS files using the renesas,vin-r8a779g0 compatible
> which needs to be updated to not produce a warning for DTS checks. And
> the driver will need to kept compatible with renesas,vin-r8a779g0, but
> for new Gen4 SoCs such as V4M we can avoid this.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
> * Changes since v3
> - New in v4.

Thanks for your patch!

> --- a/Documentation/devicetree/bindings/media/renesas,vin.yaml
> +++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml
> @@ -53,7 +53,10 @@ properties:
>                - renesas,vin-r8a77990 # R-Car E3
>                - renesas,vin-r8a77995 # R-Car D3
>                - renesas,vin-r8a779a0 # R-Car V3U

I think R-Car V3U should be moved below, too, as it's the first
member of the R-Car Gen4 family, despite the name.

> +      - items:
> +          - enum:
>                - renesas,vin-r8a779g0 # R-Car V4H
> +          - const: renesas,rcar-gen4-vin # Generic R-Car Gen4

If all differences in the pipeline can be devised from the topology
in DT:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

>
>    reg:
>      maxItems: 1

Gr{oetje,eeting}s,

                        Geert
  
Niklas Söderlund July 2, 2024, 9:06 a.m. UTC | #3
Hi Geert,

Thanks for your review.

On 2024-07-02 09:52:08 +0200, Geert Uytterhoeven wrote:
> Hi Niklas,
> 
> On Mon, Jun 24, 2024 at 4:43 PM Niklas Söderlund
> <niklas.soderlund+renesas@ragnatech.se> wrote:
> > The two Gen4 SoCs released (V4H and V4M) that have a video capture
> > pipeline the VIN IP are very similar.
> >
> > The datasheet for the two SoCs have small nuances around the Pre-Clip
> > registers ELPrC and EPPrC in three use-cases, interlaced images,
> > embedded data and RAW8 input. On V4H the values written to the registers
> > are based on odd numbers while on V4M they are even numbers, values are
> > based on the input image size. No board that uses these SoCs which also
> > have the external peripherals to test these nuances exists. Most likely
> > this is an issue in the datasheet.
> >
> > Before adding bindings for V4M add a family compatible fallback for
> > Gen4. That way the driver only needs to be updated once for Gen4, and we
> > still have the option to fix any problems in the driver if any testable
> > differences between the two SoCs is found.
> >
> > There are already DTS files using the renesas,vin-r8a779g0 compatible
> > which needs to be updated to not produce a warning for DTS checks. And
> > the driver will need to kept compatible with renesas,vin-r8a779g0, but
> > for new Gen4 SoCs such as V4M we can avoid this.
> >
> > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> > ---
> > * Changes since v3
> > - New in v4.
> 
> Thanks for your patch!
> 
> > --- a/Documentation/devicetree/bindings/media/renesas,vin.yaml
> > +++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml
> > @@ -53,7 +53,10 @@ properties:
> >                - renesas,vin-r8a77990 # R-Car E3
> >                - renesas,vin-r8a77995 # R-Car D3
> >                - renesas,vin-r8a779a0 # R-Car V3U
> 
> I think R-Car V3U should be moved below, too, as it's the first
> member of the R-Car Gen4 family, despite the name.

I was a bit conflicted about if I should do this and opted to for the 
least intrusive change. But the change seems to have landed on a good 
note, I will do a new version that covers V3U as well.

> 
> > +      - items:
> > +          - enum:
> >                - renesas,vin-r8a779g0 # R-Car V4H
> > +          - const: renesas,rcar-gen4-vin # Generic R-Car Gen4
> 
> If all differences in the pipeline can be devised from the topology
> in DT:

It can.

> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Thanks!

> 
> >
> >    reg:
> >      maxItems: 1
> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> -- 
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds
  

Patch

diff --git a/Documentation/devicetree/bindings/media/renesas,vin.yaml b/Documentation/devicetree/bindings/media/renesas,vin.yaml
index 5539d0f8e74d..c3ef4fde7baf 100644
--- a/Documentation/devicetree/bindings/media/renesas,vin.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml
@@ -53,7 +53,10 @@  properties:
               - renesas,vin-r8a77990 # R-Car E3
               - renesas,vin-r8a77995 # R-Car D3
               - renesas,vin-r8a779a0 # R-Car V3U
+      - items:
+          - enum:
               - renesas,vin-r8a779g0 # R-Car V4H
+          - const: renesas,rcar-gen4-vin # Generic R-Car Gen4
 
   reg:
     maxItems: 1