1b28e2418SLaurent Pinchart# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2b28e2418SLaurent Pinchart%YAML 1.2
3b28e2418SLaurent Pinchart---
4b28e2418SLaurent Pinchart$id: http://devicetree.org/schemas/media/nxp,imx8-isi.yaml#
5b28e2418SLaurent Pinchart$schema: http://devicetree.org/meta-schemas/core.yaml#
6b28e2418SLaurent Pinchart
7b28e2418SLaurent Pincharttitle: i.MX8 Image Sensing Interface
8b28e2418SLaurent Pinchart
9b28e2418SLaurent Pinchartmaintainers:
10b28e2418SLaurent Pinchart  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11b28e2418SLaurent Pinchart
12b28e2418SLaurent Pinchartdescription: |
13b28e2418SLaurent Pinchart  The Image Sensing Interface (ISI) combines image processing pipelines with
14b28e2418SLaurent Pinchart  DMA engines to process and capture frames originating from a variety of
15b28e2418SLaurent Pinchart  sources. The inputs to the ISI go through Pixel Link interfaces, and their
16b28e2418SLaurent Pinchart  number and nature is SoC-dependent. They cover both capture interfaces (MIPI
17b28e2418SLaurent Pinchart  CSI-2 RX, HDMI RX, ...) and display engine outputs for writeback support.
18b28e2418SLaurent Pinchart
19b28e2418SLaurent Pinchartproperties:
20b28e2418SLaurent Pinchart  compatible:
21b28e2418SLaurent Pinchart    enum:
22b28e2418SLaurent Pinchart      - fsl,imx8mn-isi
23b28e2418SLaurent Pinchart      - fsl,imx8mp-isi
24*0ac186e3SGuoniu.zhou      - fsl,imx93-isi
25b28e2418SLaurent Pinchart
26b28e2418SLaurent Pinchart  reg:
27b28e2418SLaurent Pinchart    maxItems: 1
28b28e2418SLaurent Pinchart
29b28e2418SLaurent Pinchart  clocks:
30b28e2418SLaurent Pinchart    items:
31b28e2418SLaurent Pinchart      - description: The AXI clock
32b28e2418SLaurent Pinchart      - description: The APB clock
33b28e2418SLaurent Pinchart      # TODO: Check if the per-channel ipg_proc_clk clocks need to be specified
34b28e2418SLaurent Pinchart      # as well, in case some SoCs have the ability to control them separately.
35b28e2418SLaurent Pinchart      # This may be the case of the i.MX8[DQ]X(P)
36b28e2418SLaurent Pinchart
37b28e2418SLaurent Pinchart  clock-names:
38b28e2418SLaurent Pinchart    items:
39b28e2418SLaurent Pinchart      - const: axi
40b28e2418SLaurent Pinchart      - const: apb
41b28e2418SLaurent Pinchart
42b28e2418SLaurent Pinchart  fsl,blk-ctrl:
43b28e2418SLaurent Pinchart    $ref: /schemas/types.yaml#/definitions/phandle
44b28e2418SLaurent Pinchart    description:
45b28e2418SLaurent Pinchart      A phandle referencing the block control that contains the CSIS to ISI
46b28e2418SLaurent Pinchart      gasket.
47b28e2418SLaurent Pinchart
48b28e2418SLaurent Pinchart  interrupts:
49b28e2418SLaurent Pinchart    description: Processing pipeline interrupts, one per pipeline
50b28e2418SLaurent Pinchart    minItems: 1
51b28e2418SLaurent Pinchart    maxItems: 2
52b28e2418SLaurent Pinchart
53b28e2418SLaurent Pinchart  power-domains:
54b28e2418SLaurent Pinchart    maxItems: 1
55b28e2418SLaurent Pinchart
56b28e2418SLaurent Pinchart  ports:
57b28e2418SLaurent Pinchart    $ref: /schemas/graph.yaml#/properties/ports
58b28e2418SLaurent Pinchart    description: |
59b28e2418SLaurent Pinchart      Ports represent the Pixel Link inputs to the ISI. Their number and
60b28e2418SLaurent Pinchart      assignment are model-dependent. Each port shall have a single endpoint.
61b28e2418SLaurent Pinchart
62b28e2418SLaurent Pinchartrequired:
63b28e2418SLaurent Pinchart  - compatible
64b28e2418SLaurent Pinchart  - reg
65b28e2418SLaurent Pinchart  - interrupts
66b28e2418SLaurent Pinchart  - clocks
67b28e2418SLaurent Pinchart  - clock-names
68b28e2418SLaurent Pinchart  - fsl,blk-ctrl
69b28e2418SLaurent Pinchart  - ports
70b28e2418SLaurent Pinchart
71b28e2418SLaurent PinchartallOf:
72b28e2418SLaurent Pinchart  - if:
73b28e2418SLaurent Pinchart      properties:
74b28e2418SLaurent Pinchart        compatible:
75b28e2418SLaurent Pinchart          contains:
76*0ac186e3SGuoniu.zhou            enum:
77*0ac186e3SGuoniu.zhou              - fsl,imx8mn-isi
78*0ac186e3SGuoniu.zhou              - fsl,imx93-isi
79b28e2418SLaurent Pinchart    then:
80b28e2418SLaurent Pinchart      properties:
81b28e2418SLaurent Pinchart        interrupts:
82b28e2418SLaurent Pinchart          maxItems: 1
83b28e2418SLaurent Pinchart        ports:
84b28e2418SLaurent Pinchart          properties:
85b28e2418SLaurent Pinchart            port@0:
86b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX
87b28e2418SLaurent Pinchart          required:
88b28e2418SLaurent Pinchart            - port@0
89b28e2418SLaurent Pinchart
90b28e2418SLaurent Pinchart  - if:
91b28e2418SLaurent Pinchart      properties:
92b28e2418SLaurent Pinchart        compatible:
93b28e2418SLaurent Pinchart          contains:
94b28e2418SLaurent Pinchart            const: fsl,imx8mp-isi
95b28e2418SLaurent Pinchart    then:
96b28e2418SLaurent Pinchart      properties:
97b28e2418SLaurent Pinchart        interrupts:
98b28e2418SLaurent Pinchart          maxItems: 2
99b28e2418SLaurent Pinchart        ports:
100b28e2418SLaurent Pinchart          properties:
101b28e2418SLaurent Pinchart            port@0:
102b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 0
103b28e2418SLaurent Pinchart            port@1:
104b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 1
105b28e2418SLaurent Pinchart          required:
106b28e2418SLaurent Pinchart            - port@0
107b28e2418SLaurent Pinchart            - port@1
108b28e2418SLaurent Pinchart
109b28e2418SLaurent PinchartadditionalProperties: false
110b28e2418SLaurent Pinchart
111b28e2418SLaurent Pinchartexamples:
112b28e2418SLaurent Pinchart  - |
113b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mn-clock.h>
114b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
115b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
116b28e2418SLaurent Pinchart    #include <dt-bindings/power/imx8mn-power.h>
117b28e2418SLaurent Pinchart
118b28e2418SLaurent Pinchart    isi@32e20000 {
119b28e2418SLaurent Pinchart        compatible = "fsl,imx8mn-isi";
120b28e2418SLaurent Pinchart        reg = <0x32e20000 0x100>;
121b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
122b28e2418SLaurent Pinchart        clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
123b28e2418SLaurent Pinchart                 <&clk IMX8MN_CLK_DISP_APB_ROOT>;
124b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
125b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&disp_blk_ctrl>;
126b28e2418SLaurent Pinchart        power-domains = <&disp_blk_ctrl IMX8MN_DISPBLK_PD_ISI>;
127b28e2418SLaurent Pinchart
128b28e2418SLaurent Pinchart        ports {
129b28e2418SLaurent Pinchart            #address-cells = <1>;
130b28e2418SLaurent Pinchart            #size-cells = <0>;
131b28e2418SLaurent Pinchart
132b28e2418SLaurent Pinchart            port@0 {
133b28e2418SLaurent Pinchart                reg = <0>;
134b28e2418SLaurent Pinchart                isi_in: endpoint {
135b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_out>;
136b28e2418SLaurent Pinchart                };
137b28e2418SLaurent Pinchart            };
138b28e2418SLaurent Pinchart        };
139b28e2418SLaurent Pinchart    };
140b28e2418SLaurent Pinchart
141b28e2418SLaurent Pinchart  - |
142b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mp-clock.h>
143b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
144b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
145b28e2418SLaurent Pinchart
146b28e2418SLaurent Pinchart    isi@32e00000 {
147b28e2418SLaurent Pinchart        compatible = "fsl,imx8mp-isi";
148b28e2418SLaurent Pinchart        reg = <0x32e00000 0x4000>;
149b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
150b28e2418SLaurent Pinchart                     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
151b28e2418SLaurent Pinchart        clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>,
152b28e2418SLaurent Pinchart                 <&clk IMX8MP_CLK_MEDIA_APB_ROOT>;
153b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
154b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&media_blk_ctrl>;
155b28e2418SLaurent Pinchart        power-domains = <&mediamix_pd>;
156b28e2418SLaurent Pinchart
157b28e2418SLaurent Pinchart        ports {
158b28e2418SLaurent Pinchart            #address-cells = <1>;
159b28e2418SLaurent Pinchart            #size-cells = <0>;
160b28e2418SLaurent Pinchart
161b28e2418SLaurent Pinchart            port@0 {
162b28e2418SLaurent Pinchart                reg = <0>;
163b28e2418SLaurent Pinchart                isi_in_0: endpoint {
164b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_0_out>;
165b28e2418SLaurent Pinchart                };
166b28e2418SLaurent Pinchart            };
167b28e2418SLaurent Pinchart
168b28e2418SLaurent Pinchart            port@1 {
169b28e2418SLaurent Pinchart                reg = <1>;
170b28e2418SLaurent Pinchart                isi_in_1: endpoint {
171b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_1_out>;
172b28e2418SLaurent Pinchart                };
173b28e2418SLaurent Pinchart            };
174b28e2418SLaurent Pinchart        };
175b28e2418SLaurent Pinchart    };
176b28e2418SLaurent Pinchart...
177