162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/nxp,imx-mipi-csi2.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: NXP i.MX7 and i.MX8 MIPI CSI-2 receiver 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Rui Miguel Silva <rmfrfs@gmail.com> 1162306a36Sopenharmony_ci - Laurent Pinchart <laurent.pinchart@ideasonboard.com> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cidescription: |- 1462306a36Sopenharmony_ci The NXP i.MX7 and i.MX8 families contain SoCs that include a MIPI CSI-2 1562306a36Sopenharmony_ci receiver IP core named CSIS. The IP core originates from Samsung, and may be 1662306a36Sopenharmony_ci compatible with some of the Exynos4 and S5P SoCs. i.MX7 SoCs use CSIS version 1762306a36Sopenharmony_ci 3.3, and i.MX8 SoCs use CSIS version 3.6.3. 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci While the CSI-2 receiver is separate from the MIPI D-PHY IP core, the PHY is 2062306a36Sopenharmony_ci completely wrapped by the CSIS and doesn't expose a control interface of its 2162306a36Sopenharmony_ci own. This binding thus covers both IP cores. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ciproperties: 2462306a36Sopenharmony_ci compatible: 2562306a36Sopenharmony_ci oneOf: 2662306a36Sopenharmony_ci - enum: 2762306a36Sopenharmony_ci - fsl,imx7-mipi-csi2 2862306a36Sopenharmony_ci - fsl,imx8mm-mipi-csi2 2962306a36Sopenharmony_ci - items: 3062306a36Sopenharmony_ci - enum: 3162306a36Sopenharmony_ci - fsl,imx8mp-mipi-csi2 3262306a36Sopenharmony_ci - const: fsl,imx8mm-mipi-csi2 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci reg: 3562306a36Sopenharmony_ci maxItems: 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci interrupts: 3862306a36Sopenharmony_ci maxItems: 1 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci clocks: 4162306a36Sopenharmony_ci minItems: 3 4262306a36Sopenharmony_ci items: 4362306a36Sopenharmony_ci - description: The peripheral clock (a.k.a. APB clock) 4462306a36Sopenharmony_ci - description: The external clock (optionally used as the pixel clock) 4562306a36Sopenharmony_ci - description: The MIPI D-PHY clock 4662306a36Sopenharmony_ci - description: The AXI clock 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci clock-names: 4962306a36Sopenharmony_ci minItems: 3 5062306a36Sopenharmony_ci items: 5162306a36Sopenharmony_ci - const: pclk 5262306a36Sopenharmony_ci - const: wrap 5362306a36Sopenharmony_ci - const: phy 5462306a36Sopenharmony_ci - const: axi 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_ci power-domains: 5762306a36Sopenharmony_ci maxItems: 1 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci phy-supply: 6062306a36Sopenharmony_ci description: The MIPI D-PHY digital power supply 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci resets: 6362306a36Sopenharmony_ci items: 6462306a36Sopenharmony_ci - description: MIPI D-PHY slave reset 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci clock-frequency: 6762306a36Sopenharmony_ci description: The desired external clock ("wrap") frequency, in Hz 6862306a36Sopenharmony_ci default: 166000000 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci ports: 7162306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/ports 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci properties: 7462306a36Sopenharmony_ci port@0: 7562306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/$defs/port-base 7662306a36Sopenharmony_ci unevaluatedProperties: false 7762306a36Sopenharmony_ci description: 7862306a36Sopenharmony_ci Input port node, single endpoint describing the CSI-2 transmitter. 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci properties: 8162306a36Sopenharmony_ci endpoint: 8262306a36Sopenharmony_ci $ref: video-interfaces.yaml# 8362306a36Sopenharmony_ci unevaluatedProperties: false 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci properties: 8662306a36Sopenharmony_ci data-lanes: 8762306a36Sopenharmony_ci description: 8862306a36Sopenharmony_ci Note that 'fsl,imx7-mipi-csi2' only supports up to 2 data lines. 8962306a36Sopenharmony_ci minItems: 1 9062306a36Sopenharmony_ci items: 9162306a36Sopenharmony_ci - const: 1 9262306a36Sopenharmony_ci - const: 2 9362306a36Sopenharmony_ci - const: 3 9462306a36Sopenharmony_ci - const: 4 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci required: 9762306a36Sopenharmony_ci - data-lanes 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci port@1: 10062306a36Sopenharmony_ci $ref: /schemas/graph.yaml#/properties/port 10162306a36Sopenharmony_ci description: 10262306a36Sopenharmony_ci Output port node 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cirequired: 10562306a36Sopenharmony_ci - compatible 10662306a36Sopenharmony_ci - reg 10762306a36Sopenharmony_ci - interrupts 10862306a36Sopenharmony_ci - clocks 10962306a36Sopenharmony_ci - clock-names 11062306a36Sopenharmony_ci - power-domains 11162306a36Sopenharmony_ci - ports 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ciadditionalProperties: false 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ciallOf: 11662306a36Sopenharmony_ci - if: 11762306a36Sopenharmony_ci properties: 11862306a36Sopenharmony_ci compatible: 11962306a36Sopenharmony_ci contains: 12062306a36Sopenharmony_ci const: fsl,imx7-mipi-csi2 12162306a36Sopenharmony_ci then: 12262306a36Sopenharmony_ci required: 12362306a36Sopenharmony_ci - phy-supply 12462306a36Sopenharmony_ci - resets 12562306a36Sopenharmony_ci else: 12662306a36Sopenharmony_ci properties: 12762306a36Sopenharmony_ci clocks: 12862306a36Sopenharmony_ci minItems: 4 12962306a36Sopenharmony_ci clock-names: 13062306a36Sopenharmony_ci minItems: 4 13162306a36Sopenharmony_ci phy-supply: false 13262306a36Sopenharmony_ci resets: false 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ciexamples: 13562306a36Sopenharmony_ci - | 13662306a36Sopenharmony_ci #include <dt-bindings/clock/imx7d-clock.h> 13762306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 13862306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 13962306a36Sopenharmony_ci #include <dt-bindings/reset/imx7-reset.h> 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci mipi-csi@30750000 { 14262306a36Sopenharmony_ci compatible = "fsl,imx7-mipi-csi2"; 14362306a36Sopenharmony_ci reg = <0x30750000 0x10000>; 14462306a36Sopenharmony_ci interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci clocks = <&clks IMX7D_IPG_ROOT_CLK>, 14762306a36Sopenharmony_ci <&clks IMX7D_MIPI_CSI_ROOT_CLK>, 14862306a36Sopenharmony_ci <&clks IMX7D_MIPI_DPHY_ROOT_CLK>; 14962306a36Sopenharmony_ci clock-names = "pclk", "wrap", "phy"; 15062306a36Sopenharmony_ci clock-frequency = <166000000>; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ci power-domains = <&pgc_mipi_phy>; 15362306a36Sopenharmony_ci phy-supply = <®_1p0d>; 15462306a36Sopenharmony_ci resets = <&src IMX7_RESET_MIPI_PHY_MRST>; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci ports { 15762306a36Sopenharmony_ci #address-cells = <1>; 15862306a36Sopenharmony_ci #size-cells = <0>; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci port@0 { 16162306a36Sopenharmony_ci reg = <0>; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci mipi_from_sensor: endpoint { 16462306a36Sopenharmony_ci remote-endpoint = <&ov2680_to_mipi>; 16562306a36Sopenharmony_ci data-lanes = <1>; 16662306a36Sopenharmony_ci }; 16762306a36Sopenharmony_ci }; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci port@1 { 17062306a36Sopenharmony_ci reg = <1>; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci mipi_vc0_to_csi_mux: endpoint { 17362306a36Sopenharmony_ci remote-endpoint = <&csi_mux_from_mipi_vc0>; 17462306a36Sopenharmony_ci }; 17562306a36Sopenharmony_ci }; 17662306a36Sopenharmony_ci }; 17762306a36Sopenharmony_ci }; 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ci - | 18062306a36Sopenharmony_ci #include <dt-bindings/clock/imx8mm-clock.h> 18162306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 18262306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ci mipi-csi@32e30000 { 18562306a36Sopenharmony_ci compatible = "fsl,imx8mm-mipi-csi2"; 18662306a36Sopenharmony_ci reg = <0x32e30000 0x1000>; 18762306a36Sopenharmony_ci interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 18862306a36Sopenharmony_ci clock-frequency = <333000000>; 18962306a36Sopenharmony_ci clocks = <&clk IMX8MM_CLK_DISP_APB_ROOT>, 19062306a36Sopenharmony_ci <&clk IMX8MM_CLK_CSI1_ROOT>, 19162306a36Sopenharmony_ci <&clk IMX8MM_CLK_CSI1_PHY_REF>, 19262306a36Sopenharmony_ci <&clk IMX8MM_CLK_DISP_AXI_ROOT>; 19362306a36Sopenharmony_ci clock-names = "pclk", "wrap", "phy", "axi"; 19462306a36Sopenharmony_ci power-domains = <&mipi_pd>; 19562306a36Sopenharmony_ci 19662306a36Sopenharmony_ci ports { 19762306a36Sopenharmony_ci #address-cells = <1>; 19862306a36Sopenharmony_ci #size-cells = <0>; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci port@0 { 20162306a36Sopenharmony_ci reg = <0>; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_ci imx8mm_mipi_csi_in: endpoint { 20462306a36Sopenharmony_ci remote-endpoint = <&imx477_out>; 20562306a36Sopenharmony_ci data-lanes = <1 2 3 4>; 20662306a36Sopenharmony_ci }; 20762306a36Sopenharmony_ci }; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci port@1 { 21062306a36Sopenharmony_ci reg = <1>; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci imx8mm_mipi_csi_out: endpoint { 21362306a36Sopenharmony_ci remote-endpoint = <&csi_in>; 21462306a36Sopenharmony_ci }; 21562306a36Sopenharmony_ci }; 21662306a36Sopenharmony_ci }; 21762306a36Sopenharmony_ci }; 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_ci... 220