diff mbox series

dt-bindings: media: st,stmipid02: Convert the text bindings to YAML

Message ID 20220927005538.690997-1-marex@denx.de (mailing list archive)
State New, archived
Headers show
Series dt-bindings: media: st,stmipid02: Convert the text bindings to YAML | expand

Commit Message

Marek Vasut Sept. 27, 2022, 12:55 a.m. UTC
Convert the text STMIPID02 DT bindings to YAML DT format to permit
validation of DTs using this I2C CSI-2 to CPI bridge.

Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Sylvain Petinot <sylvain.petinot@foss.st.com>
Cc: devicetree@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linux-stm32@st-md-mailman.stormreply.com
To: linux-arm-kernel@lists.infradead.org
---
 .../bindings/media/i2c/st,st-mipid02.txt      |  82 --------
 .../bindings/media/i2c/st,st-mipid02.yaml     | 175 ++++++++++++++++++
 2 files changed, 175 insertions(+), 82 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
 create mode 100644 Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml

Comments

Benjamin Mugnier Sept. 27, 2022, 11:06 a.m. UTC | #1
Hi Marek,

Thank you for your patch.

On 9/27/22 02:55, Marek Vasut wrote:
> Convert the text STMIPID02 DT bindings to YAML DT format to permit
> validation of DTs using this I2C CSI-2 to CPI bridge.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
> Cc: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Sylvain Petinot <sylvain.petinot@foss.st.com>
> Cc: devicetree@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-stm32@st-md-mailman.stormreply.com
> To: linux-arm-kernel@lists.infradead.org
> ---
>  .../bindings/media/i2c/st,st-mipid02.txt      |  82 --------
>  .../bindings/media/i2c/st,st-mipid02.yaml     | 175 ++++++++++++++++++
>  2 files changed, 175 insertions(+), 82 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
>  create mode 100644 Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
> deleted file mode 100644
> index 7976e6c40a80a..0000000000000
> --- a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
> +++ /dev/null
> @@ -1,82 +0,0 @@
> -STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
> -
> -MIPID02 has two CSI-2 input ports, only one of those ports can be active at a
> -time. Active port input stream will be de-serialized and its content outputted
> -through PARALLEL output port.
> -CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2 second
> -input port is a single lane 800Mbps. Both ports support clock and data lane
> -polarity swap. First port also supports data lane swap.
> -PARALLEL output port has a maximum width of 12 bits.
> -Supported formats are RAW6, RAW7, RAW8, RAW10, RAW12, RGB565, RGB888, RGB444,
> -YUV420 8-bit, YUV422 8-bit and YUV420 10-bit.
> -
> -Required Properties:
> -- compatible: shall be "st,st-mipid02"
> -- clocks: reference to the xclk input clock.
> -- clock-names: shall be "xclk".
> -- VDDE-supply: sensor digital IO supply. Must be 1.8 volts.
> -- VDDIN-supply: sensor internal regulator supply. Must be 1.8 volts.
> -
> -Optional Properties:
> -- reset-gpios: reference to the GPIO connected to the xsdn pin, if any.
> -	       This is an active low signal to the mipid02.
> -
> -Required subnodes:
> -  - ports: A ports node with one port child node per device input and output
> -	   port, in accordance with the video interface bindings defined in
> -	   Documentation/devicetree/bindings/media/video-interfaces.txt. The
> -	   port nodes are numbered as follows:
> -
> -	   Port Description
> -	   -----------------------------
> -	   0    CSI-2 first input port
> -	   1    CSI-2 second input port
> -	   2    PARALLEL output
> -
> -Endpoint node required property for CSI-2 connection is:
> -- data-lanes: shall be <1> for Port 1. for Port 0 dual-lane operation shall be
> -<1 2> or <2 1>. For Port 0 single-lane operation shall be <1> or <2>.
> -Endpoint node optional property for CSI-2 connection is:
> -- lane-polarities: any lane can be inverted or not.
> -
> -Endpoint node required property for PARALLEL connection is:
> -- bus-width: shall be set to <6>, <7>, <8>, <10> or <12>.
> -Endpoint node optional properties for PARALLEL connection are:
> -- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
> -LOW being the default.
> -- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
> -LOW being the default.
> -
> -Example:
> -
> -mipid02: csi2rx@14 {
> -	compatible = "st,st-mipid02";
> -	reg = <0x14>;
> -	status = "okay";
> -	clocks = <&clk_ext_camera_12>;
> -	clock-names = "xclk";
> -	VDDE-supply = <&vdd>;
> -	VDDIN-supply = <&vdd>;
> -	ports {
> -		#address-cells = <1>;
> -		#size-cells = <0>;
> -		port@0 {
> -			reg = <0>;
> -
> -			ep0: endpoint {
> -				data-lanes = <1 2>;
> -				remote-endpoint = <&mipi_csi2_in>;
> -			};
> -		};
> -		port@2 {
> -			reg = <2>;
> -
> -			ep2: endpoint {
> -				bus-width = <8>;
> -				hsync-active = <0>;
> -				vsync-active = <0>;
> -				remote-endpoint = <&parallel_out>;
> -			};
> -		};
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
> new file mode 100644
> index 0000000000000..2cb117d883368
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
> @@ -0,0 +1,175 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/i2c/st,st-mipid02.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
> +
> +maintainers:
> +  - Mickael Guene <mickael.guene@foss.st.com>

As Mickael is not the maintainer of the driver anymore, there should be both current maintainers instead, as listed in the MAINTAINER file:
 - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
 - Sylvain Petinot <sylvain.petinot@foss.st.com>
Can you change it while at it ? Thank you.

By the way you will also need to update the MAINTAINERS file to change the st,st-mipid02.txt file to st,st-mipid02.yaml here:
  F:      Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt

> +  - Marek Vasut <marex@denx.de>
> +
> +description:
> +  MIPID02 has two CSI-2 input ports, only one of those ports can be
> +  active at a time. Active port input stream will be de-serialized
> +  and its content outputted through PARALLEL output port.
> +  CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2
> +  second input port is a single lane 800Mbps. Both ports support clock
> +  and data lane polarity swap. First port also supports data lane swap.
> +  PARALLEL output port has a maximum width of 12 bits.
> +  Supported formats are RAW6, RAW7, RAW8, RAW10, RAW12, RGB565, RGB888,
> +  RGB444, YUV420 8-bit, YUV422 8-bit and YUV420 10-bit.
> +
> +properties:
> +  compatible:
> +    const: st,st-mipid02
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  clock-names:
> +    description:
> +      Reference to the xclk input clock.
> +    items:
> +      - const: xclk
> +
> +  VDDE-supply:
> +    description:
> +      Sensor digital IO supply. Must be 1.8 volts.
> +
> +  VDDIN-supply:
> +    description:
> +      Sensor internal regulator supply. Must be 1.8 volts.
> +
> +  reset-gpios:
> +    description:
> +      Reference to the GPIO connected to the xsdn pin, if any.
> +      This is an active low signal to the mipid02.
> +
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +    properties:
> +      port@0:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: CSI-2 first input port
> +        properties:
> +          endpoint:
> +            $ref: /schemas/media/video-interfaces.yaml#
> +            unevaluatedProperties: false
> +
> +            properties:
> +              data-lanes:
> +                description:
> +                  Single-lane operation shall be <1> or <2> .
> +                  Dual-lane operation shall be <1 2> or <2 1> .
> +                minItems: 1
> +                maxItems: 2
> +              lane-polarity:
> +                description:
> +                  Any lane can be inverted or not.
> +                minItems: 1
> +                maxItems: 2
> +
> +            required:
> +              - data-lanes
> +
> +      port@1:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: CSI-2 second input port
> +        properties:
> +          endpoint:
> +            $ref: /schemas/media/video-interfaces.yaml#
> +            unevaluatedProperties: false
> +
> +            properties:
> +              data-lanes:
> +                description:
> +                  Single-lane operation shall be <1> or <2> .
> +                maxItems: 1
> +              lane-polarity:
> +                description:
> +                  Any lane can be inverted or not.
> +                maxItems: 1
> +
> +            required:
> +              - data-lanes
> +
> +      port@2:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: Output port
> +        properties:
> +          endpoint:
> +            $ref: /schemas/media/video-interfaces.yaml#
> +            unevaluatedProperties: false
> +
> +            properties:
> +              bus-width:
> +                enum: [8, 10, 12, 14]

Shouldn't this be [6, 8, 10, 12] as in the original file ?

> +                default: 8

As far as I understand there is no 'default' as this property is required anyway.

> +              hsync-active: true
> +              vsync-active: true
> +
> +            required:
> +              - bus-width
> +
> +    required:
> +      - port@0

Actually it could either be port0 or port1, but not both at the same time, see the 'description' part.
I'm not sure how to describe it in device tree binding though.

> +      - port@2
> +
> +additionalProperties: false
> +
> +required:
> +  - compatible
> +  - reg

I noticed this was missing in the original txt file. Thanks for taking care of it.


Regards,

Benjamin

> +  - clocks
> +  - clock-names
> +  - VDDE-supply
> +  - VDDIN-supply
> +  - ports
> +
> +examples:
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        mipid02: csi2rx@14 {
> +            compatible = "st,st-mipid02";
> +            reg = <0x14>;
> +            status = "okay";
> +            clocks = <&clk_ext_camera_12>;
> +            clock-names = "xclk";
> +            VDDE-supply = <&vdd>;
> +            VDDIN-supply = <&vdd>;
> +            ports {
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +                port@0 {
> +                    reg = <0>;
> +
> +                    ep0: endpoint {
> +                        data-lanes = <1 2>;
> +                        remote-endpoint = <&mipi_csi2_in>;
> +                    };
> +                };
> +                port@2 {
> +                    reg = <2>;
> +
> +                    ep2: endpoint {
> +                        bus-width = <8>;
> +                        hsync-active = <0>;
> +                        vsync-active = <0>;
> +                        remote-endpoint = <&parallel_out>;
> +                    };
> +                };
> +            };
> +        };
> +    };
> +
> +...
kernel test robot Sept. 27, 2022, 6 p.m. UTC | #2
Hi Marek,

I love your patch! Perhaps something to improve:

[auto build test WARNING on media-tree/master]
[also build test WARNING on soc/for-next krzk-dt/for-next linus/master v6.0-rc7 next-20220923]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Marek-Vasut/dt-bindings-media-st-stmipid02-Convert-the-text-bindings-to-YAML/20220927-095824
base:   git://linuxtv.org/media_tree.git master
reproduce:
        # https://github.com/intel-lab-lkp/linux/commit/6e51060582b7a8e6d16553a26358e3d6c56b7520
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Marek-Vasut/dt-bindings-media-st-stmipid02-Convert-the-text-bindings-to-YAML/20220927-095824
        git checkout 6e51060582b7a8e6d16553a26358e3d6c56b7520
        make menuconfig
        # enable CONFIG_COMPILE_TEST, CONFIG_WARN_MISSING_DOCUMENTS, CONFIG_WARN_ABI_ERRORS
        make htmldocs

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> Warning: MAINTAINERS references a file that doesn't exist: Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
Marek Vasut Sept. 27, 2022, 6:45 p.m. UTC | #3
On 9/27/22 13:06, Benjamin MUGNIER wrote:
> Hi Marek,

Hi,

> Thank you for your patch.

Thank you for the review.

[...]

>> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
>> @@ -0,0 +1,175 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/media/i2c/st,st-mipid02.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
>> +
>> +maintainers:
>> +  - Mickael Guene <mickael.guene@foss.st.com>
> 
> As Mickael is not the maintainer of the driver anymore, there should be both current maintainers instead, as listed in the MAINTAINER file:
>   - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
>   - Sylvain Petinot <sylvain.petinot@foss.st.com>
> Can you change it while at it ? Thank you.

Done and done, I also dropped myself from the list, which I hope is OK.

> By the way you will also need to update the MAINTAINERS file to change the st,st-mipid02.txt file to st,st-mipid02.yaml here:
>    F:      Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt

[...]

>> +      port@2:
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>> +        unevaluatedProperties: false
>> +        description: Output port
>> +        properties:
>> +          endpoint:
>> +            $ref: /schemas/media/video-interfaces.yaml#
>> +            unevaluatedProperties: false
>> +
>> +            properties:
>> +              bus-width:
>> +                enum: [8, 10, 12, 14]
> 
> Shouldn't this be [6, 8, 10, 12] as in the original file ?

They are both wrong, per:

https://www.st.com/resource/en/datasheet/stmipid02.pdf
page 5
Table 1. Image format vs. number of bits on output interface
row 2
RAW7 RAW7 7 bits

So this should be
[6, 7, 8, 10, 12]

>> +                default: 8
> 
> As far as I understand there is no 'default' as this property is required anyway.

Dropped.

>> +              hsync-active: true
>> +              vsync-active: true
>> +
>> +            required:
>> +              - bus-width
>> +
>> +    required:
>> +      - port@0
> 
> Actually it could either be port0 or port1, but not both at the same time, see the 'description' part.
> I'm not sure how to describe it in device tree binding though.

I think the requirement here is to have at least one of port@0 or port@1 
described in DT. Both port@0 and port@1 can also be described, i.e. you 
can have FRONT and BACK sensor like on a contemporary smartphone, you 
just cannot start streaming from both sensors at the same time, which is 
a software policy and should be handled by the driver.

See:
https://www.st.com/resource/en/datasheet/stmipid02.pdf
page 3
2 Application diagrams
Figure 2. MIPI CSI-2 application diagram

Per suggestion from Rob, I think this should be

allOf:
   - require:
       - port@0
   - require:
       - port@1
require:
   - port@2

>> +      - port@2
>> +
>> +additionalProperties: false
>> +
>> +required:
>> +  - compatible
>> +  - reg
> 
> I noticed this was missing in the original txt file. Thanks for taking care of it.

Sure. I'm glad to see dtbs_check passing on the stm32mp15xx boards, 
largely thanks to ST doing good job keeping the upstream support in good 
shape.
Benjamin Mugnier Sept. 28, 2022, 8:08 a.m. UTC | #4
Hi Marek,

On 9/27/22 20:45, Marek Vasut wrote:
> On 9/27/22 13:06, Benjamin MUGNIER wrote:
>> Hi Marek,
> 
> Hi,
> 
>> Thank you for your patch.
> 
> Thank you for the review.
> 
> [...]
> 
>>> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
>>> @@ -0,0 +1,175 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/media/i2c/st,st-mipid02.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
>>> +
>>> +maintainers:
>>> +  - Mickael Guene <mickael.guene@foss.st.com>
>>
>> As Mickael is not the maintainer of the driver anymore, there should be both current maintainers instead, as listed in the MAINTAINER file:
>>   - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
>>   - Sylvain Petinot <sylvain.petinot@foss.st.com>
>> Can you change it while at it ? Thank you.
> 
> Done and done, I also dropped myself from the list, which I hope is OK.
> 

No problem for dropping yourself, out of curiosity why so ?

>> By the way you will also need to update the MAINTAINERS file to change the st,st-mipid02.txt file to st,st-mipid02.yaml here:
>>    F:      Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
> 
> [...]
> 
>>> +      port@2:
>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>> +        unevaluatedProperties: false
>>> +        description: Output port
>>> +        properties:
>>> +          endpoint:
>>> +            $ref: /schemas/media/video-interfaces.yaml#
>>> +            unevaluatedProperties: false
>>> +
>>> +            properties:
>>> +              bus-width:
>>> +                enum: [8, 10, 12, 14]
>>
>> Shouldn't this be [6, 8, 10, 12] as in the original file ?
> 
> They are both wrong, per:
> 
> https://www.st.com/resource/en/datasheet/stmipid02.pdf
> page 5
> Table 1. Image format vs. number of bits on output interface
> row 2
> RAW7 RAW7 7 bits
> 
> So this should be
> [6, 7, 8, 10, 12]
> 

Good catch. Thank you.

>>> +                default: 8
>>
>> As far as I understand there is no 'default' as this property is required anyway.
> 
> Dropped.
> 
>>> +              hsync-active: true
>>> +              vsync-active: true
>>> +
>>> +            required:
>>> +              - bus-width
>>> +
>>> +    required:
>>> +      - port@0
>>
>> Actually it could either be port0 or port1, but not both at the same time, see the 'description' part.
>> I'm not sure how to describe it in device tree binding though.
> 
> I think the requirement here is to have at least one of port@0 or port@1 described in DT. Both port@0 and port@1 can also be described, i.e. you can have FRONT and BACK sensor like on a contemporary smartphone, you just cannot start streaming from both sensors at the same time, which is a software policy and should be handled by the driver.

Definitely, the device tree should describe connected ports. This is the software's responsibility to not stream from both.
Rob's suggestion is perfect.


Regards,

Benjamin

> 
> See:
> https://www.st.com/resource/en/datasheet/stmipid02.pdf
> page 3
> 2 Application diagrams
> Figure 2. MIPI CSI-2 application diagram
> 
> Per suggestion from Rob, I think this should be
> 
> allOf:
>   - require:
>       - port@0
>   - require:
>       - port@1
> require:
>   - port@2
> 
>>> +      - port@2
>>> +
>>> +additionalProperties: false
>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>
>> I noticed this was missing in the original txt file. Thanks for taking care of it.
> 
> Sure. I'm glad to see dtbs_check passing on the stm32mp15xx boards, largely thanks to ST doing good job keeping the upstream support in good shape.
Marek Vasut Sept. 28, 2022, 1:32 p.m. UTC | #5
On 9/28/22 10:08, Benjamin MUGNIER wrote:
> Hi Marek,

Hi,

[...]

>>>> +++ b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
>>>> @@ -0,0 +1,175 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/media/i2c/st,st-mipid02.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
>>>> +
>>>> +maintainers:
>>>> +  - Mickael Guene <mickael.guene@foss.st.com>
>>>
>>> As Mickael is not the maintainer of the driver anymore, there should be both current maintainers instead, as listed in the MAINTAINER file:
>>>    - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
>>>    - Sylvain Petinot <sylvain.petinot@foss.st.com>
>>> Can you change it while at it ? Thank you.
>>
>> Done and done, I also dropped myself from the list, which I hope is OK.
>>
> 
> No problem for dropping yourself, out of curiosity why so ?

Just because I think you and Sylvain should be enough to maintain this, 
and it is also likely I won't be contributing to this file much beyond 
this conversion (and get_maintainer.pl would add me on CC anyway).

[...]
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
deleted file mode 100644
index 7976e6c40a80a..0000000000000
--- a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
+++ /dev/null
@@ -1,82 +0,0 @@ 
-STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
-
-MIPID02 has two CSI-2 input ports, only one of those ports can be active at a
-time. Active port input stream will be de-serialized and its content outputted
-through PARALLEL output port.
-CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2 second
-input port is a single lane 800Mbps. Both ports support clock and data lane
-polarity swap. First port also supports data lane swap.
-PARALLEL output port has a maximum width of 12 bits.
-Supported formats are RAW6, RAW7, RAW8, RAW10, RAW12, RGB565, RGB888, RGB444,
-YUV420 8-bit, YUV422 8-bit and YUV420 10-bit.
-
-Required Properties:
-- compatible: shall be "st,st-mipid02"
-- clocks: reference to the xclk input clock.
-- clock-names: shall be "xclk".
-- VDDE-supply: sensor digital IO supply. Must be 1.8 volts.
-- VDDIN-supply: sensor internal regulator supply. Must be 1.8 volts.
-
-Optional Properties:
-- reset-gpios: reference to the GPIO connected to the xsdn pin, if any.
-	       This is an active low signal to the mipid02.
-
-Required subnodes:
-  - ports: A ports node with one port child node per device input and output
-	   port, in accordance with the video interface bindings defined in
-	   Documentation/devicetree/bindings/media/video-interfaces.txt. The
-	   port nodes are numbered as follows:
-
-	   Port Description
-	   -----------------------------
-	   0    CSI-2 first input port
-	   1    CSI-2 second input port
-	   2    PARALLEL output
-
-Endpoint node required property for CSI-2 connection is:
-- data-lanes: shall be <1> for Port 1. for Port 0 dual-lane operation shall be
-<1 2> or <2 1>. For Port 0 single-lane operation shall be <1> or <2>.
-Endpoint node optional property for CSI-2 connection is:
-- lane-polarities: any lane can be inverted or not.
-
-Endpoint node required property for PARALLEL connection is:
-- bus-width: shall be set to <6>, <7>, <8>, <10> or <12>.
-Endpoint node optional properties for PARALLEL connection are:
-- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
-LOW being the default.
-- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
-LOW being the default.
-
-Example:
-
-mipid02: csi2rx@14 {
-	compatible = "st,st-mipid02";
-	reg = <0x14>;
-	status = "okay";
-	clocks = <&clk_ext_camera_12>;
-	clock-names = "xclk";
-	VDDE-supply = <&vdd>;
-	VDDIN-supply = <&vdd>;
-	ports {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		port@0 {
-			reg = <0>;
-
-			ep0: endpoint {
-				data-lanes = <1 2>;
-				remote-endpoint = <&mipi_csi2_in>;
-			};
-		};
-		port@2 {
-			reg = <2>;
-
-			ep2: endpoint {
-				bus-width = <8>;
-				hsync-active = <0>;
-				vsync-active = <0>;
-				remote-endpoint = <&parallel_out>;
-			};
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
new file mode 100644
index 0000000000000..2cb117d883368
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml
@@ -0,0 +1,175 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/st,st-mipid02.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
+
+maintainers:
+  - Mickael Guene <mickael.guene@foss.st.com>
+  - Marek Vasut <marex@denx.de>
+
+description:
+  MIPID02 has two CSI-2 input ports, only one of those ports can be
+  active at a time. Active port input stream will be de-serialized
+  and its content outputted through PARALLEL output port.
+  CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2
+  second input port is a single lane 800Mbps. Both ports support clock
+  and data lane polarity swap. First port also supports data lane swap.
+  PARALLEL output port has a maximum width of 12 bits.
+  Supported formats are RAW6, RAW7, RAW8, RAW10, RAW12, RGB565, RGB888,
+  RGB444, YUV420 8-bit, YUV422 8-bit and YUV420 10-bit.
+
+properties:
+  compatible:
+    const: st,st-mipid02
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    description:
+      Reference to the xclk input clock.
+    items:
+      - const: xclk
+
+  VDDE-supply:
+    description:
+      Sensor digital IO supply. Must be 1.8 volts.
+
+  VDDIN-supply:
+    description:
+      Sensor internal regulator supply. Must be 1.8 volts.
+
+  reset-gpios:
+    description:
+      Reference to the GPIO connected to the xsdn pin, if any.
+      This is an active low signal to the mipid02.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: CSI-2 first input port
+        properties:
+          endpoint:
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              data-lanes:
+                description:
+                  Single-lane operation shall be <1> or <2> .
+                  Dual-lane operation shall be <1 2> or <2 1> .
+                minItems: 1
+                maxItems: 2
+              lane-polarity:
+                description:
+                  Any lane can be inverted or not.
+                minItems: 1
+                maxItems: 2
+
+            required:
+              - data-lanes
+
+      port@1:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: CSI-2 second input port
+        properties:
+          endpoint:
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              data-lanes:
+                description:
+                  Single-lane operation shall be <1> or <2> .
+                maxItems: 1
+              lane-polarity:
+                description:
+                  Any lane can be inverted or not.
+                maxItems: 1
+
+            required:
+              - data-lanes
+
+      port@2:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: Output port
+        properties:
+          endpoint:
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              bus-width:
+                enum: [8, 10, 12, 14]
+                default: 8
+              hsync-active: true
+              vsync-active: true
+
+            required:
+              - bus-width
+
+    required:
+      - port@0
+      - port@2
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - VDDE-supply
+  - VDDIN-supply
+  - ports
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        mipid02: csi2rx@14 {
+            compatible = "st,st-mipid02";
+            reg = <0x14>;
+            status = "okay";
+            clocks = <&clk_ext_camera_12>;
+            clock-names = "xclk";
+            VDDE-supply = <&vdd>;
+            VDDIN-supply = <&vdd>;
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                port@0 {
+                    reg = <0>;
+
+                    ep0: endpoint {
+                        data-lanes = <1 2>;
+                        remote-endpoint = <&mipi_csi2_in>;
+                    };
+                };
+                port@2 {
+                    reg = <2>;
+
+                    ep2: endpoint {
+                        bus-width = <8>;
+                        hsync-active = <0>;
+                        vsync-active = <0>;
+                        remote-endpoint = <&parallel_out>;
+                    };
+                };
+            };
+        };
+    };
+
+...