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