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