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