diff mbox series

[v3,2/2] dt-bindings: media: Use graph and video-interfaces schemas

Message ID 20201210211625.3070388-6-robh@kernel.org
State Superseded
Headers show
Series dt-bindings: media: Convert video-interfaces.txt to schemas | expand

Commit Message

Rob Herring Dec. 10, 2020, 9:16 p.m. UTC
Now that we have graph and video-interfaces schemas, rework the media
related schemas to use them.

Cc: Maxime Ripard <mripard@kernel.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Jacopo Mondi <jacopo@jmondi.org>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: linux-media@vger.kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
---
v3:
 - Add mipi-ccs.yaml, ovti,ov02a10.yaml

v2:
 - Update based on graph schema changes and addition of video-interfaces
   schemas

---
 .../media/allwinner,sun4i-a10-csi.yaml        |  11 +-
 .../media/allwinner,sun6i-a31-csi.yaml        |  12 +-
 .../bindings/media/i2c/adv7180.yaml           |  36 ++----
 .../bindings/media/i2c/adv7604.yaml           |  37 ++----
 .../bindings/media/i2c/aptina,mt9v111.yaml    |   4 +-
 .../bindings/media/i2c/imi,rdacm2x-gmsl.yaml  |  30 +----
 .../devicetree/bindings/media/i2c/imx219.yaml |  21 ++--
 .../bindings/media/i2c/maxim,max9286.yaml     | 101 ++++------------
 .../bindings/media/i2c/mipi-ccs.yaml          |  15 +--
 .../devicetree/bindings/media/i2c/ov5647.yaml |  20 +---
 .../devicetree/bindings/media/i2c/ov8856.yaml |  21 +---
 .../bindings/media/i2c/ovti,ov02a10.yaml      |  30 ++---
 .../bindings/media/i2c/ovti,ov2680.yaml       |   6 +-
 .../bindings/media/i2c/ovti,ov772x.yaml       |   9 +-
 .../bindings/media/i2c/sony,imx214.yaml       |  25 ++--
 .../bindings/media/i2c/sony,imx274.yaml       |   3 +-
 .../bindings/media/marvell,mmp2-ccic.yaml     |  15 +--
 .../bindings/media/nxp,imx7-csi.yaml          |   5 +-
 .../bindings/media/nxp,imx7-mipi-csi2.yaml    |  32 +----
 .../bindings/media/renesas,ceu.yaml           |  17 +--
 .../bindings/media/renesas,csi2.yaml          |  54 ++-------
 .../bindings/media/renesas,vin.yaml           | 113 +++---------------
 .../bindings/media/rockchip-isp1.yaml         |  40 +------
 .../bindings/media/st,stm32-dcmi.yaml         |  18 +--
 .../devicetree/bindings/media/ti,cal.yaml     |  55 ++-------
 .../bindings/media/xilinx/xlnx,csi2rxss.yaml  |  39 +-----
 26 files changed, 169 insertions(+), 600 deletions(-)

--
2.25.1

Comments

Laurent Pinchart Dec. 16, 2020, 3:19 p.m. UTC | #1
Hi Rob,

Thank you for the patch.

On Thu, Dec 10, 2020 at 03:16:25PM -0600, Rob Herring wrote:
> Now that we have graph and video-interfaces schemas, rework the media

> related schemas to use them.

> 

> Cc: Maxime Ripard <mripard@kernel.org>

> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>

> Cc: Jacopo Mondi <jacopo@jmondi.org>

> Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

> Cc: linux-media@vger.kernel.org

> Signed-off-by: Rob Herring <robh@kernel.org>

> ---

> v3:

>  - Add mipi-ccs.yaml, ovti,ov02a10.yaml

> 

> v2:

>  - Update based on graph schema changes and addition of video-interfaces

>    schemas

> 

> ---

>  .../media/allwinner,sun4i-a10-csi.yaml        |  11 +-

>  .../media/allwinner,sun6i-a31-csi.yaml        |  12 +-

>  .../bindings/media/i2c/adv7180.yaml           |  36 ++----

>  .../bindings/media/i2c/adv7604.yaml           |  37 ++----

>  .../bindings/media/i2c/aptina,mt9v111.yaml    |   4 +-

>  .../bindings/media/i2c/imi,rdacm2x-gmsl.yaml  |  30 +----

>  .../devicetree/bindings/media/i2c/imx219.yaml |  21 ++--

>  .../bindings/media/i2c/maxim,max9286.yaml     | 101 ++++------------

>  .../bindings/media/i2c/mipi-ccs.yaml          |  15 +--

>  .../devicetree/bindings/media/i2c/ov5647.yaml |  20 +---

>  .../devicetree/bindings/media/i2c/ov8856.yaml |  21 +---

>  .../bindings/media/i2c/ovti,ov02a10.yaml      |  30 ++---

>  .../bindings/media/i2c/ovti,ov2680.yaml       |   6 +-

>  .../bindings/media/i2c/ovti,ov772x.yaml       |   9 +-

>  .../bindings/media/i2c/sony,imx214.yaml       |  25 ++--

>  .../bindings/media/i2c/sony,imx274.yaml       |   3 +-

>  .../bindings/media/marvell,mmp2-ccic.yaml     |  15 +--

>  .../bindings/media/nxp,imx7-csi.yaml          |   5 +-

>  .../bindings/media/nxp,imx7-mipi-csi2.yaml    |  32 +----

>  .../bindings/media/renesas,ceu.yaml           |  17 +--

>  .../bindings/media/renesas,csi2.yaml          |  54 ++-------

>  .../bindings/media/renesas,vin.yaml           | 113 +++---------------

>  .../bindings/media/rockchip-isp1.yaml         |  40 +------

>  .../bindings/media/st,stm32-dcmi.yaml         |  18 +--

>  .../devicetree/bindings/media/ti,cal.yaml     |  55 ++-------

>  .../bindings/media/xilinx/xlnx,csi2rxss.yaml  |  39 +-----

>  26 files changed, 169 insertions(+), 600 deletions(-)

> 

> diff --git a/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml b/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml

> index 09318830db47..6ced94064215 100644

> --- a/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml

> +++ b/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml

> @@ -67,14 +67,14 @@ properties:

>    interconnect-names:

>      const: dma-mem

> 

> -  # See ./video-interfaces.txt for details

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      additionalProperties: false

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            bus-width:

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

>            data-active: true

>            hsync-active: true

>            pclk-sample: true

> -          remote-endpoint: true

>            vsync-active: true

> 

>          required:

> @@ -91,12 +90,8 @@ properties:

>            - data-active

>            - hsync-active

>            - pclk-sample

> -          - remote-endpoint

>            - vsync-active

> 

> -    required:

> -      - endpoint

> -

>  required:

>    - compatible

>    - reg

> diff --git a/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml b/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml

> index 1fd9b5532a21..8b568072a069 100644

> --- a/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml

> +++ b/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml

> @@ -40,17 +40,15 @@ properties:

>    resets:

>      maxItems: 1

> 

> -  # See ./video-interfaces.txt for details

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

> -          remote-endpoint: true

> -

>            bus-width:

>              enum: [ 8, 10, 12, 16 ]

> 

> @@ -60,10 +58,6 @@ properties:

> 

>          required:

>            - bus-width

> -          - remote-endpoint

> -

> -    required:

> -      - endpoint

> 

>      additionalProperties: false

> 

> diff --git a/Documentation/devicetree/bindings/media/i2c/adv7180.yaml b/Documentation/devicetree/bindings/media/i2c/adv7180.yaml

> index d8c54f9d9506..bcfd93739b4f 100644

> --- a/Documentation/devicetree/bindings/media/i2c/adv7180.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/adv7180.yaml

> @@ -36,17 +36,9 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> -    description:

> -      A node containing a single endpoint as doucmented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> -

> -  ports:

> -    type: object

> -    description:

> -      A node containing input and output port nodes with endpoint definitions

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> +    $ref: /schemas/graph.yaml#/properties/port

> +

> +  ports: true

> 

>  additionalProperties: false

> 

> @@ -80,25 +72,20 @@ allOf:

>      then:

>        properties:

>          ports:

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

>            properties:

> -            '#address-cells':

> -              const: 1

> -            '#size-cells':

> -              const: 0

>              port@3:

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Output port

> 

>            patternProperties:

>              "^port@[0-2]$":

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Input port

> 

>            required:

>              - port@3

> 

> -          additionalProperties: false

> -

>        required:

>          - ports

> 

> @@ -110,25 +97,20 @@ allOf:

>      then:

>        properties:

>          ports:

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

>            properties:

> -            '#address-cells':

> -              const: 1

> -            '#size-cells':

> -              const: 0

>              port@6:

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Output port

> 

>            patternProperties:

>              "^port@[0-5]$":

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Input port

> 

>            required:

>              - port@6

> 

> -          additionalProperties: false

> -

>        required:

>          - ports

> 

> diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.yaml b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml

> index 407baddfaa1d..df634b0c1f8c 100644

> --- a/Documentation/devicetree/bindings/media/i2c/adv7604.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml

> @@ -64,16 +64,12 @@ properties:

>      description:

>        Select which input is selected after reset.

> 

> -  ports:

> -    type: object

> -    description:

> -      A node containing input and output port nodes with endpoint definitions

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> +  ports: true

> 

>  required:

>    - compatible

>    - reg

> +  - ports

> 

>  additionalProperties: false

> 

> @@ -86,26 +82,19 @@ allOf:

>      then:

>        properties:

>          ports:

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

>            properties:

> -            '#address-cells':

> -              const: 1

> -            '#size-cells':

> -              const: 0

>              port@0:

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Input port

> +

>              port@1:

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Output port

> 

>            required:

>              - port@1

> 

> -          additionalProperties: false

> -

> -      required:

> -        - ports

> -

>    - if:

>        properties:

>          compatible:

> @@ -114,28 +103,20 @@ allOf:

>      then:

>        properties:

>          ports:

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

>            properties:

> -            '#address-cells':

> -              const: 1

> -            '#size-cells':

> -              const: 0

>              port@2:

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Output port

> 

>            patternProperties:

>              "^port@[0-1]$":

> -              type: object

> +              $ref: /schemas/graph.yaml#/properties/port

>                description: Input port

> 

>            required:

>              - port@2

