195b9cd1fSLiu Ying# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
295b9cd1fSLiu Ying%YAML 1.2
395b9cd1fSLiu Ying---
495b9cd1fSLiu Ying$id: http://devicetree.org/schemas/mfd/fsl,imx8qxp-csr.yaml#
595b9cd1fSLiu Ying$schema: http://devicetree.org/meta-schemas/core.yaml#
695b9cd1fSLiu Ying
7*84e85359SKrzysztof Kozlowskititle: Freescale i.MX8qm/qxp Control and Status Registers Module
895b9cd1fSLiu Ying
995b9cd1fSLiu Yingmaintainers:
1095b9cd1fSLiu Ying  - Liu Ying <victor.liu@nxp.com>
1195b9cd1fSLiu Ying
1295b9cd1fSLiu Yingdescription: |
1395b9cd1fSLiu Ying  As a system controller, the Freescale i.MX8qm/qxp Control and Status
1495b9cd1fSLiu Ying  Registers(CSR) module represents a set of miscellaneous registers of a
1595b9cd1fSLiu Ying  specific subsystem.  It may provide control and/or status report interfaces
1695b9cd1fSLiu Ying  to a mix of standalone hardware devices within that subsystem.  One typical
1795b9cd1fSLiu Ying  use-case is for some other nodes to acquire a reference to the syscon node
1895b9cd1fSLiu Ying  by phandle, and the other typical use-case is that the operating system
1995b9cd1fSLiu Ying  should consider all subnodes of the CSR module as separate child devices.
2095b9cd1fSLiu Ying
2195b9cd1fSLiu Yingproperties:
2295b9cd1fSLiu Ying  $nodename:
2395b9cd1fSLiu Ying    pattern: "^syscon@[0-9a-f]+$"
2495b9cd1fSLiu Ying
2595b9cd1fSLiu Ying  compatible:
2695b9cd1fSLiu Ying    items:
2795b9cd1fSLiu Ying      - enum:
2895b9cd1fSLiu Ying          - fsl,imx8qxp-mipi-lvds-csr
2995b9cd1fSLiu Ying          - fsl,imx8qm-lvds-csr
3095b9cd1fSLiu Ying      - const: syscon
3195b9cd1fSLiu Ying      - const: simple-mfd
3295b9cd1fSLiu Ying
3395b9cd1fSLiu Ying  reg:
3495b9cd1fSLiu Ying    maxItems: 1
3595b9cd1fSLiu Ying
3695b9cd1fSLiu Ying  clocks:
3795b9cd1fSLiu Ying    maxItems: 1
3895b9cd1fSLiu Ying
3995b9cd1fSLiu Ying  clock-names:
4095b9cd1fSLiu Ying    const: ipg
4195b9cd1fSLiu Ying
4295b9cd1fSLiu YingpatternProperties:
4395b9cd1fSLiu Ying  "^(ldb|phy|pxl2dpi)$":
4495b9cd1fSLiu Ying    type: object
4595b9cd1fSLiu Ying    description: The possible child devices of the CSR module.
4695b9cd1fSLiu Ying
4795b9cd1fSLiu Yingrequired:
4895b9cd1fSLiu Ying  - compatible
4995b9cd1fSLiu Ying  - reg
5095b9cd1fSLiu Ying  - clocks
5195b9cd1fSLiu Ying  - clock-names
5295b9cd1fSLiu Ying
5395b9cd1fSLiu YingallOf:
5495b9cd1fSLiu Ying  - if:
5595b9cd1fSLiu Ying      properties:
5695b9cd1fSLiu Ying        compatible:
5795b9cd1fSLiu Ying          contains:
5895b9cd1fSLiu Ying            const: fsl,imx8qxp-mipi-lvds-csr
5995b9cd1fSLiu Ying    then:
6095b9cd1fSLiu Ying      required:
6195b9cd1fSLiu Ying        - pxl2dpi
6295b9cd1fSLiu Ying        - ldb
6395b9cd1fSLiu Ying
6495b9cd1fSLiu Ying  - if:
6595b9cd1fSLiu Ying      properties:
6695b9cd1fSLiu Ying        compatible:
6795b9cd1fSLiu Ying          contains:
6895b9cd1fSLiu Ying            const: fsl,imx8qm-lvds-csr
6995b9cd1fSLiu Ying    then:
7095b9cd1fSLiu Ying      required:
7195b9cd1fSLiu Ying        - phy
7295b9cd1fSLiu Ying        - ldb
7395b9cd1fSLiu Ying
7495b9cd1fSLiu YingadditionalProperties: false
7595b9cd1fSLiu Ying
7695b9cd1fSLiu Yingexamples:
7795b9cd1fSLiu Ying  - |
7895b9cd1fSLiu Ying    #include <dt-bindings/clock/imx8-lpcg.h>
7995b9cd1fSLiu Ying    #include <dt-bindings/firmware/imx/rsrc.h>
8095b9cd1fSLiu Ying    mipi_lvds_0_csr: syscon@56221000 {
8195b9cd1fSLiu Ying        compatible = "fsl,imx8qxp-mipi-lvds-csr", "syscon", "simple-mfd";
8295b9cd1fSLiu Ying        reg = <0x56221000 0x1000>;
8395b9cd1fSLiu Ying        clocks = <&mipi_lvds_0_di_mipi_lvds_regs_lpcg IMX_LPCG_CLK_4>;
8495b9cd1fSLiu Ying        clock-names = "ipg";
8595b9cd1fSLiu Ying
8695b9cd1fSLiu Ying        mipi_lvds_0_pxl2dpi: pxl2dpi {
8795b9cd1fSLiu Ying            compatible = "fsl,imx8qxp-pxl2dpi";
8895b9cd1fSLiu Ying            fsl,sc-resource = <IMX_SC_R_MIPI_0>;
8995b9cd1fSLiu Ying            power-domains = <&pd IMX_SC_R_MIPI_0>;
9095b9cd1fSLiu Ying
9195b9cd1fSLiu Ying            ports {
9295b9cd1fSLiu Ying                #address-cells = <1>;
9395b9cd1fSLiu Ying                #size-cells = <0>;
9495b9cd1fSLiu Ying
9595b9cd1fSLiu Ying                port@0 {
9695b9cd1fSLiu Ying                    #address-cells = <1>;
9795b9cd1fSLiu Ying                    #size-cells = <0>;
9895b9cd1fSLiu Ying                    reg = <0>;
9995b9cd1fSLiu Ying
10095b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_dc0_pixel_link0: endpoint@0 {
10195b9cd1fSLiu Ying                        reg = <0>;
10295b9cd1fSLiu Ying                        remote-endpoint = <&dc0_pixel_link0_mipi_lvds_0_pxl2dpi>;
10395b9cd1fSLiu Ying                    };
10495b9cd1fSLiu Ying
10595b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_dc0_pixel_link1: endpoint@1 {
10695b9cd1fSLiu Ying                        reg = <1>;
10795b9cd1fSLiu Ying                        remote-endpoint = <&dc0_pixel_link1_mipi_lvds_0_pxl2dpi>;
10895b9cd1fSLiu Ying                    };
10995b9cd1fSLiu Ying                };
11095b9cd1fSLiu Ying
11195b9cd1fSLiu Ying                port@1 {
11295b9cd1fSLiu Ying                    #address-cells = <1>;
11395b9cd1fSLiu Ying                    #size-cells = <0>;
11495b9cd1fSLiu Ying                    reg = <1>;
11595b9cd1fSLiu Ying
11695b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0: endpoint@0 {
11795b9cd1fSLiu Ying                        reg = <0>;
11895b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi>;
11995b9cd1fSLiu Ying                    };
12095b9cd1fSLiu Ying
12195b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1: endpoint@1 {
12295b9cd1fSLiu Ying                        reg = <1>;
12395b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi>;
12495b9cd1fSLiu Ying                    };
12595b9cd1fSLiu Ying                };
12695b9cd1fSLiu Ying            };
12795b9cd1fSLiu Ying        };
12895b9cd1fSLiu Ying
12995b9cd1fSLiu Ying        mipi_lvds_0_ldb: ldb {
13095b9cd1fSLiu Ying            #address-cells = <1>;
13195b9cd1fSLiu Ying            #size-cells = <0>;
13295b9cd1fSLiu Ying            compatible = "fsl,imx8qxp-ldb";
13395b9cd1fSLiu Ying            clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
13495b9cd1fSLiu Ying                     <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>;
13595b9cd1fSLiu Ying            clock-names = "pixel", "bypass";
13695b9cd1fSLiu Ying            power-domains = <&pd IMX_SC_R_LVDS_0>;
13795b9cd1fSLiu Ying
13895b9cd1fSLiu Ying            channel@0 {
13995b9cd1fSLiu Ying                #address-cells = <1>;
14095b9cd1fSLiu Ying                #size-cells = <0>;
14195b9cd1fSLiu Ying                reg = <0>;
14295b9cd1fSLiu Ying                phys = <&mipi_lvds_0_phy>;
14395b9cd1fSLiu Ying                phy-names = "lvds_phy";
14495b9cd1fSLiu Ying
14595b9cd1fSLiu Ying                port@0 {
14695b9cd1fSLiu Ying                    reg = <0>;
14795b9cd1fSLiu Ying
14895b9cd1fSLiu Ying                    mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint {
14995b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>;
15095b9cd1fSLiu Ying                    };
15195b9cd1fSLiu Ying                };
15295b9cd1fSLiu Ying
15395b9cd1fSLiu Ying                port@1 {
15495b9cd1fSLiu Ying                    reg = <1>;
15595b9cd1fSLiu Ying
15695b9cd1fSLiu Ying                    /* ... */
15795b9cd1fSLiu Ying                };
15895b9cd1fSLiu Ying            };
15995b9cd1fSLiu Ying
16095b9cd1fSLiu Ying            channel@1 {
16195b9cd1fSLiu Ying                #address-cells = <1>;
16295b9cd1fSLiu Ying                #size-cells = <0>;
16395b9cd1fSLiu Ying                reg = <1>;
16495b9cd1fSLiu Ying                phys = <&mipi_lvds_0_phy>;
16595b9cd1fSLiu Ying                phy-names = "lvds_phy";
16695b9cd1fSLiu Ying
16795b9cd1fSLiu Ying                port@0 {
16895b9cd1fSLiu Ying                    reg = <0>;
16995b9cd1fSLiu Ying
17095b9cd1fSLiu Ying                    mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint {
17195b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>;
17295b9cd1fSLiu Ying                    };
17395b9cd1fSLiu Ying                };
17495b9cd1fSLiu Ying
17595b9cd1fSLiu Ying                port@1 {
17695b9cd1fSLiu Ying                    reg = <1>;
17795b9cd1fSLiu Ying
17895b9cd1fSLiu Ying                    /* ... */
17995b9cd1fSLiu Ying                };
18095b9cd1fSLiu Ying            };
18195b9cd1fSLiu Ying        };
18295b9cd1fSLiu Ying    };
18395b9cd1fSLiu Ying
18495b9cd1fSLiu Ying    mipi_lvds_0_phy: phy@56228300 {
18595b9cd1fSLiu Ying        compatible = "fsl,imx8qxp-mipi-dphy";
18695b9cd1fSLiu Ying        reg = <0x56228300 0x100>;
18795b9cd1fSLiu Ying        clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_PHY>;
18895b9cd1fSLiu Ying        clock-names = "phy_ref";
18995b9cd1fSLiu Ying        #phy-cells = <0>;
19095b9cd1fSLiu Ying        fsl,syscon = <&mipi_lvds_0_csr>;
19195b9cd1fSLiu Ying        power-domains = <&pd IMX_SC_R_MIPI_0>;
19295b9cd1fSLiu Ying    };
193