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		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_vbus: regulator-usb0-vbus {
32		compatible = "regulator-fixed";
33
34		regulator-name = "USB0_VBUS";
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	vcc_3v3: regulator-vcc_3v3 {
44		compatible = "regulator-fixed";
45		regulator-name = "VCC_3V3";
46		regulator-min-microvolt = <3300000>;
47		regulator-max-microvolt = <3300000>;
48	};
49
50	vcc_1v8: regulator-vcc_1v8 {
51		compatible = "regulator-fixed";
52		regulator-name = "VCC_1V8";
53		regulator-min-microvolt = <1800000>;
54		regulator-max-microvolt = <1800000>;
55	};
56
57	emmc_pwrseq: emmc-pwrseq {
58		compatible = "mmc-pwrseq-emmc";
59		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
60	};
61
62	wifi32k: wifi32k {
63		compatible = "pwm-clock";
64		#clock-cells = <0>;
65		clock-frequency = <32768>;
66		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
67	};
68
69	sdio_pwrseq: sdio-pwrseq {
70		compatible = "mmc-pwrseq-simple";
71		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>,
72				<&gpio GPIOX_20 GPIO_ACTIVE_LOW>;
73		clocks = <&wifi32k>;
74		clock-names = "ext_clock";
75	};
76};
77
78&ethmac {
79	status = "okay";
80	pinctrl-0 = <&eth_rgmii_pins>;
81	pinctrl-names = "default";
82
83	phy-handle = <&eth_phy0>;
84	phy-mode = "rgmii";
85
86	amlogic,tx-delay-ns = <2>;
87
88	snps,reset-gpio = <&gpio GPIOZ_14 0>;
89	snps,reset-delays-us = <0 10000 1000000>;
90	snps,reset-active-low;
91
92	mdio {
93		compatible = "snps,dwmac-mdio";
94		#address-cells = <1>;
95		#size-cells = <0>;
96
97		eth_phy0: ethernet-phy@0 {
98			/* Realtek RTL8211F (0x001cc916) */
99			reg = <0>;
100		};
101	};
102};
103
104&ir {
105	status = "okay";
106	pinctrl-0 = <&remote_input_ao_pins>;
107	pinctrl-names = "default";
108};
109
110&pwm_ef {
111	status = "okay";
112	pinctrl-0 = <&pwm_e_pins>;
113	pinctrl-names = "default";
114	clocks = <&clkc CLKID_FCLK_DIV4>;
115	clock-names = "clkin0";
116};
117
118/* Wireless SDIO Module */
119&sd_emmc_a {
120	status = "okay";
121	pinctrl-0 = <&sdio_pins &sdio_irq_pins>;
122	pinctrl-1 = <&sdio_clk_gate_pins>;
123	pinctrl-names = "default", "clk-gate";
124	#address-cells = <1>;
125	#size-cells = <0>;
126
127	bus-width = <4>;
128	cap-sd-highspeed;
129	max-frequency = <100000000>;
130
131	non-removable;
132	disable-wp;
133
134	mmc-pwrseq = <&sdio_pwrseq>;
135
136	vmmc-supply = <&vcc_3v3>;
137	vqmmc-supply = <&vcc_1v8>;
138
139	brcmf: wifi@1 {
140		reg = <1>;
141		compatible = "brcm,bcm4329-fmac";
142	};
143};
144
145/* SD card */
146&sd_emmc_b {
147	status = "okay";
148	pinctrl-0 = <&sdcard_pins>;
149	pinctrl-1 = <&sdcard_clk_gate_pins>;
150	pinctrl-names = "default", "clk-gate";
151
152	bus-width = <4>;
153	cap-sd-highspeed;
154	max-frequency = <100000000>;
155	disable-wp;
156
157	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
158	cd-inverted;
159
160	vmmc-supply = <&vcc_3v3>;
161};
162
163/* eMMC */
164&sd_emmc_c {
165	status = "okay";
166	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
167	pinctrl-1 = <&emmc_clk_gate_pins>;
168	pinctrl-names = "default", "clk-gate";
169
170	bus-width = <8>;
171	cap-mmc-highspeed;
172	max-frequency = <200000000>;
173	non-removable;
174	disable-wp;
175	mmc-ddr-1_8v;
176	mmc-hs200-1_8v;
177
178	mmc-pwrseq = <&emmc_pwrseq>;
179	vmmc-supply = <&vcc_3v3>;
180	vmmcq-sumpply = <&vcc_1v8>;
181};
182
183&uart_AO {
184	status = "okay";
185	pinctrl-0 = <&uart_ao_a_pins>;
186	pinctrl-names = "default";
187};
188
189&usb0_phy {
190	status = "okay";
191	phy-supply = <&usb_vbus>;
192};
193
194&usb1_phy {
195	status = "okay";
196};
197
198&usb0 {
199	status = "okay";
200};
201
202&usb1 {
203	status = "okay";
204};
205