> 

> -          additionalProperties: false

> -

> -      required:

> -        - ports

> -

>  examples:

>    - |

>      #include <dt-bindings/gpio/gpio.h>

> diff --git a/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml b/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml

> index ff9546e95d05..e53b8d65f381 100644

> --- a/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml

> @@ -41,9 +41,9 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/properties/port

>      description: |

> -      Output video port. See ../video-interfaces.txt.

> +      Output video port.

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml

> index 3dc06c628e64..e57575c44930 100644

> --- a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml

> @@ -86,33 +86,9 @@ properties:

>      maxItems: 3

> 

>    port:

> -    type: object

> -    additionalProperties: false

> -    description: -|

> -      Connection to the remote GMSL endpoint are modelled using the OF graph

> -      bindings in accordance with the video interface bindings defined in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt.

> -

> -      The device node contains a single "port" child node with a single

> -      "endpoint" sub-device.

> -

> -    properties:

> -      endpoint:

> -        type: object

> -        additionalProperties: false

> -

> -        properties:

> -          remote-endpoint:

> -            description: -|

> -              phandle to the remote GMSL endpoint sub-node in the remote node

> -              port.

> -            maxItems: 1

> -

> -        required:

> -          - remote-endpoint

> -

> -    required:

> -      - endpoint

> +    $ref: /schemas/graph.yaml#/properties/port

> +    description:

> +      Connection to the remote GMSL endpoint.

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/i2c/imx219.yaml b/Documentation/devicetree/bindings/media/i2c/imx219.yaml

> index dfc4d29a4f04..012c0565d8ae 100644

> --- a/Documentation/devicetree/bindings/media/i2c/imx219.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/imx219.yaml

> @@ -44,12 +44,15 @@ properties:

>        Reference to the GPIO connected to the xclr pin, if any.

>        Must be released (set high) after all supplies are applied.

> 

> -  # See ../video-interfaces.txt for more details

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> +    additionalProperties: false

> +

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> +

>          properties:

>            data-lanes:

>              description: |-

> @@ -60,16 +63,8 @@ properties:

>                - const: 1

>                - const: 2

> 

> -          clock-noncontinuous:

> -            type: boolean

> -            description: |-

> -              MIPI CSI-2 clock is non-continuous if this property is present,

> -              otherwise it's continuous.

> -

> -          link-frequencies:

> -            $ref: /schemas/types.yaml#/definitions/uint64-array

> -            description:

> -              Allowed data bus frequencies.

> +          clock-noncontinuous: true

> +          link-frequencies: true

> 

>          required:

>            - link-frequencies

> diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml

> index 9ea827092fdd..3a52dc81eabd 100644

> --- a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml

> @@ -52,81 +52,41 @@ properties:

>      const: 2

> 

>    ports:

> -    type: object

> -    description: |

> -      The connections to the MAX9286 GMSL and its endpoint nodes are modelled

> -      using the OF graph bindings in accordance with the video interface

> -      bindings defined in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt.

> -

> -      The following table lists the port number corresponding to each device

> -      port.

> -

> -        Port            Description

> -        ----------------------------------------

> -        Port 0          GMSL Input 0

> -        Port 1          GMSL Input 1

> -        Port 2          GMSL Input 2

> -        Port 3          GMSL Input 3

> -        Port 4          CSI-2 Output

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

> 

>      properties:

> -      '#address-cells':

> -        const: 1

> -

> -      '#size-cells':

> -        const: 0

> -

> -      port@[0-3]:

> -        type: object

> -        properties:

> -          reg:

> -            enum: [ 0, 1, 2, 3 ]

> -

> -          endpoint:

> -            type: object

> -

> -            properties:

> -              remote-endpoint:

> -                description: |

> -                 phandle to the remote GMSL source endpoint subnode in the

> -                 remote node port.

> +      port@0:

> +        $ref: /schemas/graph.yaml#/properties/port

> +        description: GMSL Input 0

> 

> -            required:

> -              - remote-endpoint

> +      port@1:

> +        $ref: /schemas/graph.yaml#/properties/port

> +        description: GMSL Input 1

> 

> -        required:

> -          - reg

> -          - endpoint

> +      port@2:

> +        $ref: /schemas/graph.yaml#/properties/port

> +        description: GMSL Input 2

> 

> -        additionalProperties: false

> +      port@3:

> +        $ref: /schemas/graph.yaml#/properties/port

> +        description: GMSL Input 3

> 

>        port@4:

> -        type: object

> -        properties:

> -          reg:

> -            const: 4

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

> +        description: CSI-2 Output

> 

> +        properties:

>            endpoint:

> -            type: object

> +            $ref: /schemas/media/video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

> -              remote-endpoint:

> -                description: phandle to the remote CSI-2 sink endpoint.

> -

> -              data-lanes:

> -                description: array of physical CSI-2 data lane indexes.

> +              data-lanes: true

> 

>              required:

> -              - remote-endpoint

>                - data-lanes

> 

> -        required:

> -          - reg

> -          - endpoint

> -

> -        additionalProperties: false

> -

>      required:

>        - port@4

> 

> @@ -184,25 +144,8 @@ properties:

>                    requirements of the currently connected remote device.

> 

>                port:

> -                type: object

> -

> -                properties:

> -                  endpoint:

> -                    type: object

> -

> -                    properties:

> -                      remote-endpoint:

> -                        description: phandle to the MAX9286 sink endpoint.

> -

> -                    required:

> -                      - remote-endpoint

> -

> -                    additionalProperties: false

> -

> -                required:

> -                  - endpoint

> -

> -                additionalProperties: false

> +                $ref: /schemas/graph.yaml#/properties/port

> +                description: Connection to the MAX9286 sink.

> 

>              required:

>                - compatible

> diff --git a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> index d94bd67ccea1..3657f2f41098 100644

> --- a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> @@ -73,19 +73,16 @@ properties:

>      enum: [ 0, 180 ]

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> +    additionalProperties: false

> +

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> +

>          properties:

> -          link-frequencies:

> -            $ref: /schemas/types.yaml#/definitions/uint64-array

> -            description: List of allowed data link frequencies.

> -          data-lanes:

> -            minItems: 1

> -            maxItems: 8


Don't we need

          link-frequencies: true
          data-lanes: true

to convey the fact that those properties are applicable for this device
? This applies to a few locations below too.

>            bus-type:

> -            description: The type of the data bus.

>              oneOf:

>                - const: 1 # CSI-2 C-PHY

>                - const: 3 # CCP2

> diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> index 280c62afae13..3b1ea9da437a 100644

> --- a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> @@ -31,27 +31,15 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> -    description: |-

> -      Should contain one endpoint sub-node used to model connection to the

> -      video receiver according to the specification defined in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt.

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

> -          remote-endpoint:

> -            description: |-

> -              phandle to the video receiver input port.

> -

> -          clock-noncontinuous:

> -            type: boolean

> -            description: |-

> -              Set to true to allow MIPI CSI-2 non-continuous clock operations.

> -

> -        additionalProperties: false

> +          clock-noncontinuous: true

> 

>      additionalProperties: false

> 

> diff --git a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> index cde85553fd01..c29b057ae922 100644

> --- a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> @@ -57,16 +57,13 @@ properties:

>        active low.

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      additionalProperties: false

> -    description:

> -      A node containing an output port node with an endpoint definition

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            data-lanes:

> @@ -79,18 +76,13 @@ properties:

>                - const: 4

> 

>            link-frequencies:

> -            $ref: /schemas/types.yaml#/definitions/uint64-array

> -            description:

> -              Allowed data bus frequencies. 360000000, 180000000 Hz or both

> -              are supported by the driver.

> -

> +            maxItems: 2

> +            items:

> +              enum: [ 360000000, 180000000 ]


This is a limitation of the driver, not the device. Should we keep this
information in a comment, to eventually get it fixed and drop the
limitation from the bindings ?

> 

>          required:

>            - link-frequencies

> 

> -    required:

> -      - endpoint

> -

>  required:

>    - compatible

>    - reg

> @@ -139,4 +131,3 @@ examples:

>          };

>      };

>  ...

> -

> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml

> index 1c3879ec4122..aaf541cd3833 100644

> --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml

> @@ -17,6 +17,9 @@ description: |-

>    @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The

>    sensor output is available via CSI-2 serial data output.

> 

> +allOf:

> +  - $ref: /schemas/media/video-interface-device.yaml#

> +

>  properties:

>    compatible:

>      const: ovti,ov02a10

> @@ -66,42 +69,33 @@ properties:

>      maxItems: 1

> 

>    rotation:

> -    description:

> -      Definition of the sensor's placement.

> -    allOf:

> -      - $ref: "/schemas/types.yaml#/definitions/uint32"

> -      - enum:

> -          - 0    # Sensor Mounted Upright

> -          - 180  # Sensor Mounted Upside Down

> -        default: 0

> -

> -  # See ../video-interfaces.txt for details

> +    enum:

> +      - 0    # Sensor Mounted Upright

> +      - 180  # Sensor Mounted Upside Down

> +    default: 0

> +

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      additionalProperties: false

>      description:

>        Output port node, single endpoint describing the CSI-2 transmitter.

> 

>      properties:

>        endpoint:

> -        type: object

> -        additionalProperties: false

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

> -          link-frequencies: true

>            ovti,mipi-clock-voltage:

> -            allOf:

> -              - $ref: "/schemas/types.yaml#/definitions/uint32"

> +            $ref: "/schemas/types.yaml#/definitions/uint32"

>              description:

>                Definition of MIPI clock voltage unit. This entry corresponds to

>                the link speed defined by the 'link-frequencies' property.

>                If present, the value shall be in the range of 0-4.

>              default: 4

> -          remote-endpoint: true

> 

>          required:

>            - link-frequencies

> -          - remote-endpoint

> 

>      required:

>        - endpoint

> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml

> index 43bf749807e1..cf456f8d9ddc 100644

> --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml

> @@ -50,11 +50,9 @@ properties:

>        Definition of the regulator used as digital power supply.

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/properties/port

>      description:

> -      A node containing an output port node with an endpoint definition

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> +      A node containing an output port node.

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml

> index 6866c2cdac50..44529425ce3a 100644

> --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml

> @@ -37,13 +37,14 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      description: |

