1ac40004dSKevin Hilman/*
2ac40004dSKevin Hilman * Copyright (c) 2016 Andreas Färber
3ac40004dSKevin Hilman * Copyright (c) 2016 BayLibre, Inc.
4ac40004dSKevin Hilman * Author: Kevin Hilman <khilman@kernel.org>
5ac40004dSKevin Hilman *
6ac40004dSKevin Hilman * This file is dual-licensed: you can use it either under the terms
7ac40004dSKevin Hilman * of the GPL or the X11 license, at your option. Note that this dual
8ac40004dSKevin Hilman * licensing only applies to this file, and not this project as a
9ac40004dSKevin Hilman * whole.
10ac40004dSKevin Hilman *
11ac40004dSKevin Hilman *  a) This library is free software; you can redistribute it and/or
12ac40004dSKevin Hilman *     modify it under the terms of the GNU General Public License as
13ac40004dSKevin Hilman *     published by the Free Software Foundation; either version 2 of the
14ac40004dSKevin Hilman *     License, or (at your option) any later version.
15ac40004dSKevin Hilman *
16ac40004dSKevin Hilman *     This library is distributed in the hope that it will be useful,
17ac40004dSKevin Hilman *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18ac40004dSKevin Hilman *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19ac40004dSKevin Hilman *     GNU General Public License for more details.
20ac40004dSKevin Hilman *
21ac40004dSKevin Hilman * Or, alternatively,
22ac40004dSKevin Hilman *
23ac40004dSKevin Hilman *  b) Permission is hereby granted, free of charge, to any person
24ac40004dSKevin Hilman *     obtaining a copy of this software and associated documentation
25ac40004dSKevin Hilman *     files (the "Software"), to deal in the Software without
26ac40004dSKevin Hilman *     restriction, including without limitation the rights to use,
27ac40004dSKevin Hilman *     copy, modify, merge, publish, distribute, sublicense, and/or
28ac40004dSKevin Hilman *     sell copies of the Software, and to permit persons to whom the
29ac40004dSKevin Hilman *     Software is furnished to do so, subject to the following
30ac40004dSKevin Hilman *     conditions:
31ac40004dSKevin Hilman *
32ac40004dSKevin Hilman *     The above copyright notice and this permission notice shall be
33ac40004dSKevin Hilman *     included in all copies or substantial portions of the Software.
34ac40004dSKevin Hilman *
35ac40004dSKevin Hilman *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36ac40004dSKevin Hilman *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37ac40004dSKevin Hilman *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38ac40004dSKevin Hilman *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39ac40004dSKevin Hilman *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40ac40004dSKevin Hilman *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41ac40004dSKevin Hilman *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42ac40004dSKevin Hilman *     OTHER DEALINGS IN THE SOFTWARE.
43ac40004dSKevin Hilman */
44ac40004dSKevin Hilman
45ac40004dSKevin Hilman#include "meson-gxbb.dtsi"
46ac40004dSKevin Hilman
47ac40004dSKevin Hilman/ {
48ac40004dSKevin Hilman	aliases {
49ac40004dSKevin Hilman		serial0 = &uart_AO;
50059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
51ac40004dSKevin Hilman	};
52ac40004dSKevin Hilman
53ac40004dSKevin Hilman	chosen {
54ac40004dSKevin Hilman		stdout-path = "serial0:115200n8";
55ac40004dSKevin Hilman	};
56ac40004dSKevin Hilman
57ac40004dSKevin Hilman	memory@0 {
58ac40004dSKevin Hilman		device_type = "memory";
59ac40004dSKevin Hilman		reg = <0x0 0x0 0x0 0x40000000>;
60ac40004dSKevin Hilman	};
618735053dSJerome Brunet
628735053dSJerome Brunet	usb_pwr: regulator-usb-pwrs {
638735053dSJerome Brunet		compatible = "regulator-fixed";
648735053dSJerome Brunet
658735053dSJerome Brunet		regulator-name = "USB_PWR";
668735053dSJerome Brunet
678735053dSJerome Brunet		regulator-min-microvolt = <5000000>;
688735053dSJerome Brunet		regulator-max-microvolt = <5000000>;
698735053dSJerome Brunet
708735053dSJerome Brunet		/* signal name in schematic: USB_PWR_EN */
718735053dSJerome Brunet		gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
728735053dSJerome Brunet		enable-active-high;
738735053dSJerome Brunet	};
74ef8d2ffeSKevin Hilman
75ef8d2ffeSKevin Hilman	vddio_card: gpio-regulator {
76ef8d2ffeSKevin Hilman		compatible = "regulator-gpio";
77ef8d2ffeSKevin Hilman
78ef8d2ffeSKevin Hilman		regulator-name = "VDDIO_CARD";
79ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
80ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
81ef8d2ffeSKevin Hilman
82ef8d2ffeSKevin Hilman		gpios = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
83ef8d2ffeSKevin Hilman		gpios-states = <1>;
84ef8d2ffeSKevin Hilman
85ef8d2ffeSKevin Hilman		/* Based on P200 schematics, signal CARD_1.8V/3.3V_CTR */
86ef8d2ffeSKevin Hilman		states = <1800000 0
87ef8d2ffeSKevin Hilman			  3300000 1>;
885149616eSJerome Brunet
895149616eSJerome Brunet		regulator-settling-time-up-us = <10000>;
905149616eSJerome Brunet		regulator-settling-time-down-us = <150000>;
91ef8d2ffeSKevin Hilman	};
92ef8d2ffeSKevin Hilman
93ef8d2ffeSKevin Hilman	vddio_boot: regulator-vddio_boot {
94ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
95ef8d2ffeSKevin Hilman		regulator-name = "VDDIO_BOOT";
96ef8d2ffeSKevin Hilman		regulator-min-microvolt = <1800000>;
97ef8d2ffeSKevin Hilman		regulator-max-microvolt = <1800000>;
98ef8d2ffeSKevin Hilman	};
99ef8d2ffeSKevin Hilman
100ef8d2ffeSKevin Hilman	vddao_3v3: regulator-vddao_3v3 {
101ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
102ef8d2ffeSKevin Hilman		regulator-name = "VDDAO_3V3";
103ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
104ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
105ef8d2ffeSKevin Hilman	};
106ef8d2ffeSKevin Hilman
107ef8d2ffeSKevin Hilman	vcc_3v3: regulator-vcc_3v3 {
108ef8d2ffeSKevin Hilman		compatible = "regulator-fixed";
109ef8d2ffeSKevin Hilman		regulator-name = "VCC_3V3";
110ef8d2ffeSKevin Hilman		regulator-min-microvolt = <3300000>;
111ef8d2ffeSKevin Hilman		regulator-max-microvolt = <3300000>;
112ef8d2ffeSKevin Hilman	};
113ef8d2ffeSKevin Hilman
114ef8d2ffeSKevin Hilman	emmc_pwrseq: emmc-pwrseq {
115ef8d2ffeSKevin Hilman		compatible = "mmc-pwrseq-emmc";
116ef8d2ffeSKevin Hilman		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
117ef8d2ffeSKevin Hilman	};
118caafa69dSNeil Armstrong
119caafa69dSNeil Armstrong	wifi32k: wifi32k {
120caafa69dSNeil Armstrong		compatible = "pwm-clock";
121caafa69dSNeil Armstrong		#clock-cells = <0>;
122caafa69dSNeil Armstrong		clock-frequency = <32768>;
123caafa69dSNeil Armstrong		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
124caafa69dSNeil Armstrong	};
125ab3943feSNeil Armstrong
126ab3943feSNeil Armstrong	sdio_pwrseq: sdio-pwrseq {
127ab3943feSNeil Armstrong		compatible = "mmc-pwrseq-simple";
128ab3943feSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
129ab3943feSNeil Armstrong		clocks = <&wifi32k>;
130ab3943feSNeil Armstrong		clock-names = "ext_clock";
131ab3943feSNeil Armstrong	};
132fafdbdf7SNeil Armstrong
133748a421dSAndreas Färber	cvbs_connector: cvbs-connector {
134fafdbdf7SNeil Armstrong		compatible = "composite-video-connector";
135fafdbdf7SNeil Armstrong
136fafdbdf7SNeil Armstrong		port {
137fafdbdf7SNeil Armstrong			cvbs_connector_in: endpoint {
138fafdbdf7SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
139fafdbdf7SNeil Armstrong			};
140fafdbdf7SNeil Armstrong		};
141fafdbdf7SNeil Armstrong	};
1426939db7eSNeil Armstrong
1436939db7eSNeil Armstrong	hdmi-connector {
1446939db7eSNeil Armstrong		compatible = "hdmi-connector";
1456939db7eSNeil Armstrong		type = "a";
1466939db7eSNeil Armstrong
1476939db7eSNeil Armstrong		port {
1486939db7eSNeil Armstrong			hdmi_connector_in: endpoint {
1496939db7eSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
1506939db7eSNeil Armstrong			};
1516939db7eSNeil Armstrong		};
1526939db7eSNeil Armstrong	};
153ac40004dSKevin Hilman};
154ac40004dSKevin Hilman
155b16c71c9SNeil Armstrong&cec_AO {
156b16c71c9SNeil Armstrong	status = "okay";
157b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
158b16c71c9SNeil Armstrong	pinctrl-names = "default";
159b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
160b16c71c9SNeil Armstrong};
161b16c71c9SNeil Armstrong
16267fe352fSAndreas Färber&cvbs_vdac_port {
16367fe352fSAndreas Färber	cvbs_vdac_out: endpoint {
16467fe352fSAndreas Färber		remote-endpoint = <&cvbs_connector_in>;
16567fe352fSAndreas Färber	};
16667fe352fSAndreas Färber};
16767fe352fSAndreas Färber
16867fe352fSAndreas Färber&hdmi_tx {
169ac40004dSKevin Hilman	status = "okay";
17067fe352fSAndreas Färber	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
171f40d437fSCarlo Caione	pinctrl-names = "default";
172ac40004dSKevin Hilman};
1738c5509f0SKevin Hilman
17467fe352fSAndreas Färber&hdmi_tx_tmds_port {
17567fe352fSAndreas Färber	hdmi_tx_tmds_out: endpoint {
17667fe352fSAndreas Färber		remote-endpoint = <&hdmi_connector_in>;
17767fe352fSAndreas Färber	};
17867fe352fSAndreas Färber};
17967fe352fSAndreas Färber
180ae89ed79SMartin Blumenstingl&ir {
181ae89ed79SMartin Blumenstingl	status = "okay";
182ae89ed79SMartin Blumenstingl	pinctrl-0 = <&remote_input_ao_pins>;
183ae89ed79SMartin Blumenstingl	pinctrl-names = "default";
184ae89ed79SMartin Blumenstingl};
1858735053dSJerome Brunet
18667fe352fSAndreas Färber&pwm_ef {
1878735053dSJerome Brunet	status = "okay";
18867fe352fSAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
18967fe352fSAndreas Färber	pinctrl-names = "default";
19067fe352fSAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
19167fe352fSAndreas Färber	clock-names = "clkin0";
1928735053dSJerome Brunet};
193ef8d2ffeSKevin Hilman
194ef8d2ffeSKevin Hilman/* Wireless SDIO Module */
195ef8d2ffeSKevin Hilman&sd_emmc_a {
196ef8d2ffeSKevin Hilman	status = "okay";
197ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdio_pins>;
19867e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
19967e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
200ef8d2ffeSKevin Hilman	#address-cells = <1>;
201ef8d2ffeSKevin Hilman	#size-cells = <0>;
202ef8d2ffeSKevin Hilman
203ef8d2ffeSKevin Hilman	bus-width = <4>;
204ef8d2ffeSKevin Hilman	cap-sd-highspeed;
205ef8d2ffeSKevin Hilman	max-frequency = <100000000>;
206ef8d2ffeSKevin Hilman
207ef8d2ffeSKevin Hilman	non-removable;
208ef8d2ffeSKevin Hilman	disable-wp;
209ef8d2ffeSKevin Hilman
210ab3943feSNeil Armstrong	mmc-pwrseq = <&sdio_pwrseq>;
211ab3943feSNeil Armstrong
212ef8d2ffeSKevin Hilman	vmmc-supply = <&vddao_3v3>;
213ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_boot>;
214ab3943feSNeil Armstrong
215e0e216ebSAndreas Färber	brcmf: wifi@1 {
216ab3943feSNeil Armstrong		reg = <1>;
217ab3943feSNeil Armstrong		compatible = "brcm,bcm4329-fmac";
218ab3943feSNeil Armstrong	};
219ef8d2ffeSKevin Hilman};
220ef8d2ffeSKevin Hilman
221ef8d2ffeSKevin Hilman/* SD card */
222ef8d2ffeSKevin Hilman&sd_emmc_b {
223ef8d2ffeSKevin Hilman	status = "okay";
224ef8d2ffeSKevin Hilman	pinctrl-0 = <&sdcard_pins>;
22567e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
22667e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
227ef8d2ffeSKevin Hilman
228ef8d2ffeSKevin Hilman	bus-width = <4>;
229ef8d2ffeSKevin Hilman	cap-sd-highspeed;
2300f553358SJerome Brunet	sd-uhs-sdr12;
2310f553358SJerome Brunet	sd-uhs-sdr25;
2320f553358SJerome Brunet	sd-uhs-sdr50;
233ef8d2ffeSKevin Hilman	max-frequency = <100000000>;
234ef8d2ffeSKevin Hilman	disable-wp;
235ef8d2ffeSKevin Hilman
236ef8d2ffeSKevin Hilman	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
237ef8d2ffeSKevin Hilman	cd-inverted;
238ef8d2ffeSKevin Hilman
239ef8d2ffeSKevin Hilman	vmmc-supply = <&vddao_3v3>;
240ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_card>;
241ef8d2ffeSKevin Hilman};
242ef8d2ffeSKevin Hilman
243ef8d2ffeSKevin Hilman/* eMMC */
244ef8d2ffeSKevin Hilman&sd_emmc_c {
245ef8d2ffeSKevin Hilman	status = "okay";
246ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
24767e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
24867e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
249ef8d2ffeSKevin Hilman
250ef8d2ffeSKevin Hilman	bus-width = <8>;
251ef8d2ffeSKevin Hilman	cap-mmc-highspeed;
252ef8d2ffeSKevin Hilman	max-frequency = <200000000>;
253ef8d2ffeSKevin Hilman	non-removable;
254ef8d2ffeSKevin Hilman	disable-wp;
255ef8d2ffeSKevin Hilman	mmc-ddr-1_8v;
256ef8d2ffeSKevin Hilman	mmc-hs200-1_8v;
257ef8d2ffeSKevin Hilman
258ef8d2ffeSKevin Hilman	mmc-pwrseq = <&emmc_pwrseq>;
259ef8d2ffeSKevin Hilman	vmmc-supply = <&vcc_3v3>;
260ef8d2ffeSKevin Hilman	vqmmc-supply = <&vddio_boot>;
261ef8d2ffeSKevin Hilman};
262caafa69dSNeil Armstrong
26367fe352fSAndreas Färber/* This UART is brought out to the DB9 connector */
26467fe352fSAndreas Färber&uart_AO {
265caafa69dSNeil Armstrong	status = "okay";
26667fe352fSAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
2676939db7eSNeil Armstrong	pinctrl-names = "default";
2686939db7eSNeil Armstrong};
2696939db7eSNeil Armstrong
27067fe352fSAndreas Färber&usb0_phy {
27167fe352fSAndreas Färber	status = "okay";
27267fe352fSAndreas Färber	phy-supply = <&usb_pwr>;
2736939db7eSNeil Armstrong};
27467fe352fSAndreas Färber
27567fe352fSAndreas Färber&usb1_phy {
27667fe352fSAndreas Färber	status = "okay";
27767fe352fSAndreas Färber};
27867fe352fSAndreas Färber
27967fe352fSAndreas Färber&usb0 {
28067fe352fSAndreas Färber	status = "okay";
28167fe352fSAndreas Färber};
28267fe352fSAndreas Färber
28367fe352fSAndreas Färber&usb1 {
28467fe352fSAndreas Färber	status = "okay";
2856939db7eSNeil Armstrong};
286