# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/media/nxp,imx8-isi.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: i.MX8 Image Sensing Interface maintainers: - Laurent Pinchart <laurent.pinchart@ideasonboard.com> description: | The Image Sensing Interface (ISI) combines image processing pipelines with DMA engines to process and capture frames originating from a variety of sources. The inputs to the ISI go through Pixel Link interfaces, and their number and nature is SoC-dependent. They cover both capture interfaces (MIPI CSI-2 RX, HDMI RX, ...) and display engine outputs for writeback support. properties: compatible: enum: - fsl,imx8mn-isi - fsl,imx8mp-isi - fsl,imx93-isi reg: maxItems: 1 clocks: items: - description: The AXI clock - description: The APB clock # TODO: Check if the per-channel ipg_proc_clk clocks need to be specified # as well, in case some SoCs have the ability to control them separately. # This may be the case of the i.MX8[DQ]X(P) clock-names: items: - const: axi - const: apb fsl,blk-ctrl: $ref: /schemas/types.yaml#/definitions/phandle description: A phandle referencing the block control that contains the CSIS to ISI gasket. interrupts: description: Processing pipeline interrupts, one per pipeline minItems: 1 maxItems: 2 power-domains: maxItems: 1 ports: $ref: /schemas/graph.yaml#/properties/ports description: | Ports represent the Pixel Link inputs to the ISI. Their number and assignment are model-dependent. Each port shall have a single endpoint. required: - compatible - reg - interrupts - clocks - clock-names - fsl,blk-ctrl - ports allOf: - if: properties: compatible: contains: enum: - fsl,imx8mn-isi - fsl,imx93-isi then: properties: interrupts: maxItems: 1 ports: properties: port@0: description: MIPI CSI-2 RX required: - port@0 - if: properties: compatible: contains: const: fsl,imx8mp-isi then: properties: interrupts: maxItems: 2 ports: properties: port@0: description: MIPI CSI-2 RX 0 port@1: description: MIPI CSI-2 RX 1 required: - port@0 - port@1 additionalProperties: false examples: - | #include <dt-bindings/clock/imx8mn-clock.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/power/imx8mn-power.h> isi@32e20000 { compatible = "fsl,imx8mn-isi"; reg = <0x32e20000 0x100>; interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk IMX8MN_CLK_DISP_AXI_ROOT>, <&clk IMX8MN_CLK_DISP_APB_ROOT>; clock-names = "axi", "apb"; fsl,blk-ctrl = <&disp_blk_ctrl>; power-domains = <&disp_blk_ctrl IMX8MN_DISPBLK_PD_ISI>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; isi_in: endpoint { remote-endpoint = <&mipi_csi_out>; }; }; }; }; - | #include <dt-bindings/clock/imx8mp-clock.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/irq.h> isi@32e00000 { compatible = "fsl,imx8mp-isi"; reg = <0x32e00000 0x4000>; interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>, <&clk IMX8MP_CLK_MEDIA_APB_ROOT>; clock-names = "axi", "apb"; fsl,blk-ctrl = <&media_blk_ctrl>; power-domains = <&mediamix_pd>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; isi_in_0: endpoint { remote-endpoint = <&mipi_csi_0_out>; }; }; port@1 { reg = <1>; isi_in_1: endpoint { remote-endpoint = <&mipi_csi_1_out>; }; }; }; }; ...