> -      Video output port. See ../video-interfaces.txt.

> +      Video output port.

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            bus-type:

> @@ -91,8 +92,6 @@ properties:

>          required:

>            - bus-type

> 

> -        unevaluatedProperties: false

> -

>      additionalProperties: false

> 

>  required:

> diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml

> index 1a3590dd0e98..1b69b6342978 100644

> --- a/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml

> @@ -15,6 +15,9 @@ description: |

>    interface. Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a

>    maximum throughput of 1.2Gbps/lane.

> 

> +allOf:

> +  - $ref: ../video-interface-devices.yaml#

> +

>  properties:

>    compatible:

>      const: sony,imx214

> @@ -47,25 +50,21 @@ properties:

>      description: Chip digital core regulator (1.12V).

>      maxItems: 1

> 

> -  flash-leds:

> -    description: See ../video-interfaces.txt

> -

> -  lens-focus:

> -    description: See ../video-interfaces.txt

> +  flash-leds: true

> +  lens-focus: true

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      description: |

> -      Video output port. See ../video-interfaces.txt.

> +      Video output port.

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: /schemas/media/video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            data-lanes:

> -            $ref: /schemas/types.yaml#/definitions/uint32-array

> -            description: See ../video-interfaces.txt

>              anyOf:

>                - items:

>                    - const: 1

> @@ -76,16 +75,12 @@ properties:

>                    - const: 3

>                    - const: 4

> 

> -          link-frequencies:

> -            $ref: /schemas/types.yaml#/definitions/uint64-array

> -            description: See ../video-interfaces.txt

> +          link-frequencies: true

> 

>          required:

>            - data-lanes

>            - link-frequencies

> 

> -        unevaluatedProperties: false

> -

>      additionalProperties: false

> 

>  required:

> diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml

> index f697e1a20beb..90828020e42a 100644

> --- a/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml

> +++ b/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml

> @@ -44,8 +44,7 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> -    description: Output video port. See ../video-interfaces.txt.

> +    $ref: /schemas/graph.yaml#/properties/port

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml

> index 49bff738aca5..9e85c70d1a1f 100644

> --- a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml

> +++ b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml

> @@ -24,29 +24,20 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

>      additionalProperties: false

> 

>      properties:

>        endpoint:

> -        type: object

> -        additionalProperties: false

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

> -        # Properties described in

> -        # Documentation/devicetree/bindings/media/video-interfaces.txt

>          properties:

> -          remote-endpoint: true

>            hsync-active: true

>            vsync-active: true

>            pclk-sample: true

>            bus-type: true

> 

> -        required:

> -          - remote-endpoint

> -

> -    required:

> -      - endpoint

> -

>    clocks:

>      minItems: 1

>      maxItems: 3

> diff --git a/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml b/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml

> index 4e81a47e60ac..d91575b8ebb9 100644

> --- a/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml

> +++ b/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml

> @@ -33,10 +33,7 @@ properties:

>        - const: mclk

> 

>    port:

> -    type: object

> -    description:

> -      A node containing input port nodes with endpoint definitions as documented

> -      in Documentation/devicetree/bindings/media/video-interfaces.txt

> +    $ref: /schemas/graph.yaml#/properties/port

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml b/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml

> index 0668332959e7..be47a7b62ca9 100644

> --- a/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml

> +++ b/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml

> @@ -58,35 +58,22 @@ properties:

>        Differential receiver (HS-RX) settle time

> 

>    ports:

> -    type: object

> -    description:

> -      A node containing input and output port nodes with endpoint definitions

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

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

> 

>      properties:

> -      '#address-cells':

> -        const: 1

> -

> -      '#size-cells':

> -        const: 0

> -

>        port@0:

> -        type: object

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

>          description:

>            Input port node, single endpoint describing the CSI-2 transmitter.

> 

>          properties:

> -          reg:

> -            const: 0

> -

>            endpoint:

> -            type: object

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

>                data-lanes:

> -                $ref: /schemas/types.yaml#/definitions/uint32-array

> -                description: See ../video-interfaces.txt

>                  oneOf:

>                    - items:

>                        - const: 1

> @@ -94,18 +81,11 @@ properties:

>                        - const: 1

>                        - const: 2

> 

> -              remote-endpoint: true

> -

>              required:

>                - data-lanes

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

> -        additionalProperties: false

> 

>        port@1:

> -        type: object

> +        $ref: /schemas/graph.yaml#/properties/port

>          description:

>            Output port node

> 

> diff --git a/Documentation/devicetree/bindings/media/renesas,ceu.yaml b/Documentation/devicetree/bindings/media/renesas,ceu.yaml

> index c7e1e4fe67e6..50e0740af15a 100644

> --- a/Documentation/devicetree/bindings/media/renesas,ceu.yaml

> +++ b/Documentation/devicetree/bindings/media/renesas,ceu.yaml

> @@ -34,18 +34,15 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> -    additionalProperties: false

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> +    unevaluatedProperties: false

> 

>      properties:

>        endpoint:

> -        type: object

> -        additionalProperties: false

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

> -         # Properties described in

> -         # Documentation/devicetree/bindings/media/video-interfaces.txt

>          properties:

> -          remote-endpoint: true

>            hsync-active: true

>            vsync-active: true

>            field-even-active: false

> @@ -53,12 +50,6 @@ properties:

>              enum: [8, 16]

>              default: 8

> 

> -        required:

> -          - remote-endpoint

> -

> -    required:

> -      - endpoint

> -

>  required:

>    - compatible

>    - reg

> diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml

> index 533c2f181db7..20396f1be999 100644

> --- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml

> +++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml

> @@ -46,24 +46,19 @@ properties:

>      maxItems: 1

> 

>    ports:

> -    type: object

> -    description:

> -      A node containing input and output port nodes with endpoint definitions

> -      as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

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

> 

>      properties:

>        port@0:

> -        type: object

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

>          description:

>            Input port node, single endpoint describing the CSI-2 transmitter.

> 

>          properties:

> -          reg:

> -            const: 0

> -

>            endpoint:

> -            type: object

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

>                clock-lanes:

> @@ -72,50 +67,19 @@ properties:

>                data-lanes:

>                  maxItems: 1

> 

> -              remote-endpoint: true

> -

>              required:

>                - clock-lanes

>                - data-lanes

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

> -        additionalProperties: false

> 

>        port@1:

> -        type: object

> +        $ref: /schemas/graph.yaml#/properties/port

>          description:

>            Output port node, multiple endpoints describing all the R-Car VIN

>            modules connected the CSI-2 receiver.

> 

> -        properties:

> -          '#address-cells':

> -            const: 1

> -

> -          '#size-cells':

> -            const: 0

> -

> -          reg:

> -            const: 1

> -

> -        patternProperties:

> -          "^endpoint@[0-9a-f]$":

> -            type: object

> -

> -            properties:

> -              reg:

> -                maxItems: 1

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - reg

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

> -        additionalProperties: false

> +    required:

> +      - port@0

> +      - port@1

> 

>  required:

>    - compatible

> diff --git a/Documentation/devicetree/bindings/media/renesas,vin.yaml b/Documentation/devicetree/bindings/media/renesas,vin.yaml

> index ad2fe660364b..fe7c4cbfe4ba 100644

> --- a/Documentation/devicetree/bindings/media/renesas,vin.yaml

> +++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml

> @@ -69,15 +69,15 @@ properties:

> 

>    #The per-board settings for Gen2 and RZ/G1 platforms:

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> +    unevaluatedProperties: false

>      description:

> -      A node containing a parallel input with a single endpoint definitions as

> -      documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

> +      A node containing a parallel input

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            hsync-active:

> @@ -106,15 +106,6 @@ properties:

> 

>            data-active: true

> 

> -          remote-endpoint: true

> -

> -        required:

> -          - remote-endpoint

> -

> -        additionalProperties: false

> -

> -    additionalProperties: false

> -

>    #The per-board settings for Gen3 and RZ/G2 platforms:

>    renesas,id:

>      description: VIN channel number

> @@ -123,23 +114,18 @@ properties:

>      maximum: 15

> 

>    ports:

> -    type: object

> -    description:

> -      A node containing input nodes with endpoint definitions as documented in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt

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

> 

>      properties:

>        port@0:

> -        type: object

> +        $ref: /schemas/graph.yaml#/properties/port

>          description:

>            Input port node, single endpoint describing a parallel input source.

> 

>          properties:

> -          reg:

> -            const: 0

> -

>            endpoint:

> -            type: object

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

>                hsync-active:

> @@ -168,98 +154,29 @@ properties:

> 

>                data-active: true

> 

> -              remote-endpoint: true

> -

> -            required:

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

> -        required:

> -          - endpoint

> -

> -        additionalProperties: false

> -

>        port@1:

> -        type: object

> +        $ref: /schemas/graph.yaml#/properties/port

>          description:

>            Input port node, multiple endpoints describing all the R-Car CSI-2

>            modules connected the VIN.

> 

>          properties:

> -          '#address-cells':

> -            const: 1

> -

> -          '#size-cells':

> -            const: 0

> -

> -          reg:

> -            const: 1

> -

>            endpoint@0:

> -            type: object

> +            $ref: /schemas/graph.yaml#/properties/endpoint

>              description: Endpoint connected to CSI20.

> 

> -            properties:

> -              reg:

> -                const: 0

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - reg

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

>            endpoint@1:

> -            type: object

> +            $ref: /schemas/graph.yaml#/properties/endpoint

>              description: Endpoint connected to CSI21.

> 

> -            properties:

> -              reg:

> -                const: 1

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - reg

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

>            endpoint@2:

> -            type: object

> +            $ref: /schemas/graph.yaml#/properties/endpoint

>              description: Endpoint connected to CSI40.

> 

> -            properties:

> -              reg:

> -                const: 2

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - reg

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

>            endpoint@3:

> -            type: object

> +            $ref: /schemas/graph.yaml#/properties/endpoint

>              description: Endpoint connected to CSI41.

> 

> -            properties:

> -              reg:

> -                const: 3

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - reg

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

>          anyOf:

>            - required:

>                - endpoint@0

> @@ -270,8 +187,6 @@ properties:

>            - required:

>                - endpoint@3

> 

> -        additionalProperties: false

> -

>  required:

>    - compatible

