diff mbox series

[v6,2/3] media: dt-bindings: media: i2c: Add bindings for TW9900

Message ID 6ad44a04366e65d5baec08dd966f5c81995d626d.1696608809.git.mehdi.djait@bootlin.com
State New
Headers show
Series media: i2c: Introduce driver for the TW9900 video decoder | expand

Commit Message

Mehdi Djait Oct. 6, 2023, 4:25 p.m. UTC
The Techwell TW9900 is a video decoder supporting multiple input
standards, such as PAL and NTSC, and outputs a BT.656 video
signal.

It's designed to be low-power, posesses some features such as a
programmable comb-filter, and automatic input standard detection

Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
---
V5->V6: 
- This commit had a "Reviewed-by: Rob Herring <robh@kernel.org>" Tag but
  decided not to collect it because the last Iteration was more than 2
  years ago
- removed SECAM from the mentioned standards
- changed maintainer

V4->V5: 
- renamed the file to match the compatible string, and referenced
  the graph.yaml schema

V3->V4: 
- add the missing reset-gpios node to the binding

V2->V3: 
- fix the example not compiling due to a typo in the reset-gpios
  node.

 .../bindings/media/i2c/techwell,tw9900.yaml   | 61 +++++++++++++++++++
 1 file changed, 61 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml

Comments

Laurent Pinchart Oct. 9, 2023, 2:18 a.m. UTC | #1
Hi Mehdi,

Thank you for the patch.

On Fri, Oct 06, 2023 at 06:25:29PM +0200, Mehdi Djait wrote:
> The Techwell TW9900 is a video decoder supporting multiple input
> standards, such as PAL and NTSC, and outputs a BT.656 video
> signal.
> 
> It's designed to be low-power, posesses some features such as a
> programmable comb-filter, and automatic input standard detection
> 
> Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> ---
> V5->V6: 
> - This commit had a "Reviewed-by: Rob Herring <robh@kernel.org>" Tag but
>   decided not to collect it because the last Iteration was more than 2
>   years ago
> - removed SECAM from the mentioned standards
> - changed maintainer
> 
> V4->V5: 
> - renamed the file to match the compatible string, and referenced
>   the graph.yaml schema
> 
> V3->V4: 
> - add the missing reset-gpios node to the binding
> 
> V2->V3: 
> - fix the example not compiling due to a typo in the reset-gpios
>   node.
> 
>  .../bindings/media/i2c/techwell,tw9900.yaml   | 61 +++++++++++++++++++
>  1 file changed, 61 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> new file mode 100644
> index 000000000000..24bbbff5cc01
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> @@ -0,0 +1,61 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/techwell,tw9900.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Techwell TW9900 NTSC/PAL video decoder
> +
> +maintainers:
> +  - Mehdi Djait <mehdi.djait@bootlin.com>
> +
> +description:
> +  The tw9900 is a multi-standard video decoder, supporting NTSC, PAL standards
> +  with auto-detection features.
> +
> +properties:
> +  compatible:
> +    const: techwell,tw9900
> +
> +  reg:
> +    maxItems: 1
> +
> +  vdd-supply:
> +    description: VDD power supply
> +
> +  reset-gpios:
> +    description: GPIO descriptor for the RESET input pin
> +    maxItems: 1

How about the power down GPIO ?

The chip requires a clock, which is provided by a crystal oscillator in
the block diagram I found. Does it also support an external clock ? If
so the bindings should support it, although this could be added later.

> +
> +  port:
> +    $ref: /schemas/graph.yaml#/properties/port
> +    description:
> +      Video port for the decoder output.

How about input ports, connected to nodes that model the connector(s) ?

> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    #include <dt-bindings/gpio/gpio.h>
> +    i2c {
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +
> +            tw9900: tw9900@44 {
> +                    compatible = "techwell,tw9900";
> +                    reg = <0x44>;
> +
> +                    vdd-supply = <&tw9900_supply>;
> +                    reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
> +
> +                    port {
> +                            tw9900_out: endpoint {
> +                                    remote-endpoint = <&vip_in>;
> +                            };
> +                    };
> +            };
> +    };
Mehdi Djait Oct. 10, 2023, 6:52 p.m. UTC | #2
Hi laurent,

Thank you for the review.

