blob: 08d6b69ba469183d432da40ff6cccec78f20326b [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2016 Endless Computers, Inc.
4 * Author: Carlo Caione <carlo@endlessm.com>
5 */
6
7/* Common DTSI for same Amlogic Q200/Q201 and P230/P231 boards using either
8 * the pin-compatible S912 (GXM) or S905D (GXL) SoCs.
9 */
10
11#include <dt-bindings/sound/meson-aiu.h>
12
13/ {
14 aliases {
15 serial0 = &uart_AO;
16 ethernet0 = &ethmac;
17 };
18
19 dio2133: analog-amplifier {
20 compatible = "simple-audio-amplifier";
21 sound-name-prefix = "AU2";
22 VCC-supply = <&hdmi_5v>;
23 enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
24 };
25
26 spdif_dit: audio-codec-0 {
27 #sound-dai-cells = <0>;
28 compatible = "linux,spdif-dit";
Tom Rini53633a82024-02-29 12:33:36 -050029 sound-name-prefix = "DIT";
30 };
31
32 chosen {
33 stdout-path = "serial0:115200n8";
34 };
35
36 memory@0 {
37 device_type = "memory";
38 reg = <0x0 0x0 0x0 0x80000000>;
39 };
40
41 hdmi_5v: regulator-hdmi-5v {
42 compatible = "regulator-fixed";
43
44 regulator-name = "HDMI_5V";
45 regulator-min-microvolt = <5000000>;
46 regulator-max-microvolt = <5000000>;
47
48 gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
49 enable-active-high;
50 regulator-always-on;
51 };
52
Tom Rini6bb92fc2024-05-20 09:54:58 -060053 vddio_ao18: regulator-vddio-ao18 {
Tom Rini53633a82024-02-29 12:33:36 -050054 compatible = "regulator-fixed";
55 regulator-name = "VDDIO_AO18";
56 regulator-min-microvolt = <1800000>;
57 regulator-max-microvolt = <1800000>;
58 };
59
Tom Rini6bb92fc2024-05-20 09:54:58 -060060 vddio_boot: regulator-vddio-boot {
Tom Rini53633a82024-02-29 12:33:36 -050061 compatible = "regulator-fixed";
62 regulator-name = "VDDIO_BOOT";
63 regulator-min-microvolt = <1800000>;
64 regulator-max-microvolt = <1800000>;
65 };
66
Tom Rini6bb92fc2024-05-20 09:54:58 -060067 vddao_3v3: regulator-vddao-3v3 {
Tom Rini53633a82024-02-29 12:33:36 -050068 compatible = "regulator-fixed";
69 regulator-name = "VDDAO_3V3";
70 regulator-min-microvolt = <3300000>;
71 regulator-max-microvolt = <3300000>;
72 };
73
Tom Rini6bb92fc2024-05-20 09:54:58 -060074 vcc_3v3: regulator-vcc-3v3 {
Tom Rini53633a82024-02-29 12:33:36 -050075 compatible = "regulator-fixed";
76 regulator-name = "VCC_3V3";
77 regulator-min-microvolt = <3300000>;
78 regulator-max-microvolt = <3300000>;
79 };
80
81 emmc_pwrseq: emmc-pwrseq {
82 compatible = "mmc-pwrseq-emmc";
83 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
84 };
85
86 wifi32k: wifi32k {
87 compatible = "pwm-clock";
88 #clock-cells = <0>;
89 clock-frequency = <32768>;
90 pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
91 };
92
93 sdio_pwrseq: sdio-pwrseq {
94 compatible = "mmc-pwrseq-simple";
95 reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
96 clocks = <&wifi32k>;
97 clock-names = "ext_clock";
98 };
99
100 cvbs-connector {
101 compatible = "composite-video-connector";
102
103 port {
104 cvbs_connector_in: endpoint {
105 remote-endpoint = <&cvbs_vdac_out>;
106 };
107 };
108 };
109
110 hdmi-connector {
111 compatible = "hdmi-connector";
112 type = "a";
113
114 port {
115 hdmi_connector_in: endpoint {
116 remote-endpoint = <&hdmi_tx_tmds_out>;
117 };
118 };
119 };
120
121 sound {
122 compatible = "amlogic,gx-sound-card";
123 model = "P230-Q200";
124 audio-aux-devs = <&dio2133>;
125 audio-widgets = "Line", "Lineout";
126 audio-routing = "AU2 INL", "ACODEC LOLP",
127 "AU2 INR", "ACODEC LORP",
128 "AU2 INL", "ACODEC LOLN",
129 "AU2 INR", "ACODEC LORN",
130 "Lineout", "AU2 OUTL",
131 "Lineout", "AU2 OUTR";
132 assigned-clocks = <&clkc CLKID_MPLL0>,
133 <&clkc CLKID_MPLL1>,
134 <&clkc CLKID_MPLL2>;
135 assigned-clock-parents = <0>, <0>, <0>;
136 assigned-clock-rates = <294912000>,
137 <270950400>,
138 <393216000>;
139 dai-link-0 {
140 sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
141 };
142
143 dai-link-1 {
144 sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
145 };
146
147 dai-link-2 {
148 sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
149 dai-format = "i2s";
150 mclk-fs = <256>;
151
152 codec-0 {
153 sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
154 };
155
156 codec-1 {
157 sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
158 };
159 };
160
161 dai-link-3 {
162 sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
163
164 codec-0 {
165 sound-dai = <&spdif_dit>;
166 };
167 };
168
169 dai-link-4 {
170 sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
171
172 codec-0 {
173 sound-dai = <&hdmi_tx>;
174 };
175 };
176
177 dai-link-5 {
178 sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;
179
180 codec-0 {
181 sound-dai = <&acodec>;
182 };
183 };
184 };
185};
186
187&acodec {
188 AVDD-supply = <&vddio_ao18>;
189 status = "okay";
190};
191
192&aiu {
193 status = "okay";
194 pinctrl-0 = <&spdif_out_h_pins>;
195 pinctrl-names = "default";
196
197};
198
199&cec_AO {
200 status = "okay";
201 pinctrl-0 = <&ao_cec_pins>;
202 pinctrl-names = "default";
203 hdmi-phandle = <&hdmi_tx>;
204};
205
206&cvbs_vdac_port {
207 cvbs_vdac_out: endpoint {
208 remote-endpoint = <&cvbs_connector_in>;
209 };
210};
211
212&ethmac {
213 status = "okay";
214};
215
216&hdmi_tx {
217 status = "okay";
218 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
219 pinctrl-names = "default";
220 hdmi-supply = <&hdmi_5v>;
221};
222
223&hdmi_tx_tmds_port {
224 hdmi_tx_tmds_out: endpoint {
225 remote-endpoint = <&hdmi_connector_in>;
226 };
227};
228
229&ir {
230 status = "okay";
231 pinctrl-0 = <&remote_input_ao_pins>;
232 pinctrl-names = "default";
233};
234
235&pwm_ef {
236 status = "okay";
237 pinctrl-0 = <&pwm_e_pins>;
238 pinctrl-names = "default";
239 clocks = <&clkc CLKID_FCLK_DIV4>;
240 clock-names = "clkin0";
241};
242
243&saradc {
244 status = "okay";
245 vref-supply = <&vddio_ao18>;
246};
247
248/* Wireless SDIO Module */
249&sd_emmc_a {
250 status = "okay";
251 pinctrl-0 = <&sdio_pins>;
252 pinctrl-1 = <&sdio_clk_gate_pins>;
253 pinctrl-names = "default", "clk-gate";
254 #address-cells = <1>;
255 #size-cells = <0>;
256
257 bus-width = <4>;
258 cap-sd-highspeed;
259 max-frequency = <50000000>;
260
261 non-removable;
262 disable-wp;
263
264 /* WiFi firmware requires power to be kept while in suspend */
265 keep-power-in-suspend;
266
267 mmc-pwrseq = <&sdio_pwrseq>;
268
269 vmmc-supply = <&vddao_3v3>;
270 vqmmc-supply = <&vddio_boot>;
271};
272
273/* SD card */
274&sd_emmc_b {
275 status = "okay";
276 pinctrl-0 = <&sdcard_pins>;
277 pinctrl-1 = <&sdcard_clk_gate_pins>;
278 pinctrl-names = "default", "clk-gate";
279
280 bus-width = <4>;
281 cap-sd-highspeed;
282 max-frequency = <50000000>;
283 disable-wp;
284
285 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
286
287 vmmc-supply = <&vddao_3v3>;
288 vqmmc-supply = <&vddio_boot>;
289};
290
291/* eMMC */
292&sd_emmc_c {
293 status = "okay";
294 pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
295 pinctrl-1 = <&emmc_clk_gate_pins>;
296 pinctrl-names = "default", "clk-gate";
297
298 bus-width = <8>;
299 cap-mmc-highspeed;
300 max-frequency = <200000000>;
301 non-removable;
302 disable-wp;
303 mmc-ddr-1_8v;
304 mmc-hs200-1_8v;
305
306 mmc-pwrseq = <&emmc_pwrseq>;
307 vmmc-supply = <&vcc_3v3>;
308 vqmmc-supply = <&vddio_boot>;
309};
310
311/* This UART is brought out to the DB9 connector */
312&uart_AO {
313 status = "okay";
314 pinctrl-0 = <&uart_ao_a_pins>;
315 pinctrl-names = "default";
316};
317
318&usb {
319 status = "okay";
320 dr_mode = "otg";
321};