>    - reg

> diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml

> index 2004c054ed1a..a6b1eff879ed 100644

> --- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml

> +++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml

> @@ -56,56 +56,26 @@ properties:

>    power-domains:

>      maxItems: 1

> 

> -  # See ./video-interfaces.txt for details

>    ports:

> -    type: object

> -    additionalProperties: false

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

> 

>      properties:

> -      "#address-cells":

> -        const: 1

> -

> -      "#size-cells":

> -        const: 0

> -

>        port@0:

> -        type: object

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

>          description: connection point for sensors at MIPI-DPHY RX0

> -        additionalProperties: false

> 

>          properties:

> -          "#address-cells":

> -            const: 1

> -

> -          "#size-cells":

> -            const: 0

> -

> -          reg:

> -            const: 0

> -

> -        patternProperties:

>            endpoint:

> -            type: object

> -            additionalProperties: false

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

> -              reg:

> -                maxItems: 1

> -

>                data-lanes:

>                  minItems: 1

>                  maxItems: 4

> 

> -              remote-endpoint: true

> -

> -        required:

> -          - reg

> -          - "#address-cells"

> -          - "#size-cells"

> -

>      required:

> -      - "#address-cells"

> -      - "#size-cells"

>        - port@0

> 

>  required:

> diff --git a/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml b/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml

> index c18574bb3e81..41e1d0cd80e5 100644

> --- a/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml

> +++ b/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml

> @@ -37,16 +37,15 @@ properties:

>      maxItems: 1

> 

>    port:

> -    type: object

> +    $ref: /schemas/graph.yaml#/$defs/port-base

> +    unevaluatedProperties: false

>      description:

> -      DCMI supports a single port node with parallel bus. It should contain

> -      one 'port' child node with child 'endpoint' node. Please refer to the

> -      bindings defined in

> -      Documentation/devicetree/bindings/media/video-interfaces.txt.

> +      DCMI supports a single port node with parallel bus.

> 

>      properties:

>        endpoint:

> -        type: object

> +        $ref: video-interfaces.yaml#

> +        unevaluatedProperties: false

> 

>          properties:

>            bus-type:

> @@ -57,8 +56,6 @@ properties:

>              enum: [8, 10, 12, 14]

>              default: 8

> 

> -          remote-endpoint: true

> -

>          allOf:

>            - if:

>                properties:

> @@ -73,14 +70,9 @@ properties:

>                    enum: [8]

> 

>          required:

> -          - remote-endpoint

>            - bus-type

>            - pclk-sample

> 

> -        unevaluatedProperties: false

> -

> -    additionalProperties: false

> -

>  required:

>    - compatible

>    - reg

> diff --git a/Documentation/devicetree/bindings/media/ti,cal.yaml b/Documentation/devicetree/bindings/media/ti,cal.yaml

> index 5e066629287d..65177cd69514 100644

> --- a/Documentation/devicetree/bindings/media/ti,cal.yaml

> +++ b/Documentation/devicetree/bindings/media/ti,cal.yaml

> @@ -15,10 +15,7 @@ description: |-

>    processing capability to connect CSI2 image-sensor modules to the

>    DRA72x device.

> 

> -  CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes

> -  should contain a 'port' child node with child 'endpoint' node. Please

> -  refer to the bindings defined in

> -  Documentation/devicetree/bindings/media/video-interfaces.txt.

> +  CAL supports 2 camera port nodes on MIPI bus.

> 

>  properties:

>    compatible:

> @@ -67,31 +64,19 @@ properties:

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

>      maxItems: 1

> 

> -  # See ./video-interfaces.txt for details

>    ports:

> -    type: object

> -    additionalProperties: false

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

> 

>      properties:

> -      "#address-cells":

> -        const: 1

> -

> -      "#size-cells":

> -        const: 0

> -

>        port@0:

> -        type: object

> -        additionalProperties: false

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

> +        description: CSI2 Port #0

> 

>          properties:

> -          reg:

> -            const: 0

> -            description: CSI2 Port #0

> -

> -        patternProperties:

>            endpoint:

> -            type: object

> -            additionalProperties: false

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

>                clock-lanes:

> @@ -101,24 +86,15 @@ properties:

>                  minItems: 1

>                  maxItems: 4

> 

> -              remote-endpoint: true

> -

> -        required:

> -          - reg

> -

>        port@1:

> -        type: object

> -        additionalProperties: false

> +        $ref: /schemas/graph.yaml#/$defs/port-base

> +        unevaluatedProperties: false

> +        description: CSI2 Port #1

> 

>          properties:

> -          reg:

> -            const: 1

> -            description: CSI2 Port #1

> -

> -        patternProperties:

>            endpoint:

> -            type: object

> -            additionalProperties: false

> +            $ref: video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

>                clock-lanes:

> @@ -128,14 +104,7 @@ properties:

>                  minItems: 1

>                  maxItems: 4

> 

> -              remote-endpoint: true

> -

> -        required:

> -          - reg

> -

>      required:

> -      - "#address-cells"

> -      - "#size-cells"

>        - port@0

> 

>  required:

> diff --git a/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml b/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml

> index 2961a5b6872f..7d77823dbb7a 100644

> --- a/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml

> +++ b/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml

> @@ -97,24 +97,21 @@ properties:

>      maxItems: 1

> 

>    ports:

> -    type: object

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

> 

>      properties:

>        port@0:

> -        type: object

> +        $ref: /schemas/graph.yaml#/$defs/port-base

>          description: |

>            Input / sink port node, single endpoint describing the

>            CSI-2 transmitter.

> 

>          properties:

> -          reg:

> -            const: 0

> -

>            endpoint:

> -            type: object

> +            $ref: /schemas/media/video-interfaces.yaml#

> +            unevaluatedProperties: false

> 

>              properties:

> -

>                data-lanes:

>                  description: |

>                    This is required only in the sink port 0 endpoint which

> @@ -130,41 +127,17 @@ properties:

>                    - const: 3

>                    - const: 4

> 

> -              remote-endpoint: true

> -

>              required:

>                - data-lanes

> -              - remote-endpoint

> -

> -            additionalProperties: false

> 

> -        additionalProperties: false

> +        unevaluatedProperties: false

> 

>        port@1:

> -        type: object

> +        $ref: /schemas/graph.yaml#/properties/port

>          description: |

>            Output / source port node, endpoint describing modules

>            connected the CSI-2 receiver.

> 

> -        properties:

> -

> -          reg:

> -            const: 1

> -

> -          endpoint:

> -            type: object

> -

> -            properties:

> -

> -              remote-endpoint: true

> -

> -            required:

> -              - remote-endpoint

> -

> -            additionalProperties: false

> -

> -        additionalProperties: false

> -

>  required:

>    - compatible

>    - reg


-- 
Regards,

Laurent Pinchart
Rob Herring Dec. 16, 2020, 5:38 p.m. UTC | #2
On Wed, Dec 16, 2020 at 05:19:55PM +0200, Laurent Pinchart wrote:
> Hi Rob,
> 
> Thank you for the patch.
> 
> On Thu, Dec 10, 2020 at 03:16:25PM -0600, Rob Herring wrote:
> > Now that we have graph and video-interfaces schemas, rework the media
> > related schemas to use them.
> > 
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > Cc: Jacopo Mondi <jacopo@jmondi.org>
> > Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> > Cc: linux-media@vger.kernel.org
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---


> > diff --git a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
> > index d94bd67ccea1..3657f2f41098 100644
> > --- a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
> > +++ b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
> > @@ -73,19 +73,16 @@ properties:
> >      enum: [ 0, 180 ]
> > 
> >    port:
> > -    type: object
> > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > +    additionalProperties: false
> > +
> >      properties:
> >        endpoint:
> > -        type: object
> > +        $ref: /schemas/media/video-interfaces.yaml#
> > +        unevaluatedProperties: false
> > +
> >          properties:
> > -          link-frequencies:
> > -            $ref: /schemas/types.yaml#/definitions/uint64-array
> > -            description: List of allowed data link frequencies.
> > -          data-lanes:
> > -            minItems: 1
> > -            maxItems: 8
> 
> Don't we need
> 
>           link-frequencies: true
>           data-lanes: true
> 
> to convey the fact that those properties are applicable for this device
> ? This applies to a few locations below too.

Adding them would convey that to the reader, but wouldn't change the 
schema validation. We'd have to use 'additionalProperties' instead and 
also add 'remote-endpoint' everywhere (and 'reg' sometimes). I prefer 
not doing all that, but if we want it just for purposes of documenting 
the usage, that's fine.

> >            bus-type:
> > -            description: The type of the data bus.
> >              oneOf:
> >                - const: 1 # CSI-2 C-PHY
> >                - const: 3 # CCP2
> > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
> > index 280c62afae13..3b1ea9da437a 100644
> > --- a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
> > +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
> > @@ -31,27 +31,15 @@ properties:
> >      maxItems: 1
> > 
> >    port:
> > -    type: object
> > -    description: |-
> > -      Should contain one endpoint sub-node used to model connection to the
> > -      video receiver according to the specification defined in
> > -      Documentation/devicetree/bindings/media/video-interfaces.txt.
> > +    $ref: /schemas/graph.yaml#/$defs/port-base
> > 
> >      properties:
> >        endpoint:
> > -        type: object
> > +        $ref: /schemas/media/video-interfaces.yaml#
> > +        unevaluatedProperties: false
> > 
> >          properties:
> > -          remote-endpoint:
> > -            description: |-
> > -              phandle to the video receiver input port.
> > -
> > -          clock-noncontinuous:
> > -            type: boolean
> > -            description: |-
> > -              Set to true to allow MIPI CSI-2 non-continuous clock operations.
> > -
> > -        additionalProperties: false
> > +          clock-noncontinuous: true
> > 
> >      additionalProperties: false
> > 
> > diff --git a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
> > index cde85553fd01..c29b057ae922 100644
> > --- a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
> > +++ b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
> > @@ -57,16 +57,13 @@ properties:
> >        active low.
> > 
> >    port:
> > -    type: object
> > +    $ref: /schemas/graph.yaml#/$defs/port-base
> >      additionalProperties: false
> > -    description:
> > -      A node containing an output port node with an endpoint definition
> > -      as documented in
> > -      Documentation/devicetree/bindings/media/video-interfaces.txt
> > 
> >      properties:
> >        endpoint:
> > -        type: object
> > +        $ref: /schemas/media/video-interfaces.yaml#
> > +        unevaluatedProperties: false
> > 
> >          properties:
> >            data-lanes:
> > @@ -79,18 +76,13 @@ properties:
> >                - const: 4
> > 
> >            link-frequencies:
> > -            $ref: /schemas/types.yaml#/definitions/uint64-array
> > -            description:
> > -              Allowed data bus frequencies. 360000000, 180000000 Hz or both
> > -              are supported by the driver.
> > -
> > +            maxItems: 2
> > +            items:
> > +              enum: [ 360000000, 180000000 ]
> 
> This is a limitation of the driver, not the device. Should we keep this
> information in a comment, to eventually get it fixed and drop the
> limitation from the bindings ?

