1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2cc733bc9SAndreas Färber/*
3cc733bc9SAndreas Färber * Copyright (c) 2016 Andreas Färber
4cc733bc9SAndreas Färber */
5cc733bc9SAndreas Färber
6cc733bc9SAndreas Färber#include "meson-gxbb.dtsi"
7*c6cf488eSChristian Hewitt#include <dt-bindings/sound/meson-aiu.h>
8cc733bc9SAndreas Färber
9cc733bc9SAndreas Färber/ {
10cc733bc9SAndreas Färber	compatible = "tronsmart,vega-s95", "amlogic,meson-gxbb";
11cc733bc9SAndreas Färber
12962f271eSKevin Hilman	aliases {
13962f271eSKevin Hilman		serial0 = &uart_AO;
14059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
15962f271eSKevin Hilman	};
16962f271eSKevin Hilman
17cc733bc9SAndreas Färber	chosen {
18cc733bc9SAndreas Färber		stdout-path = "serial0:115200n8";
19cc733bc9SAndreas Färber	};
20c763eb82SMartin Blumenstingl
21*c6cf488eSChristian Hewitt	spdif_dit: audio-codec-0 {
22*c6cf488eSChristian Hewitt		#sound-dai-cells = <0>;
23*c6cf488eSChristian Hewitt		compatible = "linux,spdif-dit";
24*c6cf488eSChristian Hewitt		status = "okay";
25*c6cf488eSChristian Hewitt		sound-name-prefix = "DIT";
26*c6cf488eSChristian Hewitt	};
27*c6cf488eSChristian Hewitt
282fbbc4bfSAndreas Färber	leds {
292fbbc4bfSAndreas Färber		compatible = "gpio-leds";
302fbbc4bfSAndreas Färber
3108dc0e5dSNeil Armstrong		led-blue {
322fbbc4bfSAndreas Färber			label = "vega-s95:blue:on";
332fbbc4bfSAndreas Färber			gpios = <&gpio_ao GPIOAO_13 GPIO_ACTIVE_HIGH>;
342fbbc4bfSAndreas Färber			default-state = "on";
352fbbc4bfSAndreas Färber			panic-indicator;
362fbbc4bfSAndreas Färber		};
372fbbc4bfSAndreas Färber	};
382fbbc4bfSAndreas Färber
3941112431SNeil Armstrong	usb_pwr: regulator-usb-pwrs {
40c763eb82SMartin Blumenstingl		compatible = "regulator-fixed";
41c763eb82SMartin Blumenstingl
4241112431SNeil Armstrong		regulator-name = "USB_PWR";
43c763eb82SMartin Blumenstingl
44c763eb82SMartin Blumenstingl		regulator-min-microvolt = <5000000>;
45c763eb82SMartin Blumenstingl		regulator-max-microvolt = <5000000>;
46c763eb82SMartin Blumenstingl
47c763eb82SMartin Blumenstingl		gpio = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
48c763eb82SMartin Blumenstingl		enable-active-high;
49c763eb82SMartin Blumenstingl	};
50c763eb82SMartin Blumenstingl
5141112431SNeil Armstrong	vddio_boot: regulator-vddio_boot {
5241112431SNeil Armstrong		compatible = "regulator-fixed";
5341112431SNeil Armstrong		regulator-name = "VDDIO_BOOT";
5441112431SNeil Armstrong		regulator-min-microvolt = <1800000>;
5541112431SNeil Armstrong		regulator-max-microvolt = <1800000>;
5641112431SNeil Armstrong	};
5741112431SNeil Armstrong
5841112431SNeil Armstrong	vddao_3v3: regulator-vddao_3v3 {
5941112431SNeil Armstrong		compatible = "regulator-fixed";
6041112431SNeil Armstrong		regulator-name = "VDDAO_3V3";
6141112431SNeil Armstrong		regulator-min-microvolt = <3300000>;
6241112431SNeil Armstrong		regulator-max-microvolt = <3300000>;
6341112431SNeil Armstrong	};
6441112431SNeil Armstrong
65f1ef6262SNeil Armstrong	vddio_ao18: regulator-vddio_ao18 {
66f1ef6262SNeil Armstrong		compatible = "regulator-fixed";
67f1ef6262SNeil Armstrong		regulator-name = "VDDIO_AO18";
68f1ef6262SNeil Armstrong		regulator-min-microvolt = <1800000>;
69f1ef6262SNeil Armstrong		regulator-max-microvolt = <1800000>;
70f1ef6262SNeil Armstrong	};
71f1ef6262SNeil Armstrong
72ab5b24fdSMartin Blumenstingl	vcc_3v3: regulator-vcc_3v3 {
73ab5b24fdSMartin Blumenstingl		compatible = "regulator-fixed";
74ab5b24fdSMartin Blumenstingl		regulator-name = "VCC_3V3";
75ab5b24fdSMartin Blumenstingl		regulator-min-microvolt = <3300000>;
76ab5b24fdSMartin Blumenstingl		regulator-max-microvolt = <3300000>;
77ab5b24fdSMartin Blumenstingl	};
78ab5b24fdSMartin Blumenstingl
79ab5b24fdSMartin Blumenstingl	emmc_pwrseq: emmc-pwrseq {
80ab5b24fdSMartin Blumenstingl		compatible = "mmc-pwrseq-emmc";
81ab5b24fdSMartin Blumenstingl		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
82ab5b24fdSMartin Blumenstingl	};
83ab5b24fdSMartin Blumenstingl
84ab5b24fdSMartin Blumenstingl	wifi32k: wifi32k {
85ab5b24fdSMartin Blumenstingl		compatible = "pwm-clock";
86ab5b24fdSMartin Blumenstingl		#clock-cells = <0>;
87ab5b24fdSMartin Blumenstingl		clock-frequency = <32768>;
88ab5b24fdSMartin Blumenstingl		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
89ab5b24fdSMartin Blumenstingl	};
90ab5b24fdSMartin Blumenstingl
91954b67dfSNeil Armstrong	hdmi-connector {
92954b67dfSNeil Armstrong		compatible = "hdmi-connector";
93954b67dfSNeil Armstrong		type = "a";
94954b67dfSNeil Armstrong
95954b67dfSNeil Armstrong		port {
96954b67dfSNeil Armstrong			hdmi_connector_in: endpoint {
97954b67dfSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
98954b67dfSNeil Armstrong			};
99954b67dfSNeil Armstrong		};
100954b67dfSNeil Armstrong	};
101954b67dfSNeil Armstrong
102ab5b24fdSMartin Blumenstingl	sdio_pwrseq: sdio-pwrseq {
103ab5b24fdSMartin Blumenstingl		compatible = "mmc-pwrseq-simple";
104b07a11dbSNeil Armstrong		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
105ab5b24fdSMartin Blumenstingl		clocks = <&wifi32k>;
106ab5b24fdSMartin Blumenstingl		clock-names = "ext_clock";
107ab5b24fdSMartin Blumenstingl	};
108*c6cf488eSChristian Hewitt
109*c6cf488eSChristian Hewitt	sound {
110*c6cf488eSChristian Hewitt		compatible = "amlogic,gx-sound-card";
111*c6cf488eSChristian Hewitt		model = "VEGA-S95";
112*c6cf488eSChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL0>,
113*c6cf488eSChristian Hewitt				  <&clkc CLKID_MPLL1>,
114*c6cf488eSChristian Hewitt				  <&clkc CLKID_MPLL2>;
115*c6cf488eSChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
116*c6cf488eSChristian Hewitt		assigned-clock-rates = <294912000>,
117*c6cf488eSChristian Hewitt				       <270950400>,
118*c6cf488eSChristian Hewitt				       <393216000>;
119*c6cf488eSChristian Hewitt
120*c6cf488eSChristian Hewitt		dai-link-0 {
121*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
122*c6cf488eSChristian Hewitt		};
123*c6cf488eSChristian Hewitt
124*c6cf488eSChristian Hewitt		dai-link-1 {
125*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
126*c6cf488eSChristian Hewitt		};
127*c6cf488eSChristian Hewitt
128*c6cf488eSChristian Hewitt		dai-link-2 {
129*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
130*c6cf488eSChristian Hewitt			dai-format = "i2s";
131*c6cf488eSChristian Hewitt			mclk-fs = <256>;
132*c6cf488eSChristian Hewitt
133*c6cf488eSChristian Hewitt			codec-0 {
134*c6cf488eSChristian Hewitt				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
135*c6cf488eSChristian Hewitt			};
136*c6cf488eSChristian Hewitt		};
137*c6cf488eSChristian Hewitt
138*c6cf488eSChristian Hewitt		dai-link-3 {
139*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
140*c6cf488eSChristian Hewitt
141*c6cf488eSChristian Hewitt			codec-0 {
142*c6cf488eSChristian Hewitt				sound-dai = <&spdif_dit>;
143*c6cf488eSChristian Hewitt			};
144*c6cf488eSChristian Hewitt		};
145*c6cf488eSChristian Hewitt
146*c6cf488eSChristian Hewitt		dai-link-4 {
147*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
148*c6cf488eSChristian Hewitt
149*c6cf488eSChristian Hewitt			codec-0 {
150*c6cf488eSChristian Hewitt				sound-dai = <&hdmi_tx>;
151*c6cf488eSChristian Hewitt			};
152*c6cf488eSChristian Hewitt		};
153*c6cf488eSChristian Hewitt	};
154*c6cf488eSChristian Hewitt};
155*c6cf488eSChristian Hewitt
156*c6cf488eSChristian Hewitt&aiu {
157*c6cf488eSChristian Hewitt	status = "okay";
158*c6cf488eSChristian Hewitt	pinctrl-0 = <&spdif_out_y_pins>;
159*c6cf488eSChristian Hewitt	pinctrl-names = "default";
160cc733bc9SAndreas Färber};
161cc733bc9SAndreas Färber
1628d6dbe5bSNeil Armstrong&cec_AO {
1638d6dbe5bSNeil Armstrong	status = "okay";
1648d6dbe5bSNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
1658d6dbe5bSNeil Armstrong	pinctrl-names = "default";
1668d6dbe5bSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
1678d6dbe5bSNeil Armstrong};
1688d6dbe5bSNeil Armstrong
169f59063aeSMartin Blumenstingl&ethmac {
170f59063aeSMartin Blumenstingl	status = "okay";
1713be2d9cfSNeil Armstrong	pinctrl-0 = <&eth_rgmii_pins>;
172f59063aeSMartin Blumenstingl	pinctrl-names = "default";
1731220b297SMartin Blumenstingl
1741220b297SMartin Blumenstingl	phy-handle = <&eth_phy0>;
1751220b297SMartin Blumenstingl	phy-mode = "rgmii";
1761220b297SMartin Blumenstingl
177093d23dbSMartin Blumenstingl	amlogic,tx-delay-ns = <2>;
178093d23dbSMartin Blumenstingl
1791220b297SMartin Blumenstingl	mdio {
1801220b297SMartin Blumenstingl		compatible = "snps,dwmac-mdio";
1811220b297SMartin Blumenstingl		#address-cells = <1>;
1821220b297SMartin Blumenstingl		#size-cells = <0>;
1831220b297SMartin Blumenstingl
1841220b297SMartin Blumenstingl		eth_phy0: ethernet-phy@0 {
1851220b297SMartin Blumenstingl			/* Realtek RTL8211F (0x001cc916) */
1861220b297SMartin Blumenstingl			reg = <0>;
187f29cabf2SMartin Blumenstingl
188f29cabf2SMartin Blumenstingl			reset-assert-us = <10000>;
189c183c406SStefan Agner			reset-deassert-us = <80000>;
190f29cabf2SMartin Blumenstingl			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
191f29cabf2SMartin Blumenstingl
192ec066d8fSNeil Armstrong			interrupt-parent = <&gpio_intc>;
193ec066d8fSNeil Armstrong			/* MAC_INTR on GPIOZ_15 */
194ec066d8fSNeil Armstrong			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
1951220b297SMartin Blumenstingl		};
1961220b297SMartin Blumenstingl	};
197f59063aeSMartin Blumenstingl};
198c763eb82SMartin Blumenstingl
199954b67dfSNeil Armstrong&hdmi_tx {
200954b67dfSNeil Armstrong	status = "okay";
201954b67dfSNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
202954b67dfSNeil Armstrong	pinctrl-names = "default";
203954b67dfSNeil Armstrong};
204954b67dfSNeil Armstrong
205954b67dfSNeil Armstrong&hdmi_tx_tmds_port {
206954b67dfSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
207954b67dfSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
208954b67dfSNeil Armstrong	};
209954b67dfSNeil Armstrong};
210954b67dfSNeil Armstrong
211d6f93b02SAndreas Färber&ir {
212c763eb82SMartin Blumenstingl	status = "okay";
213d6f93b02SAndreas Färber	pinctrl-0 = <&remote_input_ao_pins>;
214d6f93b02SAndreas Färber	pinctrl-names = "default";
215bec117ceSChristian Hewitt	linux,rc-map-name = "rc-vega-s9x";
216c763eb82SMartin Blumenstingl};
217c763eb82SMartin Blumenstingl
218d6f93b02SAndreas Färber&pwm_ef {
219c763eb82SMartin Blumenstingl	status = "okay";
220d6f93b02SAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
221d6f93b02SAndreas Färber	pinctrl-names = "default";
222d6f93b02SAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
223d6f93b02SAndreas Färber	clock-names = "clkin0";
224c763eb82SMartin Blumenstingl};
225ab5b24fdSMartin Blumenstingl
226f1ef6262SNeil Armstrong&saradc {
227f1ef6262SNeil Armstrong	status = "okay";
228f1ef6262SNeil Armstrong	vref-supply = <&vddio_ao18>;
229f1ef6262SNeil Armstrong};
230f1ef6262SNeil Armstrong
231ab5b24fdSMartin Blumenstingl/* Wireless SDIO Module */
232ab5b24fdSMartin Blumenstingl&sd_emmc_a {
233ab5b24fdSMartin Blumenstingl	status = "okay";
234b07a11dbSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
23567e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
23667e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
237ab5b24fdSMartin Blumenstingl	#address-cells = <1>;
238ab5b24fdSMartin Blumenstingl	#size-cells = <0>;
239ab5b24fdSMartin Blumenstingl
240ab5b24fdSMartin Blumenstingl	bus-width = <4>;
241ab5b24fdSMartin Blumenstingl	cap-sd-highspeed;
242adc52bf7SJerome Brunet	max-frequency = <50000000>;
243ab5b24fdSMartin Blumenstingl
244ab5b24fdSMartin Blumenstingl	non-removable;
245ab5b24fdSMartin Blumenstingl	disable-wp;
246ab5b24fdSMartin Blumenstingl
24748f38e82SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
24848f38e82SNeil Armstrong	keep-power-in-suspend;
24948f38e82SNeil Armstrong
250ab5b24fdSMartin Blumenstingl	mmc-pwrseq = <&sdio_pwrseq>;
251ab5b24fdSMartin Blumenstingl
25241112431SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
25341112431SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
254ab5b24fdSMartin Blumenstingl
25519e16750SAndreas Färber	brcmf: wifi@1 {
256ab5b24fdSMartin Blumenstingl		reg = <1>;
257ab5b24fdSMartin Blumenstingl		compatible = "brcm,bcm4329-fmac";
258ab5b24fdSMartin Blumenstingl	};
259ab5b24fdSMartin Blumenstingl};
260ab5b24fdSMartin Blumenstingl
261ab5b24fdSMartin Blumenstingl/* SD card */
262ab5b24fdSMartin Blumenstingl&sd_emmc_b {
263ab5b24fdSMartin Blumenstingl	status = "okay";
264ab5b24fdSMartin Blumenstingl	pinctrl-0 = <&sdcard_pins>;
26567e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
26667e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
267ab5b24fdSMartin Blumenstingl
268ab5b24fdSMartin Blumenstingl	bus-width = <4>;
269ab5b24fdSMartin Blumenstingl	cap-sd-highspeed;
270adc52bf7SJerome Brunet	max-frequency = <50000000>;
271ab5b24fdSMartin Blumenstingl	disable-wp;
272ab5b24fdSMartin Blumenstingl
273f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
274ab5b24fdSMartin Blumenstingl
27541112431SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
27641112431SNeil Armstrong	vqmmc-supply = <&vcc_3v3>;
277ab5b24fdSMartin Blumenstingl};
278ab5b24fdSMartin Blumenstingl
279ab5b24fdSMartin Blumenstingl/* eMMC */
280ab5b24fdSMartin Blumenstingl&sd_emmc_c {
281ab5b24fdSMartin Blumenstingl	status = "okay";
282ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
28367e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
28467e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
285ab5b24fdSMartin Blumenstingl
286ab5b24fdSMartin Blumenstingl	bus-width = <8>;
287ab5b24fdSMartin Blumenstingl	cap-mmc-highspeed;
288ab5b24fdSMartin Blumenstingl	max-frequency = <200000000>;
289ab5b24fdSMartin Blumenstingl	non-removable;
290ab5b24fdSMartin Blumenstingl	disable-wp;
291ab5b24fdSMartin Blumenstingl	mmc-ddr-1_8v;
292ab5b24fdSMartin Blumenstingl	mmc-hs200-1_8v;
293ab5b24fdSMartin Blumenstingl
294ab5b24fdSMartin Blumenstingl	mmc-pwrseq = <&emmc_pwrseq>;
295ab5b24fdSMartin Blumenstingl	vmmc-supply = <&vcc_3v3>;
29641112431SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
297ab5b24fdSMartin Blumenstingl};
298ab5b24fdSMartin Blumenstingl
299b07a11dbSNeil Armstrong/* This is connected to the Bluetooth module: */
300b07a11dbSNeil Armstrong&uart_A {
301b07a11dbSNeil Armstrong	status = "okay";
302b07a11dbSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
303b07a11dbSNeil Armstrong	pinctrl-names = "default";
304b07a11dbSNeil Armstrong
305b07a11dbSNeil Armstrong	bluetooth {
306b07a11dbSNeil Armstrong		compatible = "brcm,bcm43438-bt";
307b07a11dbSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
30899294518SChristian Hewitt		max-speed = <2000000>;
30999294518SChristian Hewitt		clocks = <&wifi32k>;
31099294518SChristian Hewitt		clock-names = "lpo";
311b07a11dbSNeil Armstrong	};
312b07a11dbSNeil Armstrong};
313b07a11dbSNeil Armstrong
314b07a11dbSNeil Armstrong/* This UART is brought out to the DB9 connector */
315d6f93b02SAndreas Färber&uart_AO {
316ab5b24fdSMartin Blumenstingl	status = "okay";
317d6f93b02SAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
318ab5b24fdSMartin Blumenstingl	pinctrl-names = "default";
319d6f93b02SAndreas Färber};
320d6f93b02SAndreas Färber
321d6f93b02SAndreas Färber&usb0_phy {
322d6f93b02SAndreas Färber	status = "okay";
32341112431SNeil Armstrong	phy-supply = <&usb_pwr>;
324d6f93b02SAndreas Färber};
325d6f93b02SAndreas Färber
326d6f93b02SAndreas Färber&usb1_phy {
327d6f93b02SAndreas Färber	status = "okay";
328d6f93b02SAndreas Färber};
329d6f93b02SAndreas Färber
330d6f93b02SAndreas Färber&usb0 {
331d6f93b02SAndreas Färber	status = "okay";
332d6f93b02SAndreas Färber};
333d6f93b02SAndreas Färber
334d6f93b02SAndreas Färber&usb1 {
335d6f93b02SAndreas Färber	status = "okay";
336ab5b24fdSMartin Blumenstingl};
337