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