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