xref: /linux/Documentation/devicetree/bindings/media/nxp,imx8-isi.yaml (revision 459a5cb152047448c8b8bdc73dd3e2519e36db0b)
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
240ac186e3SGuoniu.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:
760ac186e3SGuoniu.zhou            enum:
770ac186e3SGuoniu.zhou              - fsl,imx8mn-isi
780ac186e3SGuoniu.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
87*459a5cb1SAlexander Stein            port@1: false
88b28e2418SLaurent Pinchart          required:
89b28e2418SLaurent Pinchart            - port@0
90b28e2418SLaurent Pinchart
91b28e2418SLaurent Pinchart  - if:
92b28e2418SLaurent Pinchart      properties:
93b28e2418SLaurent Pinchart        compatible:
94b28e2418SLaurent Pinchart          contains:
95b28e2418SLaurent Pinchart            const: fsl,imx8mp-isi
96b28e2418SLaurent Pinchart    then:
97b28e2418SLaurent Pinchart      properties:
98b28e2418SLaurent Pinchart        interrupts:
99b28e2418SLaurent Pinchart          maxItems: 2
100b28e2418SLaurent Pinchart        ports:
101b28e2418SLaurent Pinchart          properties:
102b28e2418SLaurent Pinchart            port@0:
103b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 0
104b28e2418SLaurent Pinchart            port@1:
105b28e2418SLaurent Pinchart              description: MIPI CSI-2 RX 1
106b28e2418SLaurent Pinchart          required:
107b28e2418SLaurent Pinchart            - port@0
108b28e2418SLaurent Pinchart            - port@1
109b28e2418SLaurent Pinchart
110b28e2418SLaurent PinchartadditionalProperties: false
111b28e2418SLaurent Pinchart
112b28e2418SLaurent Pinchartexamples:
113b28e2418SLaurent Pinchart  - |
114b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mn-clock.h>
115b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
116b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
117b28e2418SLaurent Pinchart    #include <dt-bindings/power/imx8mn-power.h>
118b28e2418SLaurent Pinchart
119b28e2418SLaurent Pinchart    isi@32e20000 {
120b28e2418SLaurent Pinchart        compatible = "fsl,imx8mn-isi";
121b28e2418SLaurent Pinchart        reg = <0x32e20000 0x100>;
122b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
123b28e2418SLaurent Pinchart        clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>,
124b28e2418SLaurent Pinchart                 <&clk IMX8MN_CLK_DISP_APB_ROOT>;
125b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
126b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&disp_blk_ctrl>;
127b28e2418SLaurent Pinchart        power-domains = <&disp_blk_ctrl IMX8MN_DISPBLK_PD_ISI>;
128b28e2418SLaurent Pinchart
129b28e2418SLaurent Pinchart        ports {
130b28e2418SLaurent Pinchart            #address-cells = <1>;
131b28e2418SLaurent Pinchart            #size-cells = <0>;
132b28e2418SLaurent Pinchart
133b28e2418SLaurent Pinchart            port@0 {
134b28e2418SLaurent Pinchart                reg = <0>;
135b28e2418SLaurent Pinchart                isi_in: endpoint {
136b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_out>;
137b28e2418SLaurent Pinchart                };
138b28e2418SLaurent Pinchart            };
139b28e2418SLaurent Pinchart        };
140b28e2418SLaurent Pinchart    };
141b28e2418SLaurent Pinchart
142b28e2418SLaurent Pinchart  - |
143b28e2418SLaurent Pinchart    #include <dt-bindings/clock/imx8mp-clock.h>
144b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/arm-gic.h>
145b28e2418SLaurent Pinchart    #include <dt-bindings/interrupt-controller/irq.h>
146b28e2418SLaurent Pinchart
147b28e2418SLaurent Pinchart    isi@32e00000 {
148b28e2418SLaurent Pinchart        compatible = "fsl,imx8mp-isi";
149b28e2418SLaurent Pinchart        reg = <0x32e00000 0x4000>;
150b28e2418SLaurent Pinchart        interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
151b28e2418SLaurent Pinchart                     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
152b28e2418SLaurent Pinchart        clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>,
153b28e2418SLaurent Pinchart                 <&clk IMX8MP_CLK_MEDIA_APB_ROOT>;
154b28e2418SLaurent Pinchart        clock-names = "axi", "apb";
155b28e2418SLaurent Pinchart        fsl,blk-ctrl = <&media_blk_ctrl>;
156b28e2418SLaurent Pinchart        power-domains = <&mediamix_pd>;
157b28e2418SLaurent Pinchart
158b28e2418SLaurent Pinchart        ports {
159b28e2418SLaurent Pinchart            #address-cells = <1>;
160b28e2418SLaurent Pinchart            #size-cells = <0>;
161b28e2418SLaurent Pinchart
162b28e2418SLaurent Pinchart            port@0 {
163b28e2418SLaurent Pinchart                reg = <0>;
164b28e2418SLaurent Pinchart                isi_in_0: endpoint {
165b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_0_out>;
166b28e2418SLaurent Pinchart                };
167b28e2418SLaurent Pinchart            };
168b28e2418SLaurent Pinchart
169b28e2418SLaurent Pinchart            port@1 {
170b28e2418SLaurent Pinchart                reg = <1>;
171b28e2418SLaurent Pinchart                isi_in_1: endpoint {
172b28e2418SLaurent Pinchart                    remote-endpoint = <&mipi_csi_1_out>;
173b28e2418SLaurent Pinchart                };
174b28e2418SLaurent Pinchart            };
175b28e2418SLaurent Pinchart        };
176b28e2418SLaurent Pinchart    };
177b28e2418SLaurent Pinchart...
178