220 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | 
						|
%YAML 1.2
 | 
						|
---
 | 
						|
$id: http://devicetree.org/schemas/media/nxp,imx-mipi-csi2.yaml#
 | 
						|
$schema: http://devicetree.org/meta-schemas/core.yaml#
 | 
						|
 | 
						|
title: NXP i.MX7 and i.MX8 MIPI CSI-2 receiver
 | 
						|
 | 
						|
maintainers:
 | 
						|
  - Rui Miguel Silva <rmfrfs@gmail.com>
 | 
						|
  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 | 
						|
 | 
						|
description: |-
 | 
						|
  The NXP i.MX7 and i.MX8 families contain SoCs that include a MIPI CSI-2
 | 
						|
  receiver IP core named CSIS. The IP core originates from Samsung, and may be
 | 
						|
  compatible with some of the Exynos4 and S5P SoCs. i.MX7 SoCs use CSIS version
 | 
						|
  3.3, and i.MX8 SoCs use CSIS version 3.6.3.
 | 
						|
 | 
						|
  While the CSI-2 receiver is separate from the MIPI D-PHY IP core, the PHY is
 | 
						|
  completely wrapped by the CSIS and doesn't expose a control interface of its
 | 
						|
  own. This binding thus covers both IP cores.
 | 
						|
 | 
						|
properties:
 | 
						|
  compatible:
 | 
						|
    oneOf:
 | 
						|
      - enum:
 | 
						|
          - fsl,imx7-mipi-csi2
 | 
						|
          - fsl,imx8mm-mipi-csi2
 | 
						|
      - items:
 | 
						|
          - enum:
 | 
						|
              - fsl,imx8mp-mipi-csi2
 | 
						|
          - const: fsl,imx8mm-mipi-csi2
 | 
						|
 | 
						|
  reg:
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  interrupts:
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  clocks:
 | 
						|
    minItems: 3
 | 
						|
    items:
 | 
						|
      - description: The peripheral clock (a.k.a. APB clock)
 | 
						|
      - description: The external clock (optionally used as the pixel clock)
 | 
						|
      - description: The MIPI D-PHY clock
 | 
						|
      - description: The AXI clock
 | 
						|
 | 
						|
  clock-names:
 | 
						|
    minItems: 3
 | 
						|
    items:
 | 
						|
      - const: pclk
 | 
						|
      - const: wrap
 | 
						|
      - const: phy
 | 
						|
      - const: axi
 | 
						|
 | 
						|
  power-domains:
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  phy-supply:
 | 
						|
    description: The MIPI D-PHY digital power supply
 | 
						|
 | 
						|
  resets:
 | 
						|
    items:
 | 
						|
      - description: MIPI D-PHY slave reset
 | 
						|
 | 
						|
  clock-frequency:
 | 
						|
    description: The desired external clock ("wrap") frequency, in Hz
 | 
						|
    default: 166000000
 | 
						|
 | 
						|
  ports:
 | 
						|
    $ref: /schemas/graph.yaml#/properties/ports
 | 
						|
 | 
						|
    properties:
 | 
						|
      port@0:
 | 
						|
        $ref: /schemas/graph.yaml#/$defs/port-base
 | 
						|
        unevaluatedProperties: false
 | 
						|
        description:
 | 
						|
          Input port node, single endpoint describing the CSI-2 transmitter.
 | 
						|
 | 
						|
        properties:
 | 
						|
          endpoint:
 | 
						|
            $ref: video-interfaces.yaml#
 | 
						|
            unevaluatedProperties: false
 | 
						|
 | 
						|
            properties:
 | 
						|
              data-lanes:
 | 
						|
                description:
 | 
						|
                  Note that 'fsl,imx7-mipi-csi2' only supports up to 2 data lines.
 | 
						|
                minItems: 1
 | 
						|
                items:
 | 
						|
                  - const: 1
 | 
						|
                  - const: 2
 | 
						|
                  - const: 3
 | 
						|
                  - const: 4
 | 
						|
 | 
						|
            required:
 | 
						|
              - data-lanes
 | 
						|
 | 
						|
      port@1:
 | 
						|
        $ref: /schemas/graph.yaml#/properties/port
 | 
						|
        description:
 | 
						|
          Output port node
 | 
						|
 | 
						|
