162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/nxp,imx8-isi.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: i.MX8 Image Sensing Interface
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The Image Sensing Interface (ISI) combines image processing pipelines with
1462306a36Sopenharmony_ci  DMA engines to process and capture frames originating from a variety of
1562306a36Sopenharmony_ci  sources. The inputs to the ISI go through Pixel Link interfaces, and their
1662306a36Sopenharmony_ci  number and nature is SoC-dependent. They cover both capture interfaces (MIPI
1762306a36Sopenharmony_ci  CSI-2 RX, HDMI RX, ...) and display engine outputs for writeback support.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    enum:
2262306a36Sopenharmony_ci      - fsl,imx8mn-isi
2362306a36Sopenharmony_ci      - fsl,imx8mp-isi
2462306a36Sopenharmony_ci      - fsl,imx93-isi
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  reg:
2762306a36Sopenharmony_ci    maxItems: 1
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  clocks:
3062306a36Sopenharmony_ci    items:
3162306a36Sopenharmony_ci      - description: The AXI clock
3262306a36Sopenharmony_ci      - description: The APB clock
3362306a36Sopenharmony_ci      # TODO: Check if the per-channel ipg_proc_clk clocks need to be specified
3462306a36Sopenharmony_ci      # as well, in case some SoCs have the ability to control them separately.
3562306a36Sopenharmony_ci      # This may be the case of the i.MX8[DQ]X(P)
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  clock-names:
3862306a36Sopenharmony_ci    items:
3962306a36Sopenharmony_ci      - const: axi
4062306a36Sopenharmony_ci      - const: apb
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  fsl,blk-ctrl:
4362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      A phandle referencing the block control that contains the CSIS to ISI
4662306a36Sopenharmony_ci      gasket.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  interrupts:
4962306a36Sopenharmony_ci    description: Processing pipeline interrupts, one per pipeline
5062306a36Sopenharmony_ci    minItems: 1
5162306a36Sopenharmony_ci    maxItems: 2
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci  power-domains:
5462306a36Sopenharmony_ci    maxItems: 1
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  ports:
5762306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
5862306a36Sopenharmony_ci    description: |
5962306a36Sopenharmony_ci      Ports represent the Pixel Link inputs to the ISI. Their number and
6062306a36Sopenharmony_ci      assignment are model-dependent. Each port shall have a single endpoint.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_cirequired:
6362306a36Sopenharmony_ci  - compatible
6462306a36Sopenharmony_ci  - reg
6562306a36Sopenharmony_ci  - interrupts
6662306a36Sopenharmony_ci  - clocks
6762306a36Sopenharmony_ci  - clock-names
6862306a36Sopenharmony_ci  - fsl,blk-ctrl
6962306a36Sopenharmony_ci  - ports
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ciallOf:
7262306a36Sopenharmony_ci  - if:
7362306a36Sopenharmony_ci      properties:
7462306a36Sopenharmony_ci        compatible:
7562306a36Sopenharmony_ci          contains:
7662306a36Sopenharmony_ci            enum:
7762306a36Sopenharmony_ci              - fsl,imx8mn-isi
7862306a36Sopenharmony_ci              - fsl,imx93-isi
7962306a36Sopenharmony_ci    then:
8062306a36Sopenharmony_ci      properties:
8162306a36Sopenharmony_ci        interrupts:
8262306a36Sopenharmony_ci          maxItems: 1
8362306a36Sopenharmony_ci        ports:
8462306a36Sopenharmony_ci          properties:
8562306a36Sopenharmony_ci            port@0:
8662306a36Sopenharmony_ci              description: MIPI CSI-2 RX
8762306a36Sopenharmony_ci          required:
8862306a36Sopenharmony_ci            - port@0
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  - if:
9162306a36Sopenharmony_ci      properties:
9262306a36Sopenharmony_ci        compatible:
9362306a36Sopenharmony_ci          contains:
9462306a36Sopenharmony_ci            const: fsl,imx8mp-isi
9562306a36Sopenharmony_ci    then:
9662306a36Sopenharmony_ci      properties:
9762306a36Sopenharmony_ci        interrupts:
9862306a36Sopenharmony_ci          maxItems: 2
9962306a36Sopenharmony_ci        ports:
10062306a36Sopenharmony_ci          properties:
10162306a36Sopenharmony_ci            port@0:
10262306a36Sopenharmony_ci              description: MIPI CSI-2 RX 0
10362306a36Sopenharmony_ci            port@1:
10462306a36Sopenharmony_ci              description: MIPI CSI-2 RX 1
10562306a36Sopenharmony_ci          required:
10662306a36Sopenharmony_ci            - port@0
10762306a36Sopenharmony_ci            - port@1
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciadditionalProperties: false
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciexamples:
11262306a36Sopenharmony_ci  - |
11362306a36Sopenharmony_ci    #include <dt-bindings/clock/imx8mn-clock.h>
11462306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
11562306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
11662306a36Sopenharmony_ci    #include <dt-bindings/power/imx8mn-power.h>
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci    isi@32e20000 {
11962306a36Sopenharmony_ci        compatible = "fsl,imx8mn-isi";
12062306a36Sopenharmony_ci        reg = <0x32e20000 0x100>;
12162306a36Sopenharmony_ci        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
12262306a36Sopenharmony_ci        clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
12362306a36Sopenharmony_ci                 <&clk IMX8MN_CLK_DISP_APB_ROOT>;
12462306a36Sopenharmony_ci        clock-names = "axi", "apb";
12562306a36Sopenharmony_ci        fsl,blk-ctrl = <&disp_blk_ctrl>;
12662306a36Sopenharmony_ci        power-domains = <&disp_blk_ctrl IMX8MN_DISPBLK_PD_ISI>;
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci        ports {
12962306a36Sopenharmony_ci            #address-cells = <1>;
13062306a36Sopenharmony_ci            #size-cells = <0>;
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci            port@0 {
13362306a36Sopenharmony_ci                reg = <0>;
13462306a36Sopenharmony_ci                isi_in: endpoint {
13562306a36Sopenharmony_ci                    remote-endpoint = <&mipi_csi_out>;
13662306a36Sopenharmony_ci                };
13762306a36Sopenharmony_ci            };
13862306a36Sopenharmony_ci        };
13962306a36Sopenharmony_ci    };
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci  - |
14262306a36Sopenharmony_ci    #include <dt-bindings/clock/imx8mp-clock.h>
14362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
14462306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci    isi@32e00000 {
14762306a36Sopenharmony_ci        compatible = "fsl,imx8mp-isi";
14862306a36Sopenharmony_ci        reg = <0x32e00000 0x4000>;
14962306a36Sopenharmony_ci        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
15062306a36Sopenharmony_ci                     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
15162306a36Sopenharmony_ci        clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>,
15262306a36Sopenharmony_ci                 <&clk IMX8MP_CLK_MEDIA_APB_ROOT>;
15362306a36Sopenharmony_ci        clock-names = "axi", "apb";
15462306a36Sopenharmony_ci        fsl,blk-ctrl = <&media_blk_ctrl>;
15562306a36Sopenharmony_ci        power-domains = <&mediamix_pd>;
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci        ports {
15862306a36Sopenharmony_ci            #address-cells = <1>;
15962306a36Sopenharmony_ci            #size-cells = <0>;
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci            port@0 {
16262306a36Sopenharmony_ci                reg = <0>;
16362306a36Sopenharmony_ci                isi_in_0: endpoint {
16462306a36Sopenharmony_ci                    remote-endpoint = <&mipi_csi_0_out>;
16562306a36Sopenharmony_ci                };
16662306a36Sopenharmony_ci            };
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci            port@1 {
16962306a36Sopenharmony_ci                reg = <1>;
17062306a36Sopenharmony_ci                isi_in_1: endpoint {
17162306a36Sopenharmony_ci                    remote-endpoint = <&mipi_csi_1_out>;
17262306a36Sopenharmony_ci                };
17362306a36Sopenharmony_ci            };
17462306a36Sopenharmony_ci        };
17562306a36Sopenharmony_ci    };
17662306a36Sopenharmony_ci...
177