# 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>;
                };
            };
        };
    };
...