required:
 | 
						|
  - compatible
 | 
						|
  - reg
 | 
						|
  - interrupts
 | 
						|
  - clocks
 | 
						|
  - clock-names
 | 
						|
  - power-domains
 | 
						|
  - ports
 | 
						|
 | 
						|
additionalProperties: false
 | 
						|
 | 
						|
allOf:
 | 
						|
  - if:
 | 
						|
      properties:
 | 
						|
        compatible:
 | 
						|
          contains:
 | 
						|
            const: fsl,imx7-mipi-csi2
 | 
						|
    then:
 | 
						|
      required:
 | 
						|
        - phy-supply
 | 
						|
        - resets
 | 
						|
    else:
 | 
						|
      properties:
 | 
						|
        clocks:
 | 
						|
          minItems: 4
 | 
						|
        clock-names:
 | 
						|
          minItems: 4
 | 
						|
        phy-supply: false
 | 
						|
        resets: false
 | 
						|
 | 
						|
examples:
 | 
						|
  - |
 | 
						|
    #include <dt-bindings/clock/imx7d-clock.h>
 | 
						|
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
						|
    #include <dt-bindings/interrupt-controller/irq.h>
 | 
						|
    #include <dt-bindings/reset/imx7-reset.h>
 | 
						|
 | 
						|
    mipi-csi@30750000 {
 | 
						|
        compatible = "fsl,imx7-mipi-csi2";
 | 
						|
        reg = <0x30750000 0x10000>;
 | 
						|
        interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
 | 
						|
        clocks = <&clks IMX7D_IPG_ROOT_CLK>,
 | 
						|
                 <&clks IMX7D_MIPI_CSI_ROOT_CLK>,
 | 
						|
                 <&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
 | 
						|
        clock-names = "pclk", "wrap", "phy";
 | 
						|
        clock-frequency = <166000000>;
 | 
						|
 | 
						|
        power-domains = <&pgc_mipi_phy>;
 | 
						|
        phy-supply = <®_1p0d>;
 | 
						|
        resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
 | 
						|
 | 
						|
        ports {
 | 
						|
            #address-cells = <1>;
 | 
						|
            #size-cells = <0>;
 | 
						|
 | 
						|
            port@0 {
 | 
						|
                reg = <0>;
 | 
						|
 | 
						|
                mipi_from_sensor: endpoint {
 | 
						|
                    remote-endpoint = <&ov2680_to_mipi>;
 | 
						|
                    data-lanes = <1>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
 | 
						|
            port@1 {
 | 
						|
                reg = <1>;
 | 
						|
 | 
						|
                mipi_vc0_to_csi_mux: endpoint {
 | 
						|
                    remote-endpoint = <&csi_mux_from_mipi_vc0>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
        };
 | 
						|
    };
 | 
						|
 | 
						|
  - |
 | 
						|
    #include <dt-bindings/clock/imx8mm-clock.h>
 | 
						|
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
						|
    #include <dt-bindings/interrupt-controller/irq.h>
 | 
						|
 | 
						|
    mipi-csi@32e30000 {
 | 
						|
        compatible = "fsl,imx8mm-mipi-csi2";
 | 
						|
        reg = <0x32e30000 0x1000>;
 | 
						|
        interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
        clock-frequency = <333000000>;
 | 
						|
        clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>,
 | 
						|
                 <&clk IMX8MM_CLK_CSI1_ROOT>,
 | 
						|
                 <&clk IMX8MM_CLK_CSI1_PHY_REF>,
 | 
						|
                 <&clk IMX8MM_CLK_DISP_AXI_ROOT>;
 | 
						|
        clock-names = "pclk", "wrap", "phy", "axi";
 | 
						|
        power-domains = <&mipi_pd>;
 | 
						|
 | 
						|
        ports {
 | 
						|
            #address-cells = <1>;
 | 
						|
            #size-cells = <0>;
 | 
						|
 | 
						|
            port@0 {
 | 
						|
                reg = <0>;
 | 
						|
 | 
						|
                imx8mm_mipi_csi_in: endpoint {
 | 
						|
                    remote-endpoint = <&imx477_out>;
 | 
						|
                    data-lanes = <1 2 3 4>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
 | 
						|
            port@1 {
 | 
						|
                reg = <1>;
 | 
						|
 | 
						|
                imx8mm_mipi_csi_out: endpoint {
 | 
						|
                    remote-endpoint = <&csi_in>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
        };
 | 
						|
    };
 | 
						|
 | 
						|
...
 |