On Mon, Oct 09, 2023 at 05:18:38AM +0300, Laurent Pinchart wrote:
> Hi Mehdi,
> 
> Thank you for the patch.
> 
> On Fri, Oct 06, 2023 at 06:25:29PM +0200, Mehdi Djait wrote:
> > The Techwell TW9900 is a video decoder supporting multiple input
> > standards, such as PAL and NTSC, and outputs a BT.656 video
> > signal.
> > 
> > It's designed to be low-power, posesses some features such as a
> > programmable comb-filter, and automatic input standard detection
> > 
> > Signed-off-by: Mehdi Djait <mehdi.djait@bootlin.com>
> > ---
> > V5->V6: 
> > - This commit had a "Reviewed-by: Rob Herring <robh@kernel.org>" Tag but
> >   decided not to collect it because the last Iteration was more than 2
> >   years ago
> > - removed SECAM from the mentioned standards
> > - changed maintainer
> > 
> > V4->V5: 
> > - renamed the file to match the compatible string, and referenced
> >   the graph.yaml schema
> > 
> > V3->V4: 
> > - add the missing reset-gpios node to the binding
> > 
> > V2->V3: 
> > - fix the example not compiling due to a typo in the reset-gpios
> >   node.
> > 
> >  .../bindings/media/i2c/techwell,tw9900.yaml   | 61 +++++++++++++++++++
> >  1 file changed, 61 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> > new file mode 100644
> > index 000000000000..24bbbff5cc01
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
> > @@ -0,0 +1,61 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/media/i2c/techwell,tw9900.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Techwell TW9900 NTSC/PAL video decoder
> > +
> > +maintainers:
> > +  - Mehdi Djait <mehdi.djait@bootlin.com>
> > +
> > +description:
> > +  The tw9900 is a multi-standard video decoder, supporting NTSC, PAL standards
> > +  with auto-detection features.
> > +
> > +properties:
> > +  compatible:
> > +    const: techwell,tw9900
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  vdd-supply:
> > +    description: VDD power supply
> > +
> > +  reset-gpios:
> > +    description: GPIO descriptor for the RESET input pin
> > +    maxItems: 1
> 
> How about the power down GPIO ?

I will add the power-down GPIO.

> 
> The chip requires a clock, which is provided by a crystal oscillator in
> the block diagram I found. Does it also support an external clock ? If
> so the bindings should support it, although this could be added later.
> 
> > +
> > +  port:
> > +    $ref: /schemas/graph.yaml#/properties/port
> > +    description:
> > +      Video port for the decoder output.
> 
> How about input ports, connected to nodes that model the connector(s) ?
>  

Could this be added later. Tbh I am not familiar with this. 
But if it must be added now: Would this be a correct binding: 

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    patternProperties:
      "^port@[0-1]$":
        $ref: /schemas/graph.yaml#/properties/port
        description: Input port nodes for analog inputs.

    properties:
      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for the decoder output.

and in the example:
...
            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@2 {
                    reg = <2>;

                    endpoint {
                        remote-endpoint = <&vip_in>;
                    };
                };
            };
...

--
Kind Regards
Mehdi Djait
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
new file mode 100644
index 000000000000..24bbbff5cc01
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/techwell,tw9900.yaml
@@ -0,0 +1,61 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/techwell,tw9900.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Techwell TW9900 NTSC/PAL video decoder
+
+maintainers:
+  - Mehdi Djait <mehdi.djait@bootlin.com>
+
+description:
+  The tw9900 is a multi-standard video decoder, supporting NTSC, PAL standards
+  with auto-detection features.
+
+properties:
+  compatible:
+    const: techwell,tw9900
+
+  reg:
+    maxItems: 1
+
+  vdd-supply:
+    description: VDD power supply
+
+  reset-gpios:
+    description: GPIO descriptor for the RESET input pin
+    maxItems: 1
+
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description:
+      Video port for the decoder output.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    i2c {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            tw9900: tw9900@44 {
+                    compatible = "techwell,tw9900";
+                    reg = <0x44>;
+
+                    vdd-supply = <&tw9900_supply>;
+                    reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
+
+                    port {
+                            tw9900_out: endpoint {
+                                    remote-endpoint = <&vip_in>;
+                            };
+                    };
+            };
+    };