If your dts has anything else, then it won't work. Warning on that seems 
valuable to me, so I think we should keep it. If someone with a better 
driver complains, we can drop it.

I can keep the description with 'Frequencies listed are driver, not h/w 
limitations'.

Rob
Laurent Pinchart Dec. 16, 2020, 5:43 p.m. UTC | #3
Hi Rob,

On Wed, Dec 16, 2020 at 11:38:41AM -0600, Rob Herring wrote:
> On Wed, Dec 16, 2020 at 05:19:55PM +0200, Laurent Pinchart wrote:

> > On Thu, Dec 10, 2020 at 03:16:25PM -0600, Rob Herring wrote:

> > > Now that we have graph and video-interfaces schemas, rework the media

> > > related schemas to use them.

> > > 

> > > Cc: Maxime Ripard <mripard@kernel.org>

> > > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>

> > > Cc: Jacopo Mondi <jacopo@jmondi.org>

> > > Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

> > > Cc: linux-media@vger.kernel.org

> > > Signed-off-by: Rob Herring <robh@kernel.org>

> > > ---

> 

> 

> > > diff --git a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > index d94bd67ccea1..3657f2f41098 100644

> > > --- a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > +++ b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > @@ -73,19 +73,16 @@ properties:

> > >      enum: [ 0, 180 ]

> > > 

> > >    port:

> > > -    type: object

> > > +    $ref: /schemas/graph.yaml#/$defs/port-base

> > > +    additionalProperties: false

> > > +

> > >      properties:

> > >        endpoint:

> > > -        type: object

> > > +        $ref: /schemas/media/video-interfaces.yaml#

> > > +        unevaluatedProperties: false

> > > +

> > >          properties:

> > > -          link-frequencies:

> > > -            $ref: /schemas/types.yaml#/definitions/uint64-array

> > > -            description: List of allowed data link frequencies.

> > > -          data-lanes:

> > > -            minItems: 1

> > > -            maxItems: 8

> > 

> > Don't we need

> > 

> >           link-frequencies: true

> >           data-lanes: true

> > 

> > to convey the fact that those properties are applicable for this device

> > ? This applies to a few locations below too.

> 

> Adding them would convey that to the reader, but wouldn't change the 

> schema validation. We'd have to use 'additionalProperties' instead and 

> also add 'remote-endpoint' everywhere (and 'reg' sometimes). I prefer 

> not doing all that, but if we want it just for purposes of documenting 

> the usage, that's fine.


I'd prefer keeping it to document what properties are applicable. If we
can later find a better way to express it in a way that will be taken
into account during validation, that will be best, but not required now.

> > >            bus-type:

> > > -            description: The type of the data bus.

> > >              oneOf:

> > >                - const: 1 # CSI-2 C-PHY

> > >                - const: 3 # CCP2

> > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> > > index 280c62afae13..3b1ea9da437a 100644

> > > --- a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> > > +++ b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml

> > > @@ -31,27 +31,15 @@ properties:

> > >      maxItems: 1

> > > 

> > >    port:

> > > -    type: object

> > > -    description: |-

> > > -      Should contain one endpoint sub-node used to model connection to the

> > > -      video receiver according to the specification defined in

> > > -      Documentation/devicetree/bindings/media/video-interfaces.txt.

> > > +    $ref: /schemas/graph.yaml#/$defs/port-base

> > > 

> > >      properties:

> > >        endpoint:

> > > -        type: object

> > > +        $ref: /schemas/media/video-interfaces.yaml#

> > > +        unevaluatedProperties: false

> > > 

> > >          properties:

> > > -          remote-endpoint:

> > > -            description: |-

> > > -              phandle to the video receiver input port.

> > > -

> > > -          clock-noncontinuous:

> > > -            type: boolean

> > > -            description: |-

> > > -              Set to true to allow MIPI CSI-2 non-continuous clock operations.

> > > -

> > > -        additionalProperties: false

> > > +          clock-noncontinuous: true

> > > 

> > >      additionalProperties: false

> > > 

> > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > index cde85553fd01..c29b057ae922 100644

> > > --- a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > +++ b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > @@ -57,16 +57,13 @@ properties:

> > >        active low.

> > > 

> > >    port:

> > > -    type: object

> > > +    $ref: /schemas/graph.yaml#/$defs/port-base

> > >      additionalProperties: false

> > > -    description:

> > > -      A node containing an output port node with an endpoint definition

> > > -      as documented in

> > > -      Documentation/devicetree/bindings/media/video-interfaces.txt

> > > 

> > >      properties:

> > >        endpoint:

> > > -        type: object

> > > +        $ref: /schemas/media/video-interfaces.yaml#

> > > +        unevaluatedProperties: false

> > > 

> > >          properties:

> > >            data-lanes:

> > > @@ -79,18 +76,13 @@ properties:

> > >                - const: 4

> > > 

> > >            link-frequencies:

> > > -            $ref: /schemas/types.yaml#/definitions/uint64-array

> > > -            description:

> > > -              Allowed data bus frequencies. 360000000, 180000000 Hz or both

> > > -              are supported by the driver.

> > > -

> > > +            maxItems: 2

> > > +            items:

> > > +              enum: [ 360000000, 180000000 ]

> > 

> > This is a limitation of the driver, not the device. Should we keep this

> > information in a comment, to eventually get it fixed and drop the

> > limitation from the bindings ?

> 

> If your dts has anything else, then it won't work. Warning on that seems 

> valuable to me, so I think we should keep it. If someone with a better 

> driver complains, we can drop it.

> 

> I can keep the description with 'Frequencies listed are driver, not h/w 

> limitations'.


I'm fine with the constraint itself, my comment was referring to the
fact that we're dropping the description. Your description proposal
works for me, thanks.

-- 
Regards,

Laurent Pinchart
Sakari Ailus Dec. 16, 2020, 9:59 p.m. UTC | #4
Hi Laurent, Rob,

On Wed, Dec 16, 2020 at 07:43:45PM +0200, Laurent Pinchart wrote:
> Hi Rob,

> 

> On Wed, Dec 16, 2020 at 11:38:41AM -0600, Rob Herring wrote:

> > On Wed, Dec 16, 2020 at 05:19:55PM +0200, Laurent Pinchart wrote:

> > > On Thu, Dec 10, 2020 at 03:16:25PM -0600, Rob Herring wrote:

> > > > Now that we have graph and video-interfaces schemas, rework the media

> > > > related schemas to use them.

> > > > 

> > > > Cc: Maxime Ripard <mripard@kernel.org>

> > > > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>

> > > > Cc: Jacopo Mondi <jacopo@jmondi.org>

> > > > Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

> > > > Cc: linux-media@vger.kernel.org

> > > > Signed-off-by: Rob Herring <robh@kernel.org>

> > > > ---

> > 

> > 

> > > > diff --git a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > > index d94bd67ccea1..3657f2f41098 100644

> > > > --- a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > > +++ b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml

> > > > @@ -73,19 +73,16 @@ properties:

> > > >      enum: [ 0, 180 ]

> > > > 

> > > >    port:

> > > > -    type: object

> > > > +    $ref: /schemas/graph.yaml#/$defs/port-base

> > > > +    additionalProperties: false

> > > > +

> > > >      properties:

> > > >        endpoint:

> > > > -        type: object

> > > > +        $ref: /schemas/media/video-interfaces.yaml#

> > > > +        unevaluatedProperties: false

> > > > +

> > > >          properties:

> > > > -          link-frequencies:

> > > > -            $ref: /schemas/types.yaml#/definitions/uint64-array

> > > > -            description: List of allowed data link frequencies.

> > > > -          data-lanes:

> > > > -            minItems: 1

> > > > -            maxItems: 8

> > > 

> > > Don't we need

> > > 

> > >           link-frequencies: true

> > >           data-lanes: true

> > > 

> > > to convey the fact that those properties are applicable for this device

> > > ? This applies to a few locations below too.

> > 

> > Adding them would convey that to the reader, but wouldn't change the 

> > schema validation. We'd have to use 'additionalProperties' instead and 

> > also add 'remote-endpoint' everywhere (and 'reg' sometimes). I prefer 

> > not doing all that, but if we want it just for purposes of documenting 

> > the usage, that's fine.

> 

> I'd prefer keeping it to document what properties are applicable. If we

> can later find a better way to express it in a way that will be taken

> into account during validation, that will be best, but not required now.


I agree.

There properties that are used for linking other devices such as
flash-leds. It could be related to any camera sensor, independently of its
properties. If we went that way, that should be also added to a lot of
places.

...

> > > > diff --git a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > > index cde85553fd01..c29b057ae922 100644

> > > > --- a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > > +++ b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml

> > > > @@ -57,16 +57,13 @@ properties:

> > > >        active low.

> > > > 

> > > >    port:

> > > > -    type: object

> > > > +    $ref: /schemas/graph.yaml#/$defs/port-base

> > > >      additionalProperties: false

> > > > -    description:

> > > > -      A node containing an output port node with an endpoint definition

> > > > -      as documented in

> > > > -      Documentation/devicetree/bindings/media/video-interfaces.txt

> > > > 

> > > >      properties:

> > > >        endpoint:

> > > > -        type: object

> > > > +        $ref: /schemas/media/video-interfaces.yaml#

> > > > +        unevaluatedProperties: false

> > > > 

> > > >          properties:

> > > >            data-lanes:

> > > > @@ -79,18 +76,13 @@ properties:

> > > >                - const: 4

