xref: /linux/Documentation/devicetree/bindings/media/nxp,imx8mq-mipi-csi2.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
137255747SMartin Kepplinger# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
237255747SMartin Kepplinger%YAML 1.2
337255747SMartin Kepplinger---
437255747SMartin Kepplinger$id: http://devicetree.org/schemas/media/nxp,imx8mq-mipi-csi2.yaml#
537255747SMartin Kepplinger$schema: http://devicetree.org/meta-schemas/core.yaml#
637255747SMartin Kepplinger
737255747SMartin Kepplingertitle: NXP i.MX8MQ MIPI CSI-2 receiver
837255747SMartin Kepplinger
937255747SMartin Kepplingermaintainers:
1037255747SMartin Kepplinger  - Martin Kepplinger <martin.kepplinger@puri.sm>
1137255747SMartin Kepplinger
1237255747SMartin Kepplingerdescription: |-
1337255747SMartin Kepplinger  This binding covers the CSI-2 RX PHY and host controller included in the
1437255747SMartin Kepplinger  NXP i.MX8MQ SoC. It handles the sensor/image input and process for all the
1537255747SMartin Kepplinger  input imaging devices.
1637255747SMartin Kepplinger
1737255747SMartin Kepplingerproperties:
1837255747SMartin Kepplinger  compatible:
1937255747SMartin Kepplinger    enum:
2037255747SMartin Kepplinger      - fsl,imx8mq-mipi-csi2
2137255747SMartin Kepplinger
2237255747SMartin Kepplinger  reg:
2337255747SMartin Kepplinger    maxItems: 1
2437255747SMartin Kepplinger
2537255747SMartin Kepplinger  clocks:
2637255747SMartin Kepplinger    items:
2737255747SMartin Kepplinger      - description: core is the RX Controller Core Clock input. This clock
2837255747SMartin Kepplinger                     must be exactly equal to or faster than the receive
2937255747SMartin Kepplinger                     byteclock from the RX DPHY.
3037255747SMartin Kepplinger      - description: esc is the Rx Escape Clock. This must be the same escape
3137255747SMartin Kepplinger                     clock that the RX DPHY receives.
3237255747SMartin Kepplinger      - description: ui is the pixel clock (phy_ref up to 333Mhz).
3337255747SMartin Kepplinger                     See the reference manual for details.
3437255747SMartin Kepplinger
3537255747SMartin Kepplinger  clock-names:
3637255747SMartin Kepplinger    items:
3737255747SMartin Kepplinger      - const: core
3837255747SMartin Kepplinger      - const: esc
3937255747SMartin Kepplinger      - const: ui
4037255747SMartin Kepplinger
4137255747SMartin Kepplinger  power-domains:
4237255747SMartin Kepplinger    maxItems: 1
4337255747SMartin Kepplinger
4437255747SMartin Kepplinger  resets:
4537255747SMartin Kepplinger    items:
4637255747SMartin Kepplinger      - description: CORE_RESET reset register bit definition
4737255747SMartin Kepplinger      - description: PHY_REF_RESET reset register bit definition
4837255747SMartin Kepplinger      - description: ESC_RESET reset register bit definition
4937255747SMartin Kepplinger
5037255747SMartin Kepplinger  fsl,mipi-phy-gpr:
5137255747SMartin Kepplinger    description: |
5237255747SMartin Kepplinger      The phandle to the imx8mq syscon iomux-gpr with the register
5337255747SMartin Kepplinger      for setting RX_ENABLE for the mipi receiver.
5437255747SMartin Kepplinger
5537255747SMartin Kepplinger      The format should be as follows:
5637255747SMartin Kepplinger      <gpr req_gpr>
5737255747SMartin Kepplinger      gpr is the phandle to general purpose register node.
5837255747SMartin Kepplinger      req_gpr is the gpr register offset of RX_ENABLE for the mipi phy.
5937255747SMartin Kepplinger    $ref: /schemas/types.yaml#/definitions/phandle-array
6037255747SMartin Kepplinger    items:
61*39bd2b6aSRob Herring      - items:
6237255747SMartin Kepplinger          - description: The 'gpr' is the phandle to general purpose register node.
6337255747SMartin Kepplinger          - description: The 'req_gpr' is the gpr register offset containing
6437255747SMartin Kepplinger                        CSI2_1_RX_ENABLE or CSI2_2_RX_ENABLE respectively.
6537255747SMartin Kepplinger            maximum: 0xff
6637255747SMartin Kepplinger
6737255747SMartin Kepplinger  interconnects:
6837255747SMartin Kepplinger    maxItems: 1
6937255747SMartin Kepplinger
7037255747SMartin Kepplinger  interconnect-names:
7137255747SMartin Kepplinger    const: dram
7237255747SMartin Kepplinger
7337255747SMartin Kepplinger  ports:
7437255747SMartin Kepplinger    $ref: /schemas/graph.yaml#/properties/ports
7537255747SMartin Kepplinger
7637255747SMartin Kepplinger    properties:
7737255747SMartin Kepplinger      port@0:
7837255747SMartin Kepplinger        $ref: /schemas/graph.yaml#/$defs/port-base
7937255747SMartin Kepplinger        unevaluatedProperties: false
8037255747SMartin Kepplinger        description:
8137255747SMartin Kepplinger          Input port node, single endpoint describing the CSI-2 transmitter.
8237255747SMartin Kepplinger
8337255747SMartin Kepplinger        properties:
8437255747SMartin Kepplinger          endpoint:
8537255747SMartin Kepplinger            $ref: video-interfaces.yaml#
8637255747SMartin Kepplinger            unevaluatedProperties: false
8737255747SMartin Kepplinger
8837255747SMartin Kepplinger            properties:
8937255747SMartin Kepplinger              data-lanes:
9037255747SMartin Kepplinger                minItems: 1
9137255747SMartin Kepplinger                items:
9237255747SMartin Kepplinger                  - const: 1
9337255747SMartin Kepplinger                  - const: 2
9437255747SMartin Kepplinger                  - const: 3
9537255747SMartin Kepplinger                  - const: 4
9637255747SMartin Kepplinger
9737255747SMartin Kepplinger            required:
9837255747SMartin Kepplinger              - data-lanes
9937255747SMartin Kepplinger
10037255747SMartin Kepplinger      port@1:
10137255747SMartin Kepplinger        $ref: /schemas/graph.yaml#/properties/port
10237255747SMartin Kepplinger        description:
10337255747SMartin Kepplinger          Output port node
10437255747SMartin Kepplinger
10537255747SMartin Kepplinger    required:
10637255747SMartin Kepplinger      - port@0
10737255747SMartin Kepplinger      - port@1
10837255747SMartin Kepplinger
10937255747SMartin Kepplingerrequired:
11037255747SMartin Kepplinger  - compatible
11137255747SMartin Kepplinger  - reg
11237255747SMartin Kepplinger  - clocks
11337255747SMartin Kepplinger  - clock-names
11437255747SMartin Kepplinger  - power-domains
11537255747SMartin Kepplinger  - resets
11637255747SMartin Kepplinger  - fsl,mipi-phy-gpr
11737255747SMartin Kepplinger  - ports
11837255747SMartin Kepplinger
11937255747SMartin KepplingeradditionalProperties: false
12037255747SMartin Kepplinger
12137255747SMartin Kepplingerexamples:
12237255747SMartin Kepplinger  - |
12337255747SMartin Kepplinger    #include <dt-bindings/clock/imx8mq-clock.h>
12437255747SMartin Kepplinger    #include <dt-bindings/interconnect/imx8mq.h>
12537255747SMartin Kepplinger    #include <dt-bindings/reset/imx8mq-reset.h>
12637255747SMartin Kepplinger
12737255747SMartin Kepplinger    csi@30a70000 {
12837255747SMartin Kepplinger        compatible = "fsl,imx8mq-mipi-csi2";
12937255747SMartin Kepplinger        reg = <0x30a70000 0x1000>;
13037255747SMartin Kepplinger        clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
13137255747SMartin Kepplinger                 <&clk IMX8MQ_CLK_CSI1_ESC>,
13237255747SMartin Kepplinger                 <&clk IMX8MQ_CLK_CSI1_PHY_REF>;
13337255747SMartin Kepplinger        clock-names = "core", "esc", "ui";
13437255747SMartin Kepplinger        assigned-clocks = <&clk IMX8MQ_CLK_CSI1_CORE>,
13537255747SMartin Kepplinger                          <&clk IMX8MQ_CLK_CSI1_PHY_REF>,
13637255747SMartin Kepplinger                          <&clk IMX8MQ_CLK_CSI1_ESC>;
13737255747SMartin Kepplinger        assigned-clock-rates = <266000000>, <200000000>, <66000000>;
13837255747SMartin Kepplinger        assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_266M>,
13937255747SMartin Kepplinger                                 <&clk IMX8MQ_SYS2_PLL_1000M>,
14037255747SMartin Kepplinger                                 <&clk IMX8MQ_SYS1_PLL_800M>;
14137255747SMartin Kepplinger        power-domains = <&pgc_mipi_csi1>;
14237255747SMartin Kepplinger        resets = <&src IMX8MQ_RESET_MIPI_CSI1_CORE_RESET>,
14337255747SMartin Kepplinger                 <&src IMX8MQ_RESET_MIPI_CSI1_PHY_REF_RESET>,
14437255747SMartin Kepplinger                 <&src IMX8MQ_RESET_MIPI_CSI1_ESC_RESET>;
14537255747SMartin Kepplinger        fsl,mipi-phy-gpr = <&iomuxc_gpr 0x88>;
14637255747SMartin Kepplinger        interconnects = <&noc IMX8MQ_ICM_CSI1 &noc IMX8MQ_ICS_DRAM>;
14737255747SMartin Kepplinger        interconnect-names = "dram";
14837255747SMartin Kepplinger
14937255747SMartin Kepplinger        ports {
15037255747SMartin Kepplinger            #address-cells = <1>;
15137255747SMartin Kepplinger            #size-cells = <0>;
15237255747SMartin Kepplinger
15337255747SMartin Kepplinger            port@0 {
15437255747SMartin Kepplinger                reg = <0>;
15537255747SMartin Kepplinger
15637255747SMartin Kepplinger                imx8mm_mipi_csi_in: endpoint {
15737255747SMartin Kepplinger                    remote-endpoint = <&imx477_out>;
15837255747SMartin Kepplinger                    data-lanes = <1 2 3 4>;
15937255747SMartin Kepplinger                };
16037255747SMartin Kepplinger            };
16137255747SMartin Kepplinger
16237255747SMartin Kepplinger            port@1 {
16337255747SMartin Kepplinger                reg = <1>;
16437255747SMartin Kepplinger
16537255747SMartin Kepplinger                imx8mm_mipi_csi_out: endpoint {
16637255747SMartin Kepplinger                    remote-endpoint = <&csi_in>;
16737255747SMartin Kepplinger                };
16837255747SMartin Kepplinger            };
16937255747SMartin Kepplinger        };
17037255747SMartin Kepplinger    };
17137255747SMartin Kepplinger
17237255747SMartin Kepplinger...
173