xref: /linux/Documentation/devicetree/bindings/media/nxp,imx8-isi.yaml (revision 184a0997fb77f4a9527fc867fcd16806776c27ce)
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*288517a3SGuoniu.zhou      - fsl,imx8ulp-isi
250ac186e3SGuoniu.zhou      - fsl,imx93-isi
26b28e2418SLaurent Pinchart
27b28e2418SLaurent Pinchart  reg:
28b28e2418SLaurent Pinchart    maxItems: 1
29b28e2418SLaurent Pinchart
30b28e2418SLaurent Pinchart  clocks:
31b28e2418SLaurent Pinchart    items:
32b28e2418SLaurent Pinchart      - description: The AXI clock
33b28e2418SLaurent Pinchart      - description: The APB clock
34b28e2418SLaurent Pinchart      # TODO: Check if the per-channel ipg_proc_clk clocks need to be specified
35b28e2418SLaurent Pinchart      # as well, in case some SoCs have the ability to control them separately.
36b28e2418SLaurent Pinchart      # This may be the case of the i.MX8[DQ]X(P)
37b28e2418SLaurent Pinchart
38b28e2418SLaurent Pinchart  clock-names:
39b28e2418SLaurent Pinchart    items:
40b28e2418SLaurent Pinchart      - const: axi
41b28e2418SLaurent Pinchart      - const: apb
42b28e2418SLaurent Pinchart
43b28e2418SLaurent Pinchart  fsl,blk-ctrl:
44b28e2418SLaurent Pinchart    $ref: /schemas/types.yaml#/definitions/phandle
45b28e2418SLaurent Pinchart    description:
46b28e2418SLaurent Pinchart      A phandle referencing the block control that contains the CSIS to ISI
47b28e2418SLaurent Pinchart      gasket.
48b28e2418SLaurent Pinchart
49b28e2418SLaurent Pinchart  interrupts:
50b28e2418SLaurent Pinchart    description: Processing pipeline interrupts, one per pipeline
51b28e2418SLaurent Pinchart    minItems: 1
52b28e2418SLaurent Pinchart    maxItems: 2
53b28e2418SLaurent Pinchart
54b28e2418SLaurent Pinchart  power-domains:
55b28e2418SLaurent Pinchart    maxItems: 1
56b28e2418SLaurent Pinchart
57b28e2418SLaurent Pinchart  ports:
58b28e2418SLaurent Pinchart    $ref: /schemas/graph.yaml#/properties/ports
59b28e2418SLaurent Pinchart    description: |
60b28e2418SLaurent Pinchart      Ports represent the Pixel Link inputs to the ISI. Their number and
61b28e2418SLaurent Pinchart      assignment are model-dependent. Each port shall have a single endpoint.
62b28e2418SLaurent Pinchart
63b28e2418SLaurent Pinchartrequired:
64b28e2418SLaurent Pinchart  - compatible
65b28e2418SLaurent Pinchart  - reg
66b28e2418SLaurent Pinchart  - interrupts
67b28e2418SLaurent Pinchart  - clocks
68b28e2418SLaurent Pinchart  - clock-names
69b28e2418SLaurent Pinchart  - fsl,blk-ctrl
70b28e2418SLaurent Pinchart  - ports
71b28e2418SLaurent Pinchart
72b28e2418SLaurent PinchartallOf:
73b28e2418SLaurent Pinchart  - if:
74b28e2418SLaurent Pinchart      properties:
75b28e2418SLaurent Pinchart        compatible:
76b28e2418SLaurent Pinchart          contains:
770ac186e3SGuoniu.zhou            enum:
780ac186e3SGuoniu.zhou              - fsl,imx8mn-isi
79*288517a3SGuoniu.zhou              - fsl,imx8ulp-isi
800ac186e3SGuoniu.zhou              - fsl,imx93-isi
81b28e2418SLaurent Pinchart    then:
82b28e2418SLaurent Pinchart      properties:
83b28e2418SLaurent Pinchart        interrupts:
84b28e2418SLaurent Pinchart          maxItems: 1
85b28e2418SLaurent Pinchart        ports:
86b28e2418SLaurent Pinchart          properties:
87b28e2418SLaurent Pinchart            port@0:
88b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX
89459a5cb1SAlexander Stein            port@1: false
90b28e2418SLaurent Pinchart          required:
91b28e2418SLaurent Pinchart            - port@0
92b28e2418SLaurent Pinchart
93b28e2418SLaurent Pinchart  - if:
94b28e2418SLaurent Pinchart      properties:
95b28e2418SLaurent Pinchart        compatible:
96b28e2418SLaurent Pinchart          contains:
97b28e2418SLaurent Pinchart            const: fsl,imx8mp-isi
98b28e2418SLaurent Pinchart    then:
99b28e2418SLaurent Pinchart      properties:
100b28e2418SLaurent Pinchart        interrupts:
101b28e2418SLaurent Pinchart          maxItems: 2
102b28e2418SLaurent Pinchart        ports:
103b28e2418SLaurent Pinchart          properties:
104b28e2418SLaurent Pinchart            port@0:
105b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 0
106b28e2418SLaurent Pinchart            port@1:
107b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 1
108b28e2418SLaurent Pinchart          required:
109b28e2418SLaurent Pinchart            - port@0
110b28e2418SLaurent Pinchart            - port@1
111b28e2418SLaurent Pinchart
112b28e2418SLaurent PinchartadditionalProperties: false
113b28e2418SLaurent Pinchart
114b28e2418SLaurent Pinchartexamples:
115b28e2418SLaurent Pinchart  - |
116b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mn-clock.h>
117b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
118b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
119b28e2418SLaurent Pinchart    #include <dt-bindings/power/imx8mn-power.h>
120b28e2418SLaurent Pinchart
121b28e2418SLaurent Pinchart    isi@32e20000 {
122b28e2418SLaurent Pinchart        compatible = "fsl,imx8mn-isi";
123b28e2418SLaurent Pinchart        reg = <0x32e20000 0x100>;
124b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
125b28e2418SLaurent Pinchart        clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
126b28e2418SLaurent Pinchart                 <&clk IMX8MN_CLK_DISP_APB_ROOT>;
127b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
128b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&disp_blk_ctrl>;
129b28e2418SLaurent Pinchart        power-domains = <&disp_blk_ctrl IMX8MN_DISPBLK_PD_ISI>;
130b28e2418SLaurent Pinchart
131b28e2418SLaurent Pinchart        ports {
132b28e2418SLaurent Pinchart            #address-cells = <1>;
133b28e2418SLaurent Pinchart            #size-cells = <0>;
134b28e2418SLaurent Pinchart
135b28e2418SLaurent Pinchart            port@0 {
136b28e2418SLaurent Pinchart                reg = <0>;
137b28e2418SLaurent Pinchart                isi_in: endpoint {
138b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_out>;
139b28e2418SLaurent Pinchart                };
140b28e2418SLaurent Pinchart            };
141b28e2418SLaurent Pinchart        };
142b28e2418SLaurent Pinchart    };
143b28e2418SLaurent Pinchart
144b28e2418SLaurent Pinchart  - |
145b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mp-clock.h>
146b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
147b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
148b28e2418SLaurent Pinchart
149b28e2418SLaurent Pinchart    isi@32e00000 {
150b28e2418SLaurent Pinchart        compatible = "fsl,imx8mp-isi";
151b28e2418SLaurent Pinchart        reg = <0x32e00000 0x4000>;
152b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
153b28e2418SLaurent Pinchart                     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
154b28e2418SLaurent Pinchart        clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>,
155b28e2418SLaurent Pinchart                 <&clk IMX8MP_CLK_MEDIA_APB_ROOT>;
156b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
157b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&media_blk_ctrl>;
158b28e2418SLaurent Pinchart        power-domains = <&mediamix_pd>;
159b28e2418SLaurent Pinchart
160b28e2418SLaurent Pinchart        ports {
161b28e2418SLaurent Pinchart            #address-cells = <1>;
162b28e2418SLaurent Pinchart            #size-cells = <0>;
163b28e2418SLaurent Pinchart
164b28e2418SLaurent Pinchart            port@0 {
165b28e2418SLaurent Pinchart                reg = <0>;
166b28e2418SLaurent Pinchart                isi_in_0: endpoint {
167b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_0_out>;
168b28e2418SLaurent Pinchart                };
169b28e2418SLaurent Pinchart            };
170b28e2418SLaurent Pinchart
171b28e2418SLaurent Pinchart            port@1 {
172b28e2418SLaurent Pinchart                reg = <1>;
173b28e2418SLaurent Pinchart                isi_in_1: endpoint {
174b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_1_out>;
175b28e2418SLaurent Pinchart                };
176b28e2418SLaurent Pinchart            };
177b28e2418SLaurent Pinchart        };
178b28e2418SLaurent Pinchart    };
179b28e2418SLaurent Pinchart...
180