> > > > 

> > > >            link-frequencies:

> > > > -            $ref: /schemas/types.yaml#/definitions/uint64-array

> > > > -            description:

> > > > -              Allowed data bus frequencies. 360000000, 180000000 Hz or both

> > > > -              are supported by the driver.

> > > > -

> > > > +            maxItems: 2

> > > > +            items:

> > > > +              enum: [ 360000000, 180000000 ]

> > > 

> > > This is a limitation of the driver, not the device. Should we keep this

> > > information in a comment, to eventually get it fixed and drop the

> > > limitation from the bindings ?

> > 

> > If your dts has anything else, then it won't work. Warning on that seems 

> > valuable to me, so I think we should keep it. If someone with a better 

> > driver complains, we can drop it.

> > 

> > I can keep the description with 'Frequencies listed are driver, not h/w 

> > limitations'.

> 

> I'm fine with the constraint itself, my comment was referring to the

> fact that we're dropping the description. Your description proposal

> works for me, thanks.


Sounds good.

-- 
Sakari Ailus
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml b/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
index 09318830db47..6ced94064215 100644
--- a/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
+++ b/Documentation/devicetree/bindings/media/allwinner,sun4i-a10-csi.yaml
@@ -67,14 +67,14 @@  properties:
   interconnect-names:
     const: dma-mem

-  # See ./video-interfaces.txt for details
   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     additionalProperties: false

     properties:
       endpoint:
-        type: object
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           bus-width:
@@ -83,7 +83,6 @@  properties:
           data-active: true
           hsync-active: true
           pclk-sample: true
-          remote-endpoint: true
           vsync-active: true

         required:
@@ -91,12 +90,8 @@  properties:
           - data-active
           - hsync-active
           - pclk-sample
-          - remote-endpoint
           - vsync-active

-    required:
-      - endpoint
-
 required:
   - compatible
   - reg
diff --git a/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml b/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
index 1fd9b5532a21..8b568072a069 100644
--- a/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
+++ b/Documentation/devicetree/bindings/media/allwinner,sun6i-a31-csi.yaml
@@ -40,17 +40,15 @@  properties:
   resets:
     maxItems: 1

-  # See ./video-interfaces.txt for details
   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base

     properties:
       endpoint:
-        type: object
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
-          remote-endpoint: true
-
           bus-width:
             enum: [ 8, 10, 12, 16 ]

@@ -60,10 +58,6 @@  properties:

         required:
           - bus-width
-          - remote-endpoint
-
-    required:
-      - endpoint

     additionalProperties: false

diff --git a/Documentation/devicetree/bindings/media/i2c/adv7180.yaml b/Documentation/devicetree/bindings/media/i2c/adv7180.yaml
index d8c54f9d9506..bcfd93739b4f 100644
--- a/Documentation/devicetree/bindings/media/i2c/adv7180.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/adv7180.yaml
@@ -36,17 +36,9 @@  properties:
     maxItems: 1

   port:
-    type: object
-    description:
-      A node containing a single endpoint as doucmented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
-
-  ports:
-    type: object
-    description:
-      A node containing input and output port nodes with endpoint definitions
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+    $ref: /schemas/graph.yaml#/properties/port
+
+  ports: true

 additionalProperties: false

@@ -80,25 +72,20 @@  allOf:
     then:
       properties:
         ports:
+          $ref: /schemas/graph.yaml#/properties/ports
           properties:
-            '#address-cells':
-              const: 1
-            '#size-cells':
-              const: 0
             port@3:
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Output port

           patternProperties:
             "^port@[0-2]$":
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Input port

           required:
             - port@3

-          additionalProperties: false
-
       required:
         - ports

@@ -110,25 +97,20 @@  allOf:
     then:
       properties:
         ports:
+          $ref: /schemas/graph.yaml#/properties/ports
           properties:
-            '#address-cells':
-              const: 1
-            '#size-cells':
-              const: 0
             port@6:
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Output port

           patternProperties:
             "^port@[0-5]$":
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Input port

           required:
             - port@6

-          additionalProperties: false
-
       required:
         - ports

diff --git a/Documentation/devicetree/bindings/media/i2c/adv7604.yaml b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml
index 407baddfaa1d..df634b0c1f8c 100644
--- a/Documentation/devicetree/bindings/media/i2c/adv7604.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/adv7604.yaml
@@ -64,16 +64,12 @@  properties:
     description:
       Select which input is selected after reset.

-  ports:
-    type: object
-    description:
-      A node containing input and output port nodes with endpoint definitions
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+  ports: true

 required:
   - compatible
   - reg
+  - ports

 additionalProperties: false

@@ -86,26 +82,19 @@  allOf:
     then:
       properties:
         ports:
+          $ref: /schemas/graph.yaml#/properties/ports
           properties:
-            '#address-cells':
-              const: 1
-            '#size-cells':
-              const: 0
             port@0:
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Input port
+
             port@1:
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Output port

           required:
             - port@1

-          additionalProperties: false
-
-      required:
-        - ports
-
   - if:
       properties:
         compatible:
@@ -114,28 +103,20 @@  allOf:
     then:
       properties:
         ports:
+          $ref: /schemas/graph.yaml#/properties/ports
           properties:
-            '#address-cells':
-              const: 1
-            '#size-cells':
-              const: 0
             port@2:
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Output port

           patternProperties:
             "^port@[0-1]$":
-              type: object
+              $ref: /schemas/graph.yaml#/properties/port
               description: Input port

           required:
             - port@2

-          additionalProperties: false
-
-      required:
-        - ports
-
 examples:
   - |
     #include <dt-bindings/gpio/gpio.h>
diff --git a/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml b/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
index ff9546e95d05..e53b8d65f381 100644
--- a/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
@@ -41,9 +41,9 @@  properties:
     maxItems: 1

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/properties/port
     description: |
-      Output video port. See ../video-interfaces.txt.
+      Output video port.

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
index 3dc06c628e64..e57575c44930 100644
--- a/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
@@ -86,33 +86,9 @@  properties:
     maxItems: 3

   port:
-    type: object
-    additionalProperties: false
-    description: -|
-      Connection to the remote GMSL endpoint are modelled using the OF graph
-      bindings in accordance with the video interface bindings defined in
-      Documentation/devicetree/bindings/media/video-interfaces.txt.
-
-      The device node contains a single "port" child node with a single
-      "endpoint" sub-device.
-
-    properties:
-      endpoint:
-        type: object
-        additionalProperties: false
-
-        properties:
-          remote-endpoint:
-            description: -|
-              phandle to the remote GMSL endpoint sub-node in the remote node
-              port.
-            maxItems: 1
-
-        required:
-          - remote-endpoint
-
-    required:
-      - endpoint
+    $ref: /schemas/graph.yaml#/properties/port
+    description:
+      Connection to the remote GMSL endpoint.

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/i2c/imx219.yaml b/Documentation/devicetree/bindings/media/i2c/imx219.yaml
index dfc4d29a4f04..012c0565d8ae 100644
--- a/Documentation/devicetree/bindings/media/i2c/imx219.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/imx219.yaml
@@ -44,12 +44,15 @@  properties:
       Reference to the GPIO connected to the xclr pin, if any.
       Must be released (set high) after all supplies are applied.

-  # See ../video-interfaces.txt for more details
   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false
+
         properties:
           data-lanes:
             description: |-
@@ -60,16 +63,8 @@  properties:
               - const: 1
               - const: 2

-          clock-noncontinuous:
-            type: boolean
-            description: |-
-              MIPI CSI-2 clock is non-continuous if this property is present,
-              otherwise it's continuous.
-
-          link-frequencies:
-            $ref: /schemas/types.yaml#/definitions/uint64-array
-            description:
-              Allowed data bus frequencies.
+          clock-noncontinuous: true
+          link-frequencies: true

         required:
           - link-frequencies
diff --git a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
index 9ea827092fdd..3a52dc81eabd 100644
--- a/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/maxim,max9286.yaml
@@ -52,81 +52,41 @@  properties:
     const: 2

   ports:
-    type: object
-    description: |
-      The connections to the MAX9286 GMSL and its endpoint nodes are modelled
-      using the OF graph bindings in accordance with the video interface
-      bindings defined in
-      Documentation/devicetree/bindings/media/video-interfaces.txt.
-
-      The following table lists the port number corresponding to each device
-      port.
-
-        Port            Description
-        ----------------------------------------
-        Port 0          GMSL Input 0
-        Port 1          GMSL Input 1
-        Port 2          GMSL Input 2
-        Port 3          GMSL Input 3
-        Port 4          CSI-2 Output
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
-      '#address-cells':
-        const: 1
-
-      '#size-cells':
-        const: 0
-
-      port@[0-3]:
-        type: object
-        properties:
-          reg:
-            enum: [ 0, 1, 2, 3 ]
-
-          endpoint:
-            type: object
-
-            properties:
-              remote-endpoint:
-                description: |
-                 phandle to the remote GMSL source endpoint subnode in the
-                 remote node port.
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: GMSL Input 0

-            required:
-              - remote-endpoint
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: GMSL Input 1

-        required:
-          - reg
-          - endpoint
+      port@2:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: GMSL Input 2

-        additionalProperties: false
+      port@3:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: GMSL Input 3

       port@4:
-        type: object
-        properties:
-          reg:
-            const: 4
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: CSI-2 Output

+        properties:
           endpoint:
-            type: object
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
-              remote-endpoint:
-                description: phandle to the remote CSI-2 sink endpoint.
-
-              data-lanes:
-                description: array of physical CSI-2 data lane indexes.
+              data-lanes: true

             required:
-              - remote-endpoint
               - data-lanes

-        required:
-          - reg
-          - endpoint
-
-        additionalProperties: false
-
     required:
       - port@4

@@ -184,25 +144,8 @@  properties:
                   requirements of the currently connected remote device.

               port:
-                type: object
-
-                properties:
-                  endpoint:
-                    type: object
-
-                    properties:
-                      remote-endpoint:
-                        description: phandle to the MAX9286 sink endpoint.
-
-                    required:
-                      - remote-endpoint
-
-                    additionalProperties: false
-
-                required:
-                  - endpoint
-
-                additionalProperties: false
+                $ref: /schemas/graph.yaml#/properties/port
+                description: Connection to the MAX9286 sink.

             required:
               - compatible
