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		status = "okay";
120*c6cf488eSChristian Hewitt
121*c6cf488eSChristian Hewitt		dai-link-0 {
122*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
123*c6cf488eSChristian Hewitt		};
124*c6cf488eSChristian Hewitt
125*c6cf488eSChristian Hewitt		dai-link-1 {
126*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_SPDIF_FIFO>;
127*c6cf488eSChristian Hewitt		};
128*c6cf488eSChristian Hewitt
129*c6cf488eSChristian Hewitt		dai-link-2 {
130*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
131*c6cf488eSChristian Hewitt			dai-format = "i2s";
132*c6cf488eSChristian Hewitt			mclk-fs = <256>;
133*c6cf488eSChristian Hewitt
134*c6cf488eSChristian Hewitt			codec-0 {
135*c6cf488eSChristian Hewitt				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
136*c6cf488eSChristian Hewitt			};
137*c6cf488eSChristian Hewitt		};
138*c6cf488eSChristian Hewitt
139*c6cf488eSChristian Hewitt		dai-link-3 {
140*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_SPDIF_ENCODER>;
141*c6cf488eSChristian Hewitt
142*c6cf488eSChristian Hewitt			codec-0 {
143*c6cf488eSChristian Hewitt				sound-dai = <&spdif_dit>;
144*c6cf488eSChristian Hewitt			};
145*c6cf488eSChristian Hewitt		};
146*c6cf488eSChristian Hewitt
147*c6cf488eSChristian Hewitt		dai-link-4 {
148*c6cf488eSChristian Hewitt			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
149*c6cf488eSChristian Hewitt
150*c6cf488eSChristian Hewitt			codec-0 {
151*c6cf488eSChristian Hewitt				sound-dai = <&hdmi_tx>;
152*c6cf488eSChristian Hewitt			};
153*c6cf488eSChristian Hewitt		};
154*c6cf488eSChristian Hewitt	};
155*c6cf488eSChristian Hewitt};
156*c6cf488eSChristian Hewitt
157*c6cf488eSChristian Hewitt&aiu {
158*c6cf488eSChristian Hewitt	status = "okay";
159*c6cf488eSChristian Hewitt	pinctrl-0 = <&spdif_out_y_pins>;
160*c6cf488eSChristian Hewitt	pinctrl-names = "default";
161cc733bc9SAndreas Färber};
162cc733bc9SAndreas Färber
1638d6dbe5bSNeil Armstrong&cec_AO {
1648d6dbe5bSNeil Armstrong	status = "okay";
1658d6dbe5bSNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
1668d6dbe5bSNeil Armstrong	pinctrl-names = "default";
1678d6dbe5bSNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
1688d6dbe5bSNeil Armstrong};
1698d6dbe5bSNeil Armstrong
170f59063aeSMartin Blumenstingl&ethmac {
171f59063aeSMartin Blumenstingl	status = "okay";
1723be2d9cfSNeil Armstrong	pinctrl-0 = <&eth_rgmii_pins>;
173f59063aeSMartin Blumenstingl	pinctrl-names = "default";
1741220b297SMartin Blumenstingl
1751220b297SMartin Blumenstingl	phy-handle = <&eth_phy0>;
1761220b297SMartin Blumenstingl	phy-mode = "rgmii";
1771220b297SMartin Blumenstingl
178093d23dbSMartin Blumenstingl	amlogic,tx-delay-ns = <2>;
179093d23dbSMartin Blumenstingl
1801220b297SMartin Blumenstingl	mdio {
1811220b297SMartin Blumenstingl		compatible = "snps,dwmac-mdio";
1821220b297SMartin Blumenstingl		#address-cells = <1>;
1831220b297SMartin Blumenstingl		#size-cells = <0>;
1841220b297SMartin Blumenstingl
1851220b297SMartin Blumenstingl		eth_phy0: ethernet-phy@0 {
1861220b297SMartin Blumenstingl			/* Realtek RTL8211F (0x001cc916) */
1871220b297SMartin Blumenstingl			reg = <0>;
188f29cabf2SMartin Blumenstingl
189f29cabf2SMartin Blumenstingl			reset-assert-us = <10000>;
190c183c406SStefan Agner			reset-deassert-us = <80000>;
191f29cabf2SMartin Blumenstingl			reset-gpios = <&gpio GPIOZ_14 GPIO_ACTIVE_LOW>;
192f29cabf2SMartin Blumenstingl
193ec066d8fSNeil Armstrong			interrupt-parent = <&gpio_intc>;
194ec066d8fSNeil Armstrong			/* MAC_INTR on GPIOZ_15 */
195ec066d8fSNeil Armstrong			interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
1961220b297SMartin Blumenstingl		};
1971220b297SMartin Blumenstingl	};
198f59063aeSMartin Blumenstingl};
199c763eb82SMartin Blumenstingl
200954b67dfSNeil Armstrong&hdmi_tx {
201954b67dfSNeil Armstrong	status = "okay";
202954b67dfSNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
203954b67dfSNeil Armstrong	pinctrl-names = "default";
204954b67dfSNeil Armstrong};
205954b67dfSNeil Armstrong
206954b67dfSNeil Armstrong&hdmi_tx_tmds_port {
207954b67dfSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
208954b67dfSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
209954b67dfSNeil Armstrong	};
210954b67dfSNeil Armstrong};
211954b67dfSNeil Armstrong
212d6f93b02SAndreas Färber&ir {
213c763eb82SMartin Blumenstingl	status = "okay";
214d6f93b02SAndreas Färber	pinctrl-0 = <&remote_input_ao_pins>;
215d6f93b02SAndreas Färber	pinctrl-names = "default";
216bec117ceSChristian Hewitt	linux,rc-map-name = "rc-vega-s9x";
217c763eb82SMartin Blumenstingl};
218c763eb82SMartin Blumenstingl
219d6f93b02SAndreas Färber&pwm_ef {
220c763eb82SMartin Blumenstingl	status = "okay";
221d6f93b02SAndreas Färber	pinctrl-0 = <&pwm_e_pins>;
222d6f93b02SAndreas Färber	pinctrl-names = "default";
223d6f93b02SAndreas Färber	clocks = <&clkc CLKID_FCLK_DIV4>;
224d6f93b02SAndreas Färber	clock-names = "clkin0";
225c763eb82SMartin Blumenstingl};
226ab5b24fdSMartin Blumenstingl
227f1ef6262SNeil Armstrong&saradc {
228f1ef6262SNeil Armstrong	status = "okay";
229f1ef6262SNeil Armstrong	vref-supply = <&vddio_ao18>;
230f1ef6262SNeil Armstrong};
231f1ef6262SNeil Armstrong
232ab5b24fdSMartin Blumenstingl/* Wireless SDIO Module */
233ab5b24fdSMartin Blumenstingl&sd_emmc_a {
234ab5b24fdSMartin Blumenstingl	status = "okay";
235b07a11dbSNeil Armstrong	pinctrl-0 = <&sdio_pins>;
23667e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
23767e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
238ab5b24fdSMartin Blumenstingl	#address-cells = <1>;
239ab5b24fdSMartin Blumenstingl	#size-cells = <0>;
240ab5b24fdSMartin Blumenstingl
241ab5b24fdSMartin Blumenstingl	bus-width = <4>;
242ab5b24fdSMartin Blumenstingl	cap-sd-highspeed;
243adc52bf7SJerome Brunet	max-frequency = <50000000>;
244ab5b24fdSMartin Blumenstingl
245ab5b24fdSMartin Blumenstingl	non-removable;
246ab5b24fdSMartin Blumenstingl	disable-wp;
247ab5b24fdSMartin Blumenstingl
24848f38e82SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
24948f38e82SNeil Armstrong	keep-power-in-suspend;
25048f38e82SNeil Armstrong
251ab5b24fdSMartin Blumenstingl	mmc-pwrseq = <&sdio_pwrseq>;
252ab5b24fdSMartin Blumenstingl
25341112431SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
25441112431SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
255ab5b24fdSMartin Blumenstingl
25619e16750SAndreas Färber	brcmf: wifi@1 {
257ab5b24fdSMartin Blumenstingl		reg = <1>;
258ab5b24fdSMartin Blumenstingl		compatible = "brcm,bcm4329-fmac";
259ab5b24fdSMartin Blumenstingl	};
260ab5b24fdSMartin Blumenstingl};
261ab5b24fdSMartin Blumenstingl
262ab5b24fdSMartin Blumenstingl/* SD card */
263ab5b24fdSMartin Blumenstingl&sd_emmc_b {
264ab5b24fdSMartin Blumenstingl	status = "okay";
265ab5b24fdSMartin Blumenstingl	pinctrl-0 = <&sdcard_pins>;
26667e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
26767e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
268ab5b24fdSMartin Blumenstingl
269ab5b24fdSMartin Blumenstingl	bus-width = <4>;
270ab5b24fdSMartin Blumenstingl	cap-sd-highspeed;
271adc52bf7SJerome Brunet	max-frequency = <50000000>;
272ab5b24fdSMartin Blumenstingl	disable-wp;
273ab5b24fdSMartin Blumenstingl
274f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
275ab5b24fdSMartin Blumenstingl
27641112431SNeil Armstrong	vmmc-supply = <&vddao_3v3>;
27741112431SNeil Armstrong	vqmmc-supply = <&vcc_3v3>;
278ab5b24fdSMartin Blumenstingl};
279ab5b24fdSMartin Blumenstingl
280ab5b24fdSMartin Blumenstingl/* eMMC */
281ab5b24fdSMartin Blumenstingl&sd_emmc_c {
282ab5b24fdSMartin Blumenstingl	status = "okay";
283ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
28467e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
28567e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
286ab5b24fdSMartin Blumenstingl
287ab5b24fdSMartin Blumenstingl	bus-width = <8>;
288ab5b24fdSMartin Blumenstingl	cap-mmc-highspeed;
289ab5b24fdSMartin Blumenstingl	max-frequency = <200000000>;
290ab5b24fdSMartin Blumenstingl	non-removable;
291ab5b24fdSMartin Blumenstingl	disable-wp;
292ab5b24fdSMartin Blumenstingl	mmc-ddr-1_8v;
293ab5b24fdSMartin Blumenstingl	mmc-hs200-1_8v;
294ab5b24fdSMartin Blumenstingl
295ab5b24fdSMartin Blumenstingl	mmc-pwrseq = <&emmc_pwrseq>;
296ab5b24fdSMartin Blumenstingl	vmmc-supply = <&vcc_3v3>;
29741112431SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
298ab5b24fdSMartin Blumenstingl};
299ab5b24fdSMartin Blumenstingl
300b07a11dbSNeil Armstrong/* This is connected to the Bluetooth module: */
301b07a11dbSNeil Armstrong&uart_A {
302b07a11dbSNeil Armstrong	status = "okay";
303b07a11dbSNeil Armstrong	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
304b07a11dbSNeil Armstrong	pinctrl-names = "default";
305b07a11dbSNeil Armstrong
306b07a11dbSNeil Armstrong	bluetooth {
307b07a11dbSNeil Armstrong		compatible = "brcm,bcm43438-bt";
308b07a11dbSNeil Armstrong		shutdown-gpios = <&gpio GPIOX_20 GPIO_ACTIVE_HIGH>;
30999294518SChristian Hewitt		max-speed = <2000000>;
31099294518SChristian Hewitt		clocks = <&wifi32k>;
31199294518SChristian Hewitt		clock-names = "lpo";
312b07a11dbSNeil Armstrong	};
313b07a11dbSNeil Armstrong};
314b07a11dbSNeil Armstrong
315b07a11dbSNeil Armstrong/* This UART is brought out to the DB9 connector */
316d6f93b02SAndreas Färber&uart_AO {
317ab5b24fdSMartin Blumenstingl	status = "okay";
318d6f93b02SAndreas Färber	pinctrl-0 = <&uart_ao_a_pins>;
319ab5b24fdSMartin Blumenstingl	pinctrl-names = "default";
320d6f93b02SAndreas Färber};
321d6f93b02SAndreas Färber
322d6f93b02SAndreas Färber&usb0_phy {
323d6f93b02SAndreas Färber	status = "okay";
32441112431SNeil Armstrong	phy-supply = <&usb_pwr>;
325d6f93b02SAndreas Färber};
326d6f93b02SAndreas Färber
327d6f93b02SAndreas Färber&usb1_phy {
328d6f93b02SAndreas Färber	status = "okay";
329d6f93b02SAndreas Färber};
330d6f93b02SAndreas Färber
331d6f93b02SAndreas Färber&usb0 {
332d6f93b02SAndreas Färber	status = "okay";
333d6f93b02SAndreas Färber};
334d6f93b02SAndreas Färber
335d6f93b02SAndreas Färber&usb1 {
336d6f93b02SAndreas Färber	status = "okay";
337ab5b24fdSMartin Blumenstingl};
338