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		regulator-always-on;
68	};
69
70	vcc_3v3: regulator-vcc_3v3 {
71		compatible = "regulator-fixed";
72		regulator-name = "VCC_3V3";
73		regulator-min-microvolt = <3300000>;
74		regulator-max-microvolt = <3300000>;
75	};
76
77	emmc_pwrseq: emmc-pwrseq {
78		compatible = "mmc-pwrseq-emmc";
79		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
80	};
81
82	wifi32k: wifi32k {
83		compatible = "pwm-clock";
84		#clock-cells = <0>;
85		clock-frequency = <32768>;
86		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
87	};
88
89	sdio_pwrseq: sdio-pwrseq {
90		compatible = "mmc-pwrseq-simple";
91		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
92		clocks = <&wifi32k>;
93		clock-names = "ext_clock";
94	};
95
96	cvbs-connector {
97		compatible = "composite-video-connector";
98
99		port {
100			cvbs_connector_in: endpoint {
101				remote-endpoint = <&cvbs_vdac_out>;
102			};
103		};
104	};
105
106	hdmi-connector {
107		compatible = "hdmi-connector";
108		type = "a";
109
110		port {
111			hdmi_connector_in: endpoint {
112				remote-endpoint = <&hdmi_tx_tmds_out>;
113			};
114		};
115	};
116};
117
118&cec_AO {
119	status = "okay";
120	pinctrl-0 = <&ao_cec_pins>;
121	pinctrl-names = "default";
122	hdmi-phandle = <&hdmi_tx>;
123};
124
125&cvbs_vdac_port {
126	cvbs_vdac_out: endpoint {
127		remote-endpoint = <&cvbs_connector_in>;
128	};
129};
130
131&ethmac {
132	status = "okay";
133	pinctrl-0 = <&eth_rgmii_pins>;
134	pinctrl-names = "default";
135
136	phy-handle = <&eth_phy0>;
137	phy-mode = "rgmii";
138
139	amlogic,tx-delay-ns = <2>;
140
141	mdio {
142		compatible = "snps,dwmac-mdio";
143		#address-cells = <1>;
144		#size-cells = <0>;
145
146		eth_phy0: ethernet-phy@0 {
147			/* Realtek RTL8211F (0x001cc916) */
148			reg = <0>;
149
150			reset-assert-us = <10000>;
151			reset-deassert-us = <80000>;
152			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
153
154			interrupt-parent = <&gpio_intc>;
155			/* MAC_INTR on GPIOZ_15 */
156			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
157		};
158	};
159};
160
161&hdmi_tx {
162	status = "okay";
163	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
164	pinctrl-names = "default";
165	hdmi-supply = <&vddio_ao18>;
166};
167
168&hdmi_tx_tmds_port {
169	hdmi_tx_tmds_out: endpoint {
170		remote-endpoint = <&hdmi_connector_in>;
171	};
172};
173
174&ir {
175	status = "okay";
176	pinctrl-0 = <&remote_input_ao_pins>;
177	pinctrl-names = "default";
178};
179
180&pwm_ef {
181	status = "okay";
182	pinctrl-0 = <&pwm_e_pins>;
183	pinctrl-names = "default";
184	clocks = <&clkc CLKID_FCLK_DIV4>;
185	clock-names = "clkin0";
186};
187
188&saradc {
189	status = "okay";
190	vref-supply = <&vddio_ao18>;
191};
192
193/* Wireless SDIO Module */
194&sd_emmc_a {
195	status = "okay";
196	pinctrl-0 = <&sdio_pins>;
197	pinctrl-1 = <&sdio_clk_gate_pins>;
198	pinctrl-names = "default", "clk-gate";
199	#address-cells = <1>;
200	#size-cells = <0>;
201
202	bus-width = <4>;
203	cap-sd-highspeed;
204	max-frequency = <50000000>;
205
206	non-removable;
207	disable-wp;
208
209	/* WiFi firmware requires power to be kept while in suspend */
210	keep-power-in-suspend;
211
212	mmc-pwrseq = <&sdio_pwrseq>;
213
214	vmmc-supply = <&vddao_3v3>;
215	vqmmc-supply = <&vddio_boot>;
216
217	brcmf: wifi@1 {
218		reg = <1>;
219		compatible = "brcm,bcm4329-fmac";
220	};
221};
222
223/* SD card */
224&sd_emmc_b {
225	status = "okay";
226	pinctrl-0 = <&sdcard_pins>;
227	pinctrl-1 = <&sdcard_clk_gate_pins>;
228	pinctrl-names = "default", "clk-gate";
229
230	bus-width = <4>;
231	cap-sd-highspeed;
232	max-frequency = <50000000>;
233	disable-wp;
234
235	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
236
237	vmmc-supply = <&vddao_3v3>;
238	vqmmc-supply = <&vcc_3v3>;
239};
240
241/* eMMC */
242&sd_emmc_c {
243	status = "okay";
244	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
245	pinctrl-1 = <&emmc_clk_gate_pins>;
246	pinctrl-names = "default", "clk-gate";
247
248	bus-width = <8>;
249	cap-mmc-highspeed;
250	max-frequency = <200000000>;
251	non-removable;
252	disable-wp;
253	mmc-ddr-1_8v;
254	mmc-hs200-1_8v;
255
256	mmc-pwrseq = <&emmc_pwrseq>;
257	vmmc-supply = <&vcc_3v3>;
258	vqmmc-supply = <&vddio_boot>;
259};
260
261/* This is connected to the Bluetooth module: */
262&uart_A {
263	status = "okay";
264	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
265	pinctrl-names = "default";
266	uart-has-rtscts;
267
268	bluetooth {
269		compatible = "brcm,bcm43438-bt";
270		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
271	};
272};
273
274/* This UART is brought out to the DB9 connector */
275&uart_AO {
276	status = "okay";
277	pinctrl-0 = <&uart_ao_a_pins>;
278	pinctrl-names = "default";
279};
280
281&usb0_phy {
282	status = "okay";
283	phy-supply = <&usb_pwr>;
284};
285
286&usb0 {
287	status = "okay";
288};
289