diff --git a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
index d94bd67ccea1..3657f2f41098 100644
--- a/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/mipi-ccs.yaml
@@ -73,19 +73,16 @@  properties:
     enum: [ 0, 180 ]

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false
+
         properties:
-          link-frequencies:
-            $ref: /schemas/types.yaml#/definitions/uint64-array
-            description: List of allowed data link frequencies.
-          data-lanes:
-            minItems: 1
-            maxItems: 8
           bus-type:
-            description: The type of the data bus.
             oneOf:
               - const: 1 # CSI-2 C-PHY
               - const: 3 # CCP2
diff --git a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
index 280c62afae13..3b1ea9da437a 100644
--- a/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ov5647.yaml
@@ -31,27 +31,15 @@  properties:
     maxItems: 1

   port:
-    type: object
-    description: |-
-      Should contain one endpoint sub-node used to model connection to the
-      video receiver according to the specification defined in
-      Documentation/devicetree/bindings/media/video-interfaces.txt.
+    $ref: /schemas/graph.yaml#/$defs/port-base

     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
-          remote-endpoint:
-            description: |-
-              phandle to the video receiver input port.
-
-          clock-noncontinuous:
-            type: boolean
-            description: |-
-              Set to true to allow MIPI CSI-2 non-continuous clock operations.
-
-        additionalProperties: false
+          clock-noncontinuous: true

     additionalProperties: false

diff --git a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
index cde85553fd01..c29b057ae922 100644
--- a/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ov8856.yaml
@@ -57,16 +57,13 @@  properties:
       active low.

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     additionalProperties: false
-    description:
-      A node containing an output port node with an endpoint definition
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt

     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           data-lanes:
@@ -79,18 +76,13 @@  properties:
               - const: 4

           link-frequencies:
-            $ref: /schemas/types.yaml#/definitions/uint64-array
-            description:
-              Allowed data bus frequencies. 360000000, 180000000 Hz or both
-              are supported by the driver.
-
+            maxItems: 2
+            items:
+              enum: [ 360000000, 180000000 ]

         required:
           - link-frequencies

-    required:
-      - endpoint
-
 required:
   - compatible
   - reg
@@ -139,4 +131,3 @@  examples:
         };
     };
 ...
-
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
index 1c3879ec4122..aaf541cd3833 100644
--- a/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov02a10.yaml
@@ -17,6 +17,9 @@  description: |-
   @ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
   sensor output is available via CSI-2 serial data output.

+allOf:
+  - $ref: /schemas/media/video-interface-device.yaml#
+
 properties:
   compatible:
     const: ovti,ov02a10
@@ -66,42 +69,33 @@  properties:
     maxItems: 1

   rotation:
-    description:
-      Definition of the sensor's placement.
-    allOf:
-      - $ref: "/schemas/types.yaml#/definitions/uint32"
-      - enum:
-          - 0    # Sensor Mounted Upright
-          - 180  # Sensor Mounted Upside Down
-        default: 0
-
-  # See ../video-interfaces.txt for details
+    enum:
+      - 0    # Sensor Mounted Upright
+      - 180  # Sensor Mounted Upside Down
+    default: 0
+
   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     additionalProperties: false
     description:
       Output port node, single endpoint describing the CSI-2 transmitter.

     properties:
       endpoint:
-        type: object
-        additionalProperties: false
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
-          link-frequencies: true
           ovti,mipi-clock-voltage:
-            allOf:
-              - $ref: "/schemas/types.yaml#/definitions/uint32"
+            $ref: "/schemas/types.yaml#/definitions/uint32"
             description:
               Definition of MIPI clock voltage unit. This entry corresponds to
               the link speed defined by the 'link-frequencies' property.
               If present, the value shall be in the range of 0-4.
             default: 4
-          remote-endpoint: true

         required:
           - link-frequencies
-          - remote-endpoint

     required:
       - endpoint
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
index 43bf749807e1..cf456f8d9ddc 100644
--- a/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov2680.yaml
@@ -50,11 +50,9 @@  properties:
       Definition of the regulator used as digital power supply.

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/properties/port
     description:
-      A node containing an output port node with an endpoint definition
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+      A node containing an output port node.

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml b/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
index 6866c2cdac50..44529425ce3a 100644
--- a/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov772x.yaml
@@ -37,13 +37,14 @@  properties:
     maxItems: 1

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     description: |
-      Video output port. See ../video-interfaces.txt.
+      Video output port.

     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           bus-type:
@@ -91,8 +92,6 @@  properties:
         required:
           - bus-type

-        unevaluatedProperties: false
-
     additionalProperties: false

 required:
diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
index 1a3590dd0e98..1b69b6342978 100644
--- a/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx214.yaml
@@ -15,6 +15,9 @@  description: |
   interface. Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a
   maximum throughput of 1.2Gbps/lane.

+allOf:
+  - $ref: ../video-interface-devices.yaml#
+
 properties:
   compatible:
     const: sony,imx214
@@ -47,25 +50,21 @@  properties:
     description: Chip digital core regulator (1.12V).
     maxItems: 1

-  flash-leds:
-    description: See ../video-interfaces.txt
-
-  lens-focus:
-    description: See ../video-interfaces.txt
+  flash-leds: true
+  lens-focus: true

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     description: |
-      Video output port. See ../video-interfaces.txt.
+      Video output port.

     properties:
       endpoint:
-        type: object
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           data-lanes:
-            $ref: /schemas/types.yaml#/definitions/uint32-array
-            description: See ../video-interfaces.txt
             anyOf:
               - items:
                   - const: 1
@@ -76,16 +75,12 @@  properties:
                   - const: 3
                   - const: 4

-          link-frequencies:
-            $ref: /schemas/types.yaml#/definitions/uint64-array
-            description: See ../video-interfaces.txt
+          link-frequencies: true

         required:
           - data-lanes
           - link-frequencies

-        unevaluatedProperties: false
-
     additionalProperties: false

 required:
diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml
index f697e1a20beb..90828020e42a 100644
--- a/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx274.yaml
@@ -44,8 +44,7 @@  properties:
     maxItems: 1

   port:
-    type: object
-    description: Output video port. See ../video-interfaces.txt.
+    $ref: /schemas/graph.yaml#/properties/port

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
index 49bff738aca5..9e85c70d1a1f 100644
--- a/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
+++ b/Documentation/devicetree/bindings/media/marvell,mmp2-ccic.yaml
@@ -24,29 +24,20 @@  properties:
     maxItems: 1

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
     additionalProperties: false

     properties:
       endpoint:
-        type: object
-        additionalProperties: false
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

-        # Properties described in
-        # Documentation/devicetree/bindings/media/video-interfaces.txt
         properties:
-          remote-endpoint: true
           hsync-active: true
           vsync-active: true
           pclk-sample: true
           bus-type: true

-        required:
-          - remote-endpoint
-
-    required:
-      - endpoint
-
   clocks:
     minItems: 1
     maxItems: 3
diff --git a/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml b/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
index 4e81a47e60ac..d91575b8ebb9 100644
--- a/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
+++ b/Documentation/devicetree/bindings/media/nxp,imx7-csi.yaml
@@ -33,10 +33,7 @@  properties:
       - const: mclk

   port:
-    type: object
-    description:
-      A node containing input port nodes with endpoint definitions as documented
-      in Documentation/devicetree/bindings/media/video-interfaces.txt
+    $ref: /schemas/graph.yaml#/properties/port

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml b/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
index 0668332959e7..be47a7b62ca9 100644
--- a/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
+++ b/Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
@@ -58,35 +58,22 @@  properties:
       Differential receiver (HS-RX) settle time

   ports:
-    type: object
-    description:
-      A node containing input and output port nodes with endpoint definitions
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
-      '#address-cells':
-        const: 1
-
-      '#size-cells':
-        const: 0
-
       port@0:
-        type: object
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
         description:
           Input port node, single endpoint describing the CSI-2 transmitter.

         properties:
-          reg:
-            const: 0
-
           endpoint:
-            type: object
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
               data-lanes:
-                $ref: /schemas/types.yaml#/definitions/uint32-array
-                description: See ../video-interfaces.txt
                 oneOf:
                   - items:
                       - const: 1
@@ -94,18 +81,11 @@  properties:
                       - const: 1
                       - const: 2

-              remote-endpoint: true
-
             required:
               - data-lanes
-              - remote-endpoint
-
-            additionalProperties: false
-
-        additionalProperties: false

       port@1:
-        type: object
+        $ref: /schemas/graph.yaml#/properties/port
         description:
           Output port node

diff --git a/Documentation/devicetree/bindings/media/renesas,ceu.yaml b/Documentation/devicetree/bindings/media/renesas,ceu.yaml
index c7e1e4fe67e6..50e0740af15a 100644
--- a/Documentation/devicetree/bindings/media/renesas,ceu.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,ceu.yaml
@@ -34,18 +34,15 @@  properties:
     maxItems: 1

   port:
-    type: object
-    additionalProperties: false
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false

     properties:
       endpoint:
-        type: object
-        additionalProperties: false
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

-         # Properties described in
-         # Documentation/devicetree/bindings/media/video-interfaces.txt
         properties:
-          remote-endpoint: true
           hsync-active: true
           vsync-active: true
           field-even-active: false
@@ -53,12 +50,6 @@  properties:
             enum: [8, 16]
             default: 8

-        required:
-          - remote-endpoint
-
-    required:
-      - endpoint
-
 required:
   - compatible
   - reg
diff --git a/Documentation/devicetree/bindings/media/renesas,csi2.yaml b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
index 533c2f181db7..20396f1be999 100644
--- a/Documentation/devicetree/bindings/media/renesas,csi2.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,csi2.yaml
@@ -46,24 +46,19 @@  properties:
     maxItems: 1

   ports:
-    type: object
-    description:
-      A node containing input and output port nodes with endpoint definitions
-      as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
       port@0:
-        type: object
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
         description:
           Input port node, single endpoint describing the CSI-2 transmitter.

         properties:
-          reg:
-            const: 0
-
           endpoint:
-            type: object
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
               clock-lanes:
@@ -72,50 +67,19 @@  properties:
               data-lanes:
                 maxItems: 1

-              remote-endpoint: true
-
             required:
               - clock-lanes
               - data-lanes
