1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2ac40004dSKevin Hilman/*
3ac40004dSKevin Hilman * Copyright (c) 2016 Andreas Färber
4ac40004dSKevin Hilman * Copyright (c) 2016 BayLibre, Inc.
5ac40004dSKevin Hilman * Author: Kevin Hilman <khilman@kernel.org>
6ac40004dSKevin Hilman */
7ac40004dSKevin Hilman
8ac40004dSKevin Hilman#include "meson-gxbb.dtsi"
9ac40004dSKevin Hilman
10ac40004dSKevin Hilman/ {
11ac40004dSKevin Hilman	aliases {
12ac40004dSKevin Hilman		serial0 = &uart_AO;
13059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
14ac40004dSKevin Hilman	};
15ac40004dSKevin Hilman
16ac40004dSKevin Hilman	chosen {
17ac40004dSKevin Hilman		stdout-path = "serial0:115200n8";
18ac40004dSKevin Hilman	};
19ac40004dSKevin Hilman
20ac40004dSKevin Hilman	memory@0 {
21ac40004dSKevin Hilman		device_type = "memory";
22ac40004dSKevin Hilman		reg = <0x0 0x0 0x0 0x40000000>;
23ac40004dSKevin Hilman	};
248735053dSJerome Brunet
258735053dSJerome Brunet	usb_pwr: regulator-usb-pwrs {
268735053dSJerome Brunet		compatible = "regulator-fixed";
278735053dSJerome Brunet
288735053dSJerome Brunet		regulator-name = "USB_PWR";
298735053dSJerome Brunet
308735053dSJerome Brunet		regulator-min-microvolt = <5000000>;
318735053dSJerome Brunet		regulator-max-microvolt = <5000000>;
328735053dSJerome Brunet
338735053dSJerome Brunet		/* signal name in schematic: USB_PWR_EN */
348735053dSJerome Brunet		gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
358735053dSJerome Brunet		enable-active-high;
368735053dSJerome Brunet	};
37ef8d2ffeSKevin Hilman
38ef8d2ffeSKevin Hilman	vddio_card: gpio-regulator {
39ef8d2ffeSKevin Hilman		compatible = "regulator-gpio";
40ef8d2ffeSKevin Hilman
41ef8d2ffeSKevin Hilman		regulator-name = "VDDIO_CARD";
42ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
43ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
44ef8d2ffeSKevin Hilman
45ef8d2ffeSKevin Hilman		gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
46ef8d2ffeSKevin Hilman		gpios-states = <1>;
47ef8d2ffeSKevin Hilman
48ef8d2ffeSKevin Hilman		/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
49f9717178SNeil Armstrong		states = <1800000 0>,
50f9717178SNeil Armstrong			 <3300000 1>;
515149616eSJerome Brunet
525149616eSJerome Brunet		regulator-settling-time-up-us = <10000>;
535149616eSJerome Brunet		regulator-settling-time-down-us = <150000>;
54ef8d2ffeSKevin Hilman	};
55ef8d2ffeSKevin Hilman
56ef8d2ffeSKevin Hilman	vddio_boot: regulator-vddio_boot {
57ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
58ef8d2ffeSKevin Hilman		regulator-name = "VDDIO_BOOT";
59ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
60ef8d2ffeSKevin Hilman		regulator-max-microvolt = <1800000>;
61ef8d2ffeSKevin Hilman	};
62ef8d2ffeSKevin Hilman
63ef8d2ffeSKevin Hilman	vddao_3v3: regulator-vddao_3v3 {
64ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
65ef8d2ffeSKevin Hilman		regulator-name = "VDDAO_3V3";
66ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
67ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
68ef8d2ffeSKevin Hilman	};
69ef8d2ffeSKevin Hilman
70ef8d2ffeSKevin Hilman	vcc_3v3: regulator-vcc_3v3 {
71ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
72ef8d2ffeSKevin Hilman		regulator-name = "VCC_3V3";
73ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
74ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
75ef8d2ffeSKevin Hilman	};
76ef8d2ffeSKevin Hilman
77ef8d2ffeSKevin Hilman	emmc_pwrseq: emmc-pwrseq {
78ef8d2ffeSKevin Hilman		compatible = "mmc-pwrseq-emmc";
79ef8d2ffeSKevin Hilman		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
80ef8d2ffeSKevin Hilman	};
81caafa69dSNeil Armstrong
82caafa69dSNeil Armstrong	wifi32k: wifi32k {
83caafa69dSNeil Armstrong		compatible = "pwm-clock";
84caafa69dSNeil Armstrong		#clock-cells = <0>;
85caafa69dSNeil Armstrong		clock-frequency = <32768>;
86caafa69dSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
87caafa69dSNeil Armstrong	};
88ab3943feSNeil Armstrong
89ab3943feSNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
90ab3943feSNeil Armstrong		compatible = "mmc-pwrseq-simple";
91ab3943feSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
92ab3943feSNeil Armstrong		clocks = <&wifi32k>;
93ab3943feSNeil Armstrong		clock-names = "ext_clock";
94ab3943feSNeil Armstrong	};
95fafdbdf7SNeil Armstrong
96748a421dSAndreas Färber	cvbs_connector: cvbs-connector {
97fafdbdf7SNeil Armstrong		compatible = "composite-video-connector";
98fafdbdf7SNeil Armstrong
99fafdbdf7SNeil Armstrong		port {
100fafdbdf7SNeil Armstrong			cvbs_connector_in: endpoint {
101fafdbdf7SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
102fafdbdf7SNeil Armstrong			};
103fafdbdf7SNeil Armstrong		};
104fafdbdf7SNeil Armstrong	};
1056939db7eSNeil Armstrong
1066939db7eSNeil Armstrong	hdmi-connector {
1076939db7eSNeil Armstrong		compatible = "hdmi-connector";
1086939db7eSNeil Armstrong		type = "a";
1096939db7eSNeil Armstrong
1106939db7eSNeil Armstrong		port {
1116939db7eSNeil Armstrong			hdmi_connector_in: endpoint {
1126939db7eSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
1136939db7eSNeil Armstrong			};
1146939db7eSNeil Armstrong		};
1156939db7eSNeil Armstrong	};
116ac40004dSKevin Hilman};
117ac40004dSKevin Hilman
118b16c71c9SNeil Armstrong&cec_AO {
119b16c71c9SNeil Armstrong	status = "okay";
120b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
121b16c71c9SNeil Armstrong	pinctrl-names = "default";
122b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
123b16c71c9SNeil Armstrong};
124b16c71c9SNeil Armstrong
12567fe352fSAndreas Färber&cvbs_vdac_port {
12667fe352fSAndreas Färber	cvbs_vdac_out: endpoint {
12767fe352fSAndreas Färber		remote-endpoint = <&cvbs_connector_in>;
12867fe352fSAndreas Färber	};
12967fe352fSAndreas Färber};
13067fe352fSAndreas Färber
13167fe352fSAndreas Färber&hdmi_tx {
132ac40004dSKevin Hilman	status = "okay";
13367fe352fSAndreas Färber	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
134f40d437fSCarlo Caione	pinctrl-names = "default";
135ac40004dSKevin Hilman};
1368c5509f0SKevin Hilman
13767fe352fSAndreas Färber&hdmi_tx_tmds_port {
13867fe352fSAndreas Färber	hdmi_tx_tmds_out: endpoint {
13967fe352fSAndreas Färber		remote-endpoint = <&hdmi_connector_in>;
14067fe352fSAndreas Färber	};
14167fe352fSAndreas Färber};
14267fe352fSAndreas Färber
143ae89ed79SMartin Blumenstingl&ir {
144ae89ed79SMartin Blumenstingl	status = "okay";
145ae89ed79SMartin Blumenstingl	pinctrl-0 = <&remote_input_ao_pins>;
146ae89ed79SMartin Blumenstingl	pinctrl-names = "default";
147ae89ed79SMartin Blumenstingl};
1488735053dSJerome Brunet
14967fe352fSAndreas Färber&pwm_ef {
1508735053dSJerome Brunet	status = "okay";
15167fe352fSAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
15267fe352fSAndreas Färber	pinctrl-names = "default";
15367fe352fSAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
15467fe352fSAndreas Färber	clock-names = "clkin0";
1558735053dSJerome Brunet};
156ef8d2ffeSKevin Hilman
157ef8d2ffeSKevin Hilman/* Wireless SDIO Module */
158ef8d2ffeSKevin Hilman&sd_emmc_a {
159ef8d2ffeSKevin Hilman	status = "okay";
160ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdio_pins>;
16167e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
16267e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
163ef8d2ffeSKevin Hilman	#address-cells = <1>;
164ef8d2ffeSKevin Hilman	#size-cells = <0>;
165ef8d2ffeSKevin Hilman
166ef8d2ffeSKevin Hilman	bus-width = <4>;
167ef8d2ffeSKevin Hilman	cap-sd-highspeed;
168adc52bf7SJerome Brunet	max-frequency = <50000000>;
169ef8d2ffeSKevin Hilman
170ef8d2ffeSKevin Hilman	non-removable;
171ef8d2ffeSKevin Hilman	disable-wp;
172ef8d2ffeSKevin Hilman
1730060bd29SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
1740060bd29SNeil Armstrong	keep-power-in-suspend;
1750060bd29SNeil Armstrong
176ab3943feSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
177ab3943feSNeil Armstrong
178ef8d2ffeSKevin Hilman	vmmc-supply = <&vddao_3v3>;
179ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_boot>;
180ab3943feSNeil Armstrong
181e0e216ebSAndreas Färber	brcmf: wifi@1 {
182ab3943feSNeil Armstrong		reg = <1>;
183ab3943feSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
184ab3943feSNeil Armstrong	};
185ef8d2ffeSKevin Hilman};
186ef8d2ffeSKevin Hilman
187ef8d2ffeSKevin Hilman/* SD card */
188ef8d2ffeSKevin Hilman&sd_emmc_b {
189ef8d2ffeSKevin Hilman	status = "okay";
190ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdcard_pins>;
19167e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
19267e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
193ef8d2ffeSKevin Hilman
194ef8d2ffeSKevin Hilman	bus-width = <4>;
195ef8d2ffeSKevin Hilman	cap-sd-highspeed;
1960f553358SJerome Brunet	sd-uhs-sdr12;
1970f553358SJerome Brunet	sd-uhs-sdr25;
1980f553358SJerome Brunet	sd-uhs-sdr50;
199ef8d2ffeSKevin Hilman	max-frequency = <100000000>;
200ef8d2ffeSKevin Hilman	disable-wp;
201ef8d2ffeSKevin Hilman
202f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
203ef8d2ffeSKevin Hilman
204ef8d2ffeSKevin Hilman	vmmc-supply = <&vddao_3v3>;
205ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_card>;
206ef8d2ffeSKevin Hilman};
207ef8d2ffeSKevin Hilman
208ef8d2ffeSKevin Hilman/* eMMC */
209ef8d2ffeSKevin Hilman&sd_emmc_c {
210ef8d2ffeSKevin Hilman	status = "okay";
211ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
21267e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
21367e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
214ef8d2ffeSKevin Hilman
215ef8d2ffeSKevin Hilman	bus-width = <8>;
216ef8d2ffeSKevin Hilman	cap-mmc-highspeed;
217ef8d2ffeSKevin Hilman	max-frequency = <200000000>;
218ef8d2ffeSKevin Hilman	non-removable;
219ef8d2ffeSKevin Hilman	disable-wp;
220ef8d2ffeSKevin Hilman	mmc-ddr-1_8v;
221ef8d2ffeSKevin Hilman	mmc-hs200-1_8v;
222ef8d2ffeSKevin Hilman
223ef8d2ffeSKevin Hilman	mmc-pwrseq = <&emmc_pwrseq>;
224ef8d2ffeSKevin Hilman	vmmc-supply = <&vcc_3v3>;
225ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_boot>;
226ef8d2ffeSKevin Hilman};
227caafa69dSNeil Armstrong
22867fe352fSAndreas Färber/* This UART is brought out to the DB9 connector */
22967fe352fSAndreas Färber&uart_AO {
230caafa69dSNeil Armstrong	status = "okay";
23167fe352fSAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
2326939db7eSNeil Armstrong	pinctrl-names = "default";
2336939db7eSNeil Armstrong};
2346939db7eSNeil Armstrong
23567fe352fSAndreas Färber&usb0_phy {
23667fe352fSAndreas Färber	status = "okay";
23767fe352fSAndreas Färber	phy-supply = <&usb_pwr>;
2386939db7eSNeil Armstrong};
23967fe352fSAndreas Färber
24067fe352fSAndreas Färber&usb1_phy {
24167fe352fSAndreas Färber	status = "okay";
24267fe352fSAndreas Färber};
24367fe352fSAndreas Färber
24467fe352fSAndreas Färber&usb0 {
24567fe352fSAndreas Färber	status = "okay";
24667fe352fSAndreas Färber};
24767fe352fSAndreas Färber
24867fe352fSAndreas Färber&usb1 {
24967fe352fSAndreas Färber	status = "okay";
2506939db7eSNeil Armstrong};
251