xref: /openbmc/linux/Documentation/devicetree/bindings/mfd/fsl,imx8qxp-csr.yaml (revision 95b9cd1f754793cc8f328e7d30f79c4e7de29fbf)
1*95b9cd1fSLiu Ying# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*95b9cd1fSLiu Ying%YAML 1.2
3*95b9cd1fSLiu Ying---
4*95b9cd1fSLiu Ying$id: http://devicetree.org/schemas/mfd/fsl,imx8qxp-csr.yaml#
5*95b9cd1fSLiu Ying$schema: http://devicetree.org/meta-schemas/core.yaml#
6*95b9cd1fSLiu Ying
7*95b9cd1fSLiu Yingtitle: Freescale i.MX8qm/qxp Control and Status Registers Module Bindings
8*95b9cd1fSLiu Ying
9*95b9cd1fSLiu Yingmaintainers:
10*95b9cd1fSLiu Ying  - Liu Ying <victor.liu@nxp.com>
11*95b9cd1fSLiu Ying
12*95b9cd1fSLiu Yingdescription: |
13*95b9cd1fSLiu Ying  As a system controller, the Freescale i.MX8qm/qxp Control and Status
14*95b9cd1fSLiu Ying  Registers(CSR) module represents a set of miscellaneous registers of a
15*95b9cd1fSLiu Ying  specific subsystem.  It may provide control and/or status report interfaces
16*95b9cd1fSLiu Ying  to a mix of standalone hardware devices within that subsystem.  One typical
17*95b9cd1fSLiu Ying  use-case is for some other nodes to acquire a reference to the syscon node
18*95b9cd1fSLiu Ying  by phandle, and the other typical use-case is that the operating system
19*95b9cd1fSLiu Ying  should consider all subnodes of the CSR module as separate child devices.
20*95b9cd1fSLiu Ying
21*95b9cd1fSLiu Yingproperties:
22*95b9cd1fSLiu Ying  $nodename:
23*95b9cd1fSLiu Ying    pattern: "^syscon@[0-9a-f]+$"
24*95b9cd1fSLiu Ying
25*95b9cd1fSLiu Ying  compatible:
26*95b9cd1fSLiu Ying    items:
27*95b9cd1fSLiu Ying      - enum:
28*95b9cd1fSLiu Ying          - fsl,imx8qxp-mipi-lvds-csr
29*95b9cd1fSLiu Ying          - fsl,imx8qm-lvds-csr
30*95b9cd1fSLiu Ying      - const: syscon
31*95b9cd1fSLiu Ying      - const: simple-mfd
32*95b9cd1fSLiu Ying
33*95b9cd1fSLiu Ying  reg:
34*95b9cd1fSLiu Ying    maxItems: 1
35*95b9cd1fSLiu Ying
36*95b9cd1fSLiu Ying  clocks:
37*95b9cd1fSLiu Ying    maxItems: 1
38*95b9cd1fSLiu Ying
39*95b9cd1fSLiu Ying  clock-names:
40*95b9cd1fSLiu Ying    const: ipg
41*95b9cd1fSLiu Ying
42*95b9cd1fSLiu YingpatternProperties:
43*95b9cd1fSLiu Ying  "^(ldb|phy|pxl2dpi)$":
44*95b9cd1fSLiu Ying    type: object
45*95b9cd1fSLiu Ying    description: The possible child devices of the CSR module.
46*95b9cd1fSLiu Ying
47*95b9cd1fSLiu Yingrequired:
48*95b9cd1fSLiu Ying  - compatible
49*95b9cd1fSLiu Ying  - reg
50*95b9cd1fSLiu Ying  - clocks
51*95b9cd1fSLiu Ying  - clock-names
52*95b9cd1fSLiu Ying
53*95b9cd1fSLiu YingallOf:
54*95b9cd1fSLiu Ying  - if:
55*95b9cd1fSLiu Ying      properties:
56*95b9cd1fSLiu Ying        compatible:
57*95b9cd1fSLiu Ying          contains:
58*95b9cd1fSLiu Ying            const: fsl,imx8qxp-mipi-lvds-csr
59*95b9cd1fSLiu Ying    then:
60*95b9cd1fSLiu Ying      required:
61*95b9cd1fSLiu Ying        - pxl2dpi
62*95b9cd1fSLiu Ying        - ldb
63*95b9cd1fSLiu Ying
64*95b9cd1fSLiu Ying  - if:
65*95b9cd1fSLiu Ying      properties:
66*95b9cd1fSLiu Ying        compatible:
67*95b9cd1fSLiu Ying          contains:
68*95b9cd1fSLiu Ying            const: fsl,imx8qm-lvds-csr
69*95b9cd1fSLiu Ying    then:
70*95b9cd1fSLiu Ying      required:
71*95b9cd1fSLiu Ying        - phy
72*95b9cd1fSLiu Ying        - ldb
73*95b9cd1fSLiu Ying
74*95b9cd1fSLiu YingadditionalProperties: false
75*95b9cd1fSLiu Ying
76*95b9cd1fSLiu Yingexamples:
77*95b9cd1fSLiu Ying  - |
78*95b9cd1fSLiu Ying    #include <dt-bindings/clock/imx8-lpcg.h>
79*95b9cd1fSLiu Ying    #include <dt-bindings/firmware/imx/rsrc.h>
80*95b9cd1fSLiu Ying    mipi_lvds_0_csr: syscon@56221000 {
81*95b9cd1fSLiu Ying        compatible = "fsl,imx8qxp-mipi-lvds-csr", "syscon", "simple-mfd";
82*95b9cd1fSLiu Ying        reg = <0x56221000 0x1000>;
83*95b9cd1fSLiu Ying        clocks = <&mipi_lvds_0_di_mipi_lvds_regs_lpcg IMX_LPCG_CLK_4>;
84*95b9cd1fSLiu Ying        clock-names = "ipg";
85*95b9cd1fSLiu Ying
86*95b9cd1fSLiu Ying        mipi_lvds_0_pxl2dpi: pxl2dpi {
87*95b9cd1fSLiu Ying            compatible = "fsl,imx8qxp-pxl2dpi";
88*95b9cd1fSLiu Ying            fsl,sc-resource = <IMX_SC_R_MIPI_0>;
89*95b9cd1fSLiu Ying            power-domains = <&pd IMX_SC_R_MIPI_0>;
90*95b9cd1fSLiu Ying
91*95b9cd1fSLiu Ying            ports {
92*95b9cd1fSLiu Ying                #address-cells = <1>;
93*95b9cd1fSLiu Ying                #size-cells = <0>;
94*95b9cd1fSLiu Ying
95*95b9cd1fSLiu Ying                port@0 {
96*95b9cd1fSLiu Ying                    #address-cells = <1>;
97*95b9cd1fSLiu Ying                    #size-cells = <0>;
98*95b9cd1fSLiu Ying                    reg = <0>;
99*95b9cd1fSLiu Ying
100*95b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_dc0_pixel_link0: endpoint@0 {
101*95b9cd1fSLiu Ying                        reg = <0>;
102*95b9cd1fSLiu Ying                        remote-endpoint = <&dc0_pixel_link0_mipi_lvds_0_pxl2dpi>;
103*95b9cd1fSLiu Ying                    };
104*95b9cd1fSLiu Ying
105*95b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_dc0_pixel_link1: endpoint@1 {
106*95b9cd1fSLiu Ying                        reg = <1>;
107*95b9cd1fSLiu Ying                        remote-endpoint = <&dc0_pixel_link1_mipi_lvds_0_pxl2dpi>;
108*95b9cd1fSLiu Ying                    };
109*95b9cd1fSLiu Ying                };
110*95b9cd1fSLiu Ying
111*95b9cd1fSLiu Ying                port@1 {
112*95b9cd1fSLiu Ying                    #address-cells = <1>;
113*95b9cd1fSLiu Ying                    #size-cells = <0>;
114*95b9cd1fSLiu Ying                    reg = <1>;
115*95b9cd1fSLiu Ying
116*95b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0: endpoint@0 {
117*95b9cd1fSLiu Ying                        reg = <0>;
118*95b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi>;
119*95b9cd1fSLiu Ying                    };
120*95b9cd1fSLiu Ying
121*95b9cd1fSLiu Ying                    mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1: endpoint@1 {
122*95b9cd1fSLiu Ying                        reg = <1>;
123*95b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi>;
124*95b9cd1fSLiu Ying                    };
125*95b9cd1fSLiu Ying                };
126*95b9cd1fSLiu Ying            };
127*95b9cd1fSLiu Ying        };
128*95b9cd1fSLiu Ying
129*95b9cd1fSLiu Ying        mipi_lvds_0_ldb: ldb {
130*95b9cd1fSLiu Ying            #address-cells = <1>;
131*95b9cd1fSLiu Ying            #size-cells = <0>;
132*95b9cd1fSLiu Ying            compatible = "fsl,imx8qxp-ldb";
133*95b9cd1fSLiu Ying            clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
134*95b9cd1fSLiu Ying                     <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>;
135*95b9cd1fSLiu Ying            clock-names = "pixel", "bypass";
136*95b9cd1fSLiu Ying            power-domains = <&pd IMX_SC_R_LVDS_0>;
137*95b9cd1fSLiu Ying
138*95b9cd1fSLiu Ying            channel@0 {
139*95b9cd1fSLiu Ying                #address-cells = <1>;
140*95b9cd1fSLiu Ying                #size-cells = <0>;
141*95b9cd1fSLiu Ying                reg = <0>;
142*95b9cd1fSLiu Ying                phys = <&mipi_lvds_0_phy>;
143*95b9cd1fSLiu Ying                phy-names = "lvds_phy";
144*95b9cd1fSLiu Ying
145*95b9cd1fSLiu Ying                port@0 {
146*95b9cd1fSLiu Ying                    reg = <0>;
147*95b9cd1fSLiu Ying
148*95b9cd1fSLiu Ying                    mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint {
149*95b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>;
150*95b9cd1fSLiu Ying                    };
151*95b9cd1fSLiu Ying                };
152*95b9cd1fSLiu Ying
153*95b9cd1fSLiu Ying                port@1 {
154*95b9cd1fSLiu Ying                    reg = <1>;
155*95b9cd1fSLiu Ying
156*95b9cd1fSLiu Ying                    /* ... */
157*95b9cd1fSLiu Ying                };
158*95b9cd1fSLiu Ying            };
159*95b9cd1fSLiu Ying
160*95b9cd1fSLiu Ying            channel@1 {
161*95b9cd1fSLiu Ying                #address-cells = <1>;
162*95b9cd1fSLiu Ying                #size-cells = <0>;
163*95b9cd1fSLiu Ying                reg = <1>;
164*95b9cd1fSLiu Ying                phys = <&mipi_lvds_0_phy>;
165*95b9cd1fSLiu Ying                phy-names = "lvds_phy";
166*95b9cd1fSLiu Ying
167*95b9cd1fSLiu Ying                port@0 {
168*95b9cd1fSLiu Ying                    reg = <0>;
169*95b9cd1fSLiu Ying
170*95b9cd1fSLiu Ying                    mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint {
171*95b9cd1fSLiu Ying                        remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>;
172*95b9cd1fSLiu Ying                    };
173*95b9cd1fSLiu Ying                };
174*95b9cd1fSLiu Ying
175*95b9cd1fSLiu Ying                port@1 {
176*95b9cd1fSLiu Ying                    reg = <1>;
177*95b9cd1fSLiu Ying
178*95b9cd1fSLiu Ying                    /* ... */
179*95b9cd1fSLiu Ying                };
180*95b9cd1fSLiu Ying            };
181*95b9cd1fSLiu Ying        };
182*95b9cd1fSLiu Ying    };
183*95b9cd1fSLiu Ying
184*95b9cd1fSLiu Ying    mipi_lvds_0_phy: phy@56228300 {
185*95b9cd1fSLiu Ying        compatible = "fsl,imx8qxp-mipi-dphy";
186*95b9cd1fSLiu Ying        reg = <0x56228300 0x100>;
187*95b9cd1fSLiu Ying        clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_PHY>;
188*95b9cd1fSLiu Ying        clock-names = "phy_ref";
189*95b9cd1fSLiu Ying        #phy-cells = <0>;
190*95b9cd1fSLiu Ying        fsl,syscon = <&mipi_lvds_0_csr>;
191*95b9cd1fSLiu Ying        power-domains = <&pd IMX_SC_R_MIPI_0>;
192*95b9cd1fSLiu Ying    };
193