1114abfe1SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2e15d2774SMartin Blumenstingl/*
3e15d2774SMartin Blumenstingl * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
4e15d2774SMartin Blumenstingl */
5e15d2774SMartin Blumenstingl
6e15d2774SMartin Blumenstingl/dts-v1/;
7e15d2774SMartin Blumenstingl
8e15d2774SMartin Blumenstingl#include <dt-bindings/input/input.h>
9e15d2774SMartin Blumenstingl
10e15d2774SMartin Blumenstingl#include "meson-gxl-s905x-p212.dtsi"
11*4e0649f4SChristian Hewitt#include <dt-bindings/sound/meson-aiu.h>
12e15d2774SMartin Blumenstingl
13e15d2774SMartin Blumenstingl/ {
14e15d2774SMartin Blumenstingl	compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl";
15e15d2774SMartin Blumenstingl	model = "Khadas VIM";
16e15d2774SMartin Blumenstingl
17e15d2774SMartin Blumenstingl	adc-keys {
18e15d2774SMartin Blumenstingl		compatible = "adc-keys";
19e15d2774SMartin Blumenstingl		io-channels = <&saradc 0>;
20e15d2774SMartin Blumenstingl		io-channel-names = "buttons";
21e15d2774SMartin Blumenstingl		keyup-threshold-microvolt = <1710000>;
22e15d2774SMartin Blumenstingl
23e15d2774SMartin Blumenstingl		button-function {
24e15d2774SMartin Blumenstingl			label = "Function";
25e15d2774SMartin Blumenstingl			linux,code = <KEY_FN>;
26e15d2774SMartin Blumenstingl			press-threshold-microvolt = <10000>;
27e15d2774SMartin Blumenstingl		};
28e15d2774SMartin Blumenstingl	};
29e15d2774SMartin Blumenstingl
30e15d2774SMartin Blumenstingl	aliases {
31e15d2774SMartin Blumenstingl		serial2 = &uart_AO_B;
32059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
33e15d2774SMartin Blumenstingl	};
34e15d2774SMartin Blumenstingl
35e15d2774SMartin Blumenstingl	gpio-keys-polled {
36e15d2774SMartin Blumenstingl		compatible = "gpio-keys-polled";
37e15d2774SMartin Blumenstingl		poll-interval = <100>;
38e15d2774SMartin Blumenstingl
39d5f6fa90SChristian Hewitt		power-button {
40e15d2774SMartin Blumenstingl			label = "power";
41e15d2774SMartin Blumenstingl			linux,code = <KEY_POWER>;
42e15d2774SMartin Blumenstingl			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
43e15d2774SMartin Blumenstingl		};
44e15d2774SMartin Blumenstingl	};
45e15d2774SMartin Blumenstingl
46e15d2774SMartin Blumenstingl	pwmleds {
47e15d2774SMartin Blumenstingl		compatible = "pwm-leds";
48e15d2774SMartin Blumenstingl
49e15d2774SMartin Blumenstingl		power {
50e15d2774SMartin Blumenstingl			label = "vim:red:power";
51e15d2774SMartin Blumenstingl			pwms = <&pwm_AO_ab 1 7812500 0>;
52e15d2774SMartin Blumenstingl			max-brightness = <255>;
53e15d2774SMartin Blumenstingl			linux,default-trigger = "default-on";
54e15d2774SMartin Blumenstingl		};
55e15d2774SMartin Blumenstingl	};
56b43186dbSNeil Armstrong
57b43186dbSNeil Armstrong	hdmi-connector {
58b43186dbSNeil Armstrong		compatible = "hdmi-connector";
59b43186dbSNeil Armstrong		type = "a";
60b43186dbSNeil Armstrong
61b43186dbSNeil Armstrong		port {
62b43186dbSNeil Armstrong			hdmi_connector_in: endpoint {
63b43186dbSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
64b43186dbSNeil Armstrong			};
65b43186dbSNeil Armstrong		};
66b43186dbSNeil Armstrong	};
67*4e0649f4SChristian Hewitt
68*4e0649f4SChristian Hewitt	sound {
69*4e0649f4SChristian Hewitt		compatible = "amlogic,gx-sound-card";
70*4e0649f4SChristian Hewitt		model = "GXL-KHADAS-VIM1";
71*4e0649f4SChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL0>,
72*4e0649f4SChristian Hewitt				  <&clkc CLKID_MPLL1>,
73*4e0649f4SChristian Hewitt				  <&clkc CLKID_MPLL2>;
74*4e0649f4SChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
75*4e0649f4SChristian Hewitt		assigned-clock-rates = <294912000>,
76*4e0649f4SChristian Hewitt				       <270950400>,
77*4e0649f4SChristian Hewitt				       <393216000>;
78*4e0649f4SChristian Hewitt		status = "okay";
79*4e0649f4SChristian Hewitt
80*4e0649f4SChristian Hewitt		dai-link-0 {
81*4e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
82*4e0649f4SChristian Hewitt		};
83*4e0649f4SChristian Hewitt
84*4e0649f4SChristian Hewitt		dai-link-1 {
85*4e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
86*4e0649f4SChristian Hewitt			dai-format = "i2s";
87*4e0649f4SChristian Hewitt			mclk-fs = <256>;
88*4e0649f4SChristian Hewitt
89*4e0649f4SChristian Hewitt			codec-0 {
90*4e0649f4SChristian Hewitt				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
91*4e0649f4SChristian Hewitt			};
92*4e0649f4SChristian Hewitt		};
93*4e0649f4SChristian Hewitt
94*4e0649f4SChristian Hewitt		dai-link-2 {
95*4e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
96*4e0649f4SChristian Hewitt
97*4e0649f4SChristian Hewitt			codec-0 {
98*4e0649f4SChristian Hewitt				sound-dai = <&hdmi_tx>;
99*4e0649f4SChristian Hewitt			};
100*4e0649f4SChristian Hewitt		};
101*4e0649f4SChristian Hewitt	};
102*4e0649f4SChristian Hewitt};
103*4e0649f4SChristian Hewitt
104*4e0649f4SChristian Hewitt&aiu {
105*4e0649f4SChristian Hewitt	status = "okay";
106b43186dbSNeil Armstrong};
107b43186dbSNeil Armstrong
108b16c71c9SNeil Armstrong&cec_AO {
109b16c71c9SNeil Armstrong	status = "okay";
110b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
111b16c71c9SNeil Armstrong	pinctrl-names = "default";
112b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
113b16c71c9SNeil Armstrong};
114b16c71c9SNeil Armstrong
115b43186dbSNeil Armstrong&hdmi_tx {
116b43186dbSNeil Armstrong	status = "okay";
117b43186dbSNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
118b43186dbSNeil Armstrong	pinctrl-names = "default";
119e1f2163dSNeil Armstrong	hdmi-supply = <&hdmi_5v>;
120b43186dbSNeil Armstrong};
121b43186dbSNeil Armstrong
122b43186dbSNeil Armstrong&hdmi_tx_tmds_port {
123b43186dbSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
124b43186dbSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
125b43186dbSNeil Armstrong	};
126e15d2774SMartin Blumenstingl};
127e15d2774SMartin Blumenstingl
128e15d2774SMartin Blumenstingl&i2c_A {
129e15d2774SMartin Blumenstingl	status = "okay";
130e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_a_pins>;
131e15d2774SMartin Blumenstingl	pinctrl-names = "default";
132e15d2774SMartin Blumenstingl};
133e15d2774SMartin Blumenstingl
134e15d2774SMartin Blumenstingl&i2c_B {
135e15d2774SMartin Blumenstingl	status = "okay";
136e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_b_pins>;
137e15d2774SMartin Blumenstingl	pinctrl-names = "default";
138e15d2774SMartin Blumenstingl
139e15d2774SMartin Blumenstingl	rtc: rtc@51 {
140287eb2beSChristian Hewitt		status = "okay";
141e15d2774SMartin Blumenstingl		compatible = "haoyu,hym8563";
142e15d2774SMartin Blumenstingl		reg = <0x51>;
143e15d2774SMartin Blumenstingl		#clock-cells = <0>;
144e15d2774SMartin Blumenstingl		clock-frequency = <32768>;
145e15d2774SMartin Blumenstingl		clock-output-names = "xin32k";
146e15d2774SMartin Blumenstingl	};
147e15d2774SMartin Blumenstingl};
148e15d2774SMartin Blumenstingl
149e15d2774SMartin Blumenstingl&ir {
150c9ee1d25SChristian Hewitt	linux,rc-map-name = "rc-khadas";
151e15d2774SMartin Blumenstingl};
152e15d2774SMartin Blumenstingl
1535b780126SNeil Armstrong&gpio_ao {
15460795933SNeil Armstrong	gpio-line-names = "UART TX",
15560795933SNeil Armstrong			  "UART RX",
15660795933SNeil Armstrong			  "Power Key In",
15760795933SNeil Armstrong			  "J9 Header Pin35",
15860795933SNeil Armstrong			  "J9 Header Pin16",
15960795933SNeil Armstrong			  "J9 Header Pin15",
16060795933SNeil Armstrong			  "J9 Header Pin33",
16160795933SNeil Armstrong			  "IR In",
16260795933SNeil Armstrong			  "HDMI CEC",
163c6496b47SJerome Brunet			  "SYS LED",
164c6496b47SJerome Brunet			  /* GPIO_TEST_N */
165c6496b47SJerome Brunet			  "";
16660795933SNeil Armstrong};
16760795933SNeil Armstrong
1685b780126SNeil Armstrong&gpio {
16960795933SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
17060795933SNeil Armstrong			  "", "", "", "", "", "", "",
17160795933SNeil Armstrong			  "", "", "", "", "", "", "",
17260795933SNeil Armstrong			  "Power OFF",
17360795933SNeil Armstrong			  "VCCK Enable",
17460795933SNeil Armstrong			  /* Bank GPIOH */
17560795933SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
17660795933SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
17760795933SNeil Armstrong			  "J9 Header Pin37",
17860795933SNeil Armstrong			  "J9 Header Pin30",
17960795933SNeil Armstrong			  "J9 Header Pin29",
18060795933SNeil Armstrong			  "J9 Header Pin32",
18160795933SNeil Armstrong			  "J9 Header Pin31",
18260795933SNeil Armstrong			  /* Bank BOOT */
18360795933SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
18460795933SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
18560795933SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
18660795933SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
18760795933SNeil Armstrong			  /* Bank CARD */
18860795933SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
18960795933SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
19060795933SNeil Armstrong			  /* Bank GPIODV */
19160795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
19260795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
19360795933SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
19460795933SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
19560795933SNeil Armstrong			  /* Bank GPIOX */
19660795933SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
19760795933SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
19860795933SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
19960795933SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
20060795933SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
20160795933SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
20260795933SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
20360795933SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
20460795933SNeil Armstrong			  "Bluetooth WAKE HOST",
20560795933SNeil Armstrong			  /* Bank GPIOCLK */
206c6496b47SJerome Brunet			  "", "J9 Header Pin39";
20760795933SNeil Armstrong};
20860795933SNeil Armstrong
209e15d2774SMartin Blumenstingl&pwm_AO_ab {
210e15d2774SMartin Blumenstingl	status = "okay";
211e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
212e15d2774SMartin Blumenstingl	pinctrl-names = "default";
2136620f146SJerome Brunet	clocks = <&xtal> , <&xtal>;
2146620f146SJerome Brunet	clock-names = "clkin0", "clkin1" ;
215e15d2774SMartin Blumenstingl};
216e15d2774SMartin Blumenstingl
217e15d2774SMartin Blumenstingl&pwm_ef {
218e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
219e15d2774SMartin Blumenstingl};
220e15d2774SMartin Blumenstingl
221e15d2774SMartin Blumenstingl&sd_emmc_a {
222c26db7aaSAndreas Färber	brcmf: wifi@1 {
223e15d2774SMartin Blumenstingl		reg = <1>;
224e15d2774SMartin Blumenstingl		compatible = "brcm,bcm4329-fmac";
225e15d2774SMartin Blumenstingl	};
226e15d2774SMartin Blumenstingl};
227e15d2774SMartin Blumenstingl
228dd5297ccSChristian Hewitt&uart_A {
229dd5297ccSChristian Hewitt	bluetooth {
230dd5297ccSChristian Hewitt		compatible = "brcm,bcm43438-bt";
231dd5297ccSChristian Hewitt		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
2321c6d5755SChristian Hewitt		max-speed = <2000000>;
2331c6d5755SChristian Hewitt		clocks = <&wifi32k>;
2341c6d5755SChristian Hewitt		clock-names = "lpo";
235dd5297ccSChristian Hewitt	};
236dd5297ccSChristian Hewitt};
237dd5297ccSChristian Hewitt
238e15d2774SMartin Blumenstingl/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
239e15d2774SMartin Blumenstingl&uart_AO {
240e15d2774SMartin Blumenstingl	status = "okay";
241e15d2774SMartin Blumenstingl};
242e15d2774SMartin Blumenstingl
243e15d2774SMartin Blumenstingl/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
244e15d2774SMartin Blumenstingl&uart_AO_B {
245e15d2774SMartin Blumenstingl	status = "okay";
246e15d2774SMartin Blumenstingl	pinctrl-0 = <&uart_ao_b_pins>;
247e15d2774SMartin Blumenstingl	pinctrl-names = "default";
248e15d2774SMartin Blumenstingl};
2492f9139c2SMartin Blumenstingl
2502f9139c2SMartin Blumenstingl&usb {
2512f9139c2SMartin Blumenstingl	dr_mode = "peripheral";
2522f9139c2SMartin Blumenstingl};
253