-              - remote-endpoint
-
-            additionalProperties: false
-
-        additionalProperties: false

       port@1:
-        type: object
+        $ref: /schemas/graph.yaml#/properties/port
         description:
           Output port node, multiple endpoints describing all the R-Car VIN
           modules connected the CSI-2 receiver.

-        properties:
-          '#address-cells':
-            const: 1
-
-          '#size-cells':
-            const: 0
-
-          reg:
-            const: 1
-
-        patternProperties:
-          "^endpoint@[0-9a-f]$":
-            type: object
-
-            properties:
-              reg:
-                maxItems: 1
-
-              remote-endpoint: true
-
-            required:
-              - reg
-              - remote-endpoint
-
-            additionalProperties: false
-
-        additionalProperties: false
+    required:
+      - port@0
+      - port@1

 required:
   - compatible
diff --git a/Documentation/devicetree/bindings/media/renesas,vin.yaml b/Documentation/devicetree/bindings/media/renesas,vin.yaml
index ad2fe660364b..fe7c4cbfe4ba 100644
--- a/Documentation/devicetree/bindings/media/renesas,vin.yaml
+++ b/Documentation/devicetree/bindings/media/renesas,vin.yaml
@@ -69,15 +69,15 @@  properties:

   #The per-board settings for Gen2 and RZ/G1 platforms:
   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
     description:
-      A node containing a parallel input with a single endpoint definitions as
-      documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+      A node containing a parallel input

     properties:
       endpoint:
-        type: object
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           hsync-active:
@@ -106,15 +106,6 @@  properties:

           data-active: true

-          remote-endpoint: true
-
-        required:
-          - remote-endpoint
-
-        additionalProperties: false
-
-    additionalProperties: false
-
   #The per-board settings for Gen3 and RZ/G2 platforms:
   renesas,id:
     description: VIN channel number
@@ -123,23 +114,18 @@  properties:
     maximum: 15

   ports:
-    type: object
-    description:
-      A node containing input nodes with endpoint definitions as documented in
-      Documentation/devicetree/bindings/media/video-interfaces.txt
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
       port@0:
-        type: object
+        $ref: /schemas/graph.yaml#/properties/port
         description:
           Input port node, single endpoint describing a parallel input source.

         properties:
-          reg:
-            const: 0
-
           endpoint:
-            type: object
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
               hsync-active:
@@ -168,98 +154,29 @@  properties:

               data-active: true

-              remote-endpoint: true
-
-            required:
-              - remote-endpoint
-
-            additionalProperties: false
-
-        required:
-          - endpoint
-
-        additionalProperties: false
-
       port@1:
-        type: object
+        $ref: /schemas/graph.yaml#/properties/port
         description:
           Input port node, multiple endpoints describing all the R-Car CSI-2
           modules connected the VIN.

         properties:
-          '#address-cells':
-            const: 1
-
-          '#size-cells':
-            const: 0
-
-          reg:
-            const: 1
-
           endpoint@0:
-            type: object
+            $ref: /schemas/graph.yaml#/properties/endpoint
             description: Endpoint connected to CSI20.

-            properties:
-              reg:
-                const: 0
-
-              remote-endpoint: true
-
-            required:
-              - reg
-              - remote-endpoint
-
-            additionalProperties: false
-
           endpoint@1:
-            type: object
+            $ref: /schemas/graph.yaml#/properties/endpoint
             description: Endpoint connected to CSI21.

-            properties:
-              reg:
-                const: 1
-
-              remote-endpoint: true
-
-            required:
-              - reg
-              - remote-endpoint
-
-            additionalProperties: false
-
           endpoint@2:
-            type: object
+            $ref: /schemas/graph.yaml#/properties/endpoint
             description: Endpoint connected to CSI40.

-            properties:
-              reg:
-                const: 2
-
-              remote-endpoint: true
-
-            required:
-              - reg
-              - remote-endpoint
-
-            additionalProperties: false
-
           endpoint@3:
-            type: object
+            $ref: /schemas/graph.yaml#/properties/endpoint
             description: Endpoint connected to CSI41.

-            properties:
-              reg:
-                const: 3
-
-              remote-endpoint: true
-
-            required:
-              - reg
-              - remote-endpoint
-
-            additionalProperties: false
-
         anyOf:
           - required:
               - endpoint@0
@@ -270,8 +187,6 @@  properties:
           - required:
               - endpoint@3

-        additionalProperties: false
-
 required:
   - compatible
   - reg
diff --git a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
index 2004c054ed1a..a6b1eff879ed 100644
--- a/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
+++ b/Documentation/devicetree/bindings/media/rockchip-isp1.yaml
@@ -56,56 +56,26 @@  properties:
   power-domains:
     maxItems: 1

-  # See ./video-interfaces.txt for details
   ports:
-    type: object
-    additionalProperties: false
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
-      "#address-cells":
-        const: 1
-
-      "#size-cells":
-        const: 0
-
       port@0:
-        type: object
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
         description: connection point for sensors at MIPI-DPHY RX0
-        additionalProperties: false

         properties:
-          "#address-cells":
-            const: 1
-
-          "#size-cells":
-            const: 0
-
-          reg:
-            const: 0
-
-        patternProperties:
           endpoint:
-            type: object
-            additionalProperties: false
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
-              reg:
-                maxItems: 1
-
               data-lanes:
                 minItems: 1
                 maxItems: 4

-              remote-endpoint: true
-
-        required:
-          - reg
-          - "#address-cells"
-          - "#size-cells"
-
     required:
-      - "#address-cells"
-      - "#size-cells"
       - port@0

 required:
diff --git a/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml b/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml
index c18574bb3e81..41e1d0cd80e5 100644
--- a/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml
+++ b/Documentation/devicetree/bindings/media/st,stm32-dcmi.yaml
@@ -37,16 +37,15 @@  properties:
     maxItems: 1

   port:
-    type: object
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
     description:
-      DCMI supports a single port node with parallel bus. It should contain
-      one 'port' child node with child 'endpoint' node. Please refer to the
-      bindings defined in
-      Documentation/devicetree/bindings/media/video-interfaces.txt.
+      DCMI supports a single port node with parallel bus.

     properties:
       endpoint:
-        type: object
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false

         properties:
           bus-type:
@@ -57,8 +56,6 @@  properties:
             enum: [8, 10, 12, 14]
             default: 8

-          remote-endpoint: true
-
         allOf:
           - if:
               properties:
@@ -73,14 +70,9 @@  properties:
                   enum: [8]

         required:
-          - remote-endpoint
           - bus-type
           - pclk-sample

-        unevaluatedProperties: false
-
-    additionalProperties: false
-
 required:
   - compatible
   - reg
diff --git a/Documentation/devicetree/bindings/media/ti,cal.yaml b/Documentation/devicetree/bindings/media/ti,cal.yaml
index 5e066629287d..65177cd69514 100644
--- a/Documentation/devicetree/bindings/media/ti,cal.yaml
+++ b/Documentation/devicetree/bindings/media/ti,cal.yaml
@@ -15,10 +15,7 @@  description: |-
   processing capability to connect CSI2 image-sensor modules to the
   DRA72x device.

-  CAL supports 2 camera port nodes on MIPI bus. Each CSI2 camera port nodes
-  should contain a 'port' child node with child 'endpoint' node. Please
-  refer to the bindings defined in
-  Documentation/devicetree/bindings/media/video-interfaces.txt.
+  CAL supports 2 camera port nodes on MIPI bus.

 properties:
   compatible:
@@ -67,31 +64,19 @@  properties:
       Documentation/devicetree/bindings/power/power_domain.txt
     maxItems: 1

-  # See ./video-interfaces.txt for details
   ports:
-    type: object
-    additionalProperties: false
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
-      "#address-cells":
-        const: 1
-
-      "#size-cells":
-        const: 0
-
       port@0:
-        type: object
-        additionalProperties: false
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: CSI2 Port #0

         properties:
-          reg:
-            const: 0
-            description: CSI2 Port #0
-
-        patternProperties:
           endpoint:
-            type: object
-            additionalProperties: false
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
               clock-lanes:
@@ -101,24 +86,15 @@  properties:
                 minItems: 1
                 maxItems: 4

-              remote-endpoint: true
-
-        required:
-          - reg
-
       port@1:
-        type: object
-        additionalProperties: false
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: CSI2 Port #1

         properties:
-          reg:
-            const: 1
-            description: CSI2 Port #1
-
-        patternProperties:
           endpoint:
-            type: object
-            additionalProperties: false
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
               clock-lanes:
@@ -128,14 +104,7 @@  properties:
                 minItems: 1
                 maxItems: 4

-              remote-endpoint: true
-
-        required:
-          - reg
-
     required:
-      - "#address-cells"
-      - "#size-cells"
       - port@0

 required:
diff --git a/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml b/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml
index 2961a5b6872f..7d77823dbb7a 100644
--- a/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml
+++ b/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml
@@ -97,24 +97,21 @@  properties:
     maxItems: 1

   ports:
-    type: object
+    $ref: /schemas/graph.yaml#/properties/ports

     properties:
       port@0:
-        type: object
+        $ref: /schemas/graph.yaml#/$defs/port-base
         description: |
           Input / sink port node, single endpoint describing the
           CSI-2 transmitter.

         properties:
-          reg:
-            const: 0
-
           endpoint:
-            type: object
+            $ref: /schemas/media/video-interfaces.yaml#
+            unevaluatedProperties: false

             properties:
-
               data-lanes:
                 description: |
                   This is required only in the sink port 0 endpoint which
@@ -130,41 +127,17 @@  properties:
                   - const: 3
                   - const: 4

-              remote-endpoint: true
-
             required:
               - data-lanes
-              - remote-endpoint
-
-            additionalProperties: false

-        additionalProperties: false
+        unevaluatedProperties: false

       port@1:
-        type: object
+        $ref: /schemas/graph.yaml#/properties/port
         description: |
           Output / source port node, endpoint describing modules
           connected the CSI-2 receiver.

-        properties:
-
-          reg:
-            const: 1
-
-          endpoint:
-            type: object
-
-            properties:
-
-              remote-endpoint: true
-
-            required:
-              - remote-endpoint
-
-            additionalProperties: false
-
-        additionalProperties: false
-
 required:
   - compatible
   - reg