1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2016 Andreas Färber
4 */
5
6#include "meson-gxbb.dtsi"
7#include <dt-bindings/sound/meson-aiu.h>
8
9/ {
10	compatible = "tronsmart,vega-s95", "amlogic,meson-gxbb";
11
12	aliases {
13		serial0 = &uart_AO;
14		ethernet0 = &ethmac;
15	};
16
17	chosen {
18		stdout-path = "serial0:115200n8";
19	};
20
21	spdif_dit: audio-codec-0 {
22		#sound-dai-cells = <0>;
23		compatible = "linux,spdif-dit";
24		status = "okay";
25		sound-name-prefix = "DIT";
26	};
27
28	leds {
29		compatible = "gpio-leds";
30
31		led-blue {
32			label = "vega-s95:blue:on";
33			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
34			default-state = "on";
35			panic-indicator;
36		};
37	};
38
39	usb_pwr: regulator-usb-pwrs {
40		compatible = "regulator-fixed";
41
42		regulator-name = "USB_PWR";
43
44		regulator-min-microvolt = <5000000>;
45		regulator-max-microvolt = <5000000>;
46
47		gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
48		enable-active-high;
49	};
50
51	vddio_boot: regulator-vddio_boot {
52		compatible = "regulator-fixed";
53		regulator-name = "VDDIO_BOOT";
54		regulator-min-microvolt = <1800000>;
55		regulator-max-microvolt = <1800000>;
56	};
57
58	vddao_3v3: regulator-vddao_3v3 {
59		compatible = "regulator-fixed";
60		regulator-name = "VDDAO_3V3";
61		regulator-min-microvolt = <3300000>;
62		regulator-max-microvolt = <3300000>;
63	};
64
65	vddio_ao18: regulator-vddio_ao18 {
66		compatible = "regulator-fixed";
67		regulator-name = "VDDIO_AO18";
68		regulator-min-microvolt = <1800000>;
69		regulator-max-microvolt = <1800000>;
70	};
71
72	vcc_3v3: regulator-vcc_3v3 {
73		compatible = "regulator-fixed";
74		regulator-name = "VCC_3V3";
75		regulator-min-microvolt = <3300000>;
76		regulator-max-microvolt = <3300000>;
77	};
78
79	emmc_pwrseq: emmc-pwrseq {
80		compatible = "mmc-pwrseq-emmc";
81		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
82	};
83
84	wifi32k: wifi32k {
85		compatible = "pwm-clock";
86		#clock-cells = <0>;
87		clock-frequency = <32768>;
88		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
89	};
90
91	hdmi-connector {
92		compatible = "hdmi-connector";
93		type = "a";
94
95		port {
96			hdmi_connector_in: endpoint {
97				remote-endpoint = <&hdmi_tx_tmds_out>;
98			};
99		};
100	};
101
102	sdio_pwrseq: sdio-pwrseq {
103		compatible = "mmc-pwrseq-simple";
104		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
105		clocks = <&wifi32k>;
106		clock-names = "ext_clock";
107	};
108
109	sound {
110		compatible = "amlogic,gx-sound-card";
111		model = "VEGA-S95";
112		assigned-clocks = <&clkc CLKID_MPLL0>,
113				  <&clkc CLKID_MPLL1>,
114				  <&clkc CLKID_MPLL2>;
115		assigned-clock-parents = <0>, <0>, <0>;
116		assigned-clock-rates = <294912000>,
117				       <270950400>,
118				       <393216000>;
119
120		dai-link-0 {
121			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
122		};
123
124		dai-link-1 {
125			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
126		};
127
128		dai-link-2 {
129			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
130			dai-format = "i2s";
131			mclk-fs = <256>;
132
133			codec-0 {
134				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
135			};
136		};
137
138		dai-link-3 {
139			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
140
141			codec-0 {
142				sound-dai = <&spdif_dit>;
143			};
144		};
145
146		dai-link-4 {
147			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
148
149			codec-0 {
150				sound-dai = <&hdmi_tx>;
151			};
152		};
153	};
154};
155
156&aiu {
157	status = "okay";
158	pinctrl-0 = <&spdif_out_y_pins>;
159	pinctrl-names = "default";
160};
161
162&cec_AO {
163	status = "okay";
164	pinctrl-0 = <&ao_cec_pins>;
165	pinctrl-names = "default";
166	hdmi-phandle = <&hdmi_tx>;
167};
168
169&ethmac {
170	status = "okay";
171	pinctrl-0 = <&eth_rgmii_pins>;
172	pinctrl-names = "default";
173
174	phy-handle = <&eth_phy0>;
175	phy-mode = "rgmii";
176
177	amlogic,tx-delay-ns = <2>;
178
179	mdio {
180		compatible = "snps,dwmac-mdio";
181		#address-cells = <1>;
182		#size-cells = <0>;
183
184		eth_phy0: ethernet-phy@0 {
185			/* Realtek RTL8211F (0x001cc916) */
186			reg = <0>;
187
188			reset-assert-us = <10000>;
189			reset-deassert-us = <80000>;
190			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
191
192			interrupt-parent = <&gpio_intc>;
193			/* MAC_INTR on GPIOZ_15 */
194			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
195		};
196	};
197};
198
199&hdmi_tx {
200	status = "okay";
201	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
202	pinctrl-names = "default";
203};
204
205&hdmi_tx_tmds_port {
206	hdmi_tx_tmds_out: endpoint {
207		remote-endpoint = <&hdmi_connector_in>;
208	};
209};
210
211&ir {
212	status = "okay";
213	pinctrl-0 = <&remote_input_ao_pins>;
214	pinctrl-names = "default";
215	linux,rc-map-name = "rc-vega-s9x";
216};
217
218&pwm_ef {
219	status = "okay";
220	pinctrl-0 = <&pwm_e_pins>;
221	pinctrl-names = "default";
222	clocks = <&clkc CLKID_FCLK_DIV4>;
223	clock-names = "clkin0";
224};
225
226&saradc {
227	status = "okay";
228	vref-supply = <&vddio_ao18>;
229};
230
231/* Wireless SDIO Module */
232&sd_emmc_a {
233	status = "okay";
234	pinctrl-0 = <&sdio_pins>;
235	pinctrl-1 = <&sdio_clk_gate_pins>;
236	pinctrl-names = "default", "clk-gate";
237	#address-cells = <1>;
238	#size-cells = <0>;
239
240	bus-width = <4>;
241	cap-sd-highspeed;
242	max-frequency = <50000000>;
243
244	non-removable;
245	disable-wp;
246
247	/* WiFi firmware requires power to be kept while in suspend */
248	keep-power-in-suspend;
249
250	mmc-pwrseq = <&sdio_pwrseq>;
251
252	vmmc-supply = <&vddao_3v3>;
253	vqmmc-supply = <&vddio_boot>;
254
255	brcmf: wifi@1 {
256		reg = <1>;
257		compatible = "brcm,bcm4329-fmac";
258	};
259};
260
261/* SD card */
262&sd_emmc_b {
263	status = "okay";
264	pinctrl-0 = <&sdcard_pins>;
265	pinctrl-1 = <&sdcard_clk_gate_pins>;
266	pinctrl-names = "default", "clk-gate";
267
268	bus-width = <4>;
269	cap-sd-highspeed;
270	max-frequency = <50000000>;
271	disable-wp;
272
273	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
274
275	vmmc-supply = <&vddao_3v3>;
276	vqmmc-supply = <&vcc_3v3>;
277};
278
279/* eMMC */
280&sd_emmc_c {
281	status = "okay";
282	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
283	pinctrl-1 = <&emmc_clk_gate_pins>;
284	pinctrl-names = "default", "clk-gate";
285
286	bus-width = <8>;
287	cap-mmc-highspeed;
288	max-frequency = <200000000>;
289	non-removable;
290	disable-wp;
291	mmc-ddr-1_8v;
292	mmc-hs200-1_8v;
293
294	mmc-pwrseq = <&emmc_pwrseq>;
295	vmmc-supply = <&vcc_3v3>;
296	vqmmc-supply = <&vddio_boot>;
297};
298
299/* This is connected to the Bluetooth module: */
300&uart_A {
301	status = "okay";
302	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
303	pinctrl-names = "default";
304
305	bluetooth {
306		compatible = "brcm,bcm43438-bt";
307		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
308		max-speed = <2000000>;
309		clocks = <&wifi32k>;
310		clock-names = "lpo";
311	};
312};
313
314/* This UART is brought out to the DB9 connector */
315&uart_AO {
316	status = "okay";
317	pinctrl-0 = <&uart_ao_a_pins>;
318	pinctrl-names = "default";
319};
320
321&usb0_phy {
322	status = "okay";
323	phy-supply = <&usb_pwr>;
324};
325
326&usb1_phy {
327	status = "okay";
328};
329
330&usb0 {
331	status = "okay";
332};
333
334&usb1 {
335	status = "okay";
336};
337