Re: [PATCH 1/1] dt-bindings: media: convert imx.txt to yaml format

Rob Herring
2025-04-16T12:42:28Z

On Mon, Apr 14, 2025 at 05:07:18PM -0400, Frank Li wrote:
> Convert binding doc imx.txt to yaml format. Create two yaml files:
> fsl,imx6-mipi-csi2.yaml and fsl,imx-capture-subsystem.yaml.
>
> Additional changes:
> - add example for fsl,imx6-mipi-csi2
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> .../media/fsl,imx-capture-subsystem.yaml | 38 ++++++
> .../bindings/media/fsl,imx6-mipi-csi2.yaml | 126 ++++++++++++++++++
> .../devicetree/bindings/media/imx.txt | 53 --------
> 3 files changed, 164 insertions(+), 53 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/media/fsl,imx-capture-subsystem.yaml
> create mode 100644 Documentation/devicetree/bindings/media/fsl,imx6-mipi-csi2.yaml
> delete mode 100644 Documentation/devicetree/bindings/media/imx.txt
>
> diff --git a/Documentation/devicetree/bindings/media/fsl,imx-capture-subsystem.yaml b/Documentation/devicetree/bindings/media/fsl,imx-capture-subsystem.yaml
> new file mode 100644
> index 0000000000000..77be3c1f37c5b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/fsl,imx-capture-subsystem.yaml
> @@ -0,0 +1,38 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/fsl,imx-capture-subsystem.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Freescale i.MX Media Video Device
> +
> +description:
> + This is the media controller node for video capture support. It is a
> + virtual device that lists the camera serial interface nodes that the
> + media device will control
> +
> +maintainers:
> + - Frank Li <Frank.Li@nxp.com>
> +
> +properties:
> + compatible:
> + const: fsl,imx-capture-subsystem
> +
> + ports:
> + $ref: /schemas/types.yaml#/definitions/phandle-array
> + description:
> + Should contain a list of phandles pointing to camera
> + sensor interface ports of IPU devices.
> +
> +required:
> + - compatible
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + capture-subsystem {
> + compatible = "fsl,imx-capture-subsystem";
> + ports = <&ipu1_csi0>, <&ipu1_csi1>;
> + };
> +
> diff --git a/Documentation/devicetree/bindings/media/fsl,imx6-mipi-csi2.yaml b/Documentation/devicetree/bindings/media/fsl,imx6-mipi-csi2.yaml
> new file mode 100644
> index 0000000000000..1e69a1ff868cd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/media/fsl,imx6-mipi-csi2.yaml
> @@ -0,0 +1,126 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/media/fsl,imx6-mipi-csi2.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MIPI CSI-2 Receiver core in the i.MX SoC
> +
> +description:
> + This is the device node for the MIPI CSI-2 Receiver core in the i.MX
> + SoC. This is a Synopsys Designware MIPI CSI-2 host controller core
> + combined with a D-PHY core mixed into the same register block. In
> + addition this device consists of an i.MX-specific "CSI2IPU gasket"
> + glue logic, also controlled from the same register block. The CSI2IPU
> + gasket demultiplexes the four virtual channel streams from the host
> + controller's 32-bit output image bus onto four 16-bit parallel busses
> + to the i.MX IPU CSIs.
> +
> +maintainers:
> + - Frank Li <Frank.Li@nxp.com>
> +
> +properties:
> + compatible:
> + const: fsl,imx6-mipi-csi2
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: hsi_tx (the D-PHY clock)
> + - description: video_27m (D-PHY PLL reference clock)
> + - description: eim_podf;
> +
> + clock-names:
> + items:
> + - const: dphy
> + - const: ref
> + - const: pix
> +
> + interrupts:
> + maxItems: 2

Need to define each entry though the original binding is not too helpful
there.

> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 0
> +
> + port@0:
> + $ref: /schemas/graph.yaml#/$defs/port-base
> + unevaluatedProperties: false
> + description:
> + Input port node, single endpoint describing the CSI-2 transmitter.
> +
> + properties:
> + endpoint:
> + $ref: video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + clock-lanes:
> + const: 0
> +
> + data-lanes:
> + minItems: 1
> + items:
> + - const: 1
> + - const: 2
> + - const: 3
> + - const: 4
> +
> + required:
> + - data-lanes
> +
> +patternProperties:
> + '^port@[1-4]':

'^port@[1-4]$'

> + $ref: /schemas/graph.yaml#/$defs/port-base
> + unevaluatedProperties: false
> + description:
> + ports 1 through 4 are output ports connecting with parallel bus sink
> + endpoint nodes and correspond to the four MIPI CSI-2 virtual channel
> + outputs.
> +
> + properties:
> + endpoint@0:
> + $ref: video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> + endpoint@1:
> + $ref: video-interfaces.yaml#
> + unevaluatedProperties: false
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/imx6qdl-clock.h>
> +
> + mipi@21dc000 {
> + compatible = "fsl,imx6-mipi-csi2";
> + reg = <0x021dc000 0x4000>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + clocks = <&clks IMX6QDL_CLK_HSI_TX>,
> + <&clks IMX6QDL_CLK_VIDEO_27M>,
> + <&clks IMX6QDL_CLK_EIM_PODF>;
> + clock-names = "dphy", "ref", "pix";
> +
> + port@0 {
> + reg = <0>;
> +
> + endpoint {
> + remote-endpoint = <&ov5640_to_mipi_csi2>;
> + clock-lanes = <0>;
> + data-lanes = <1 2>;
> + };
> + };

I would think at least 1 output port is required?

> + };
> +