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 "meson-gxl-s905x-p212.dtsi"
9c993c4e8SChristian Hewitt#include <dt-bindings/input/input.h>
104e0649f4SChristian Hewitt#include <dt-bindings/sound/meson-aiu.h>
11e15d2774SMartin Blumenstingl
12e15d2774SMartin Blumenstingl/ {
13e15d2774SMartin Blumenstingl	compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl";
14e15d2774SMartin Blumenstingl	model = "Khadas VIM";
15e15d2774SMartin Blumenstingl
16e15d2774SMartin Blumenstingl	adc-keys {
17e15d2774SMartin Blumenstingl		compatible = "adc-keys";
18e15d2774SMartin Blumenstingl		io-channels = <&saradc 0>;
19e15d2774SMartin Blumenstingl		io-channel-names = "buttons";
20e15d2774SMartin Blumenstingl		keyup-threshold-microvolt = <1710000>;
21e15d2774SMartin Blumenstingl
22e15d2774SMartin Blumenstingl		button-function {
23e15d2774SMartin Blumenstingl			label = "Function";
24e15d2774SMartin Blumenstingl			linux,code = <KEY_FN>;
25e15d2774SMartin Blumenstingl			press-threshold-microvolt = <10000>;
26e15d2774SMartin Blumenstingl		};
27e15d2774SMartin Blumenstingl	};
28e15d2774SMartin Blumenstingl
29e15d2774SMartin Blumenstingl	aliases {
30e15d2774SMartin Blumenstingl		serial2 = &uart_AO_B;
31059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
32e15d2774SMartin Blumenstingl	};
33e15d2774SMartin Blumenstingl
34e15d2774SMartin Blumenstingl	gpio-keys-polled {
35e15d2774SMartin Blumenstingl		compatible = "gpio-keys-polled";
36e15d2774SMartin Blumenstingl		poll-interval = <100>;
37e15d2774SMartin Blumenstingl
38d5f6fa90SChristian Hewitt		power-button {
39e15d2774SMartin Blumenstingl			label = "power";
40e15d2774SMartin Blumenstingl			linux,code = <KEY_POWER>;
41e15d2774SMartin Blumenstingl			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
42e15d2774SMartin Blumenstingl		};
43e15d2774SMartin Blumenstingl	};
44e15d2774SMartin Blumenstingl
45a74978f3SAlexander Dahl	led-controller {
46e15d2774SMartin Blumenstingl		compatible = "pwm-leds";
47e15d2774SMartin Blumenstingl
48a74978f3SAlexander Dahl		led-1 {
49e15d2774SMartin Blumenstingl			label = "vim:red:power";
50e15d2774SMartin Blumenstingl			pwms = <&pwm_AO_ab 1 7812500 0>;
51e15d2774SMartin Blumenstingl			max-brightness = <255>;
52e15d2774SMartin Blumenstingl			linux,default-trigger = "default-on";
53e15d2774SMartin Blumenstingl		};
54e15d2774SMartin Blumenstingl	};
55b43186dbSNeil Armstrong
56b43186dbSNeil Armstrong	hdmi-connector {
57b43186dbSNeil Armstrong		compatible = "hdmi-connector";
58b43186dbSNeil Armstrong		type = "a";
59b43186dbSNeil Armstrong
60b43186dbSNeil Armstrong		port {
61b43186dbSNeil Armstrong			hdmi_connector_in: endpoint {
62b43186dbSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
63b43186dbSNeil Armstrong			};
64b43186dbSNeil Armstrong		};
65b43186dbSNeil Armstrong	};
664e0649f4SChristian Hewitt
674e0649f4SChristian Hewitt	sound {
684e0649f4SChristian Hewitt		compatible = "amlogic,gx-sound-card";
69933b80edSChristian Hewitt		model = "KHADAS-VIM";
704e0649f4SChristian Hewitt		assigned-clocks = <&clkc CLKID_MPLL0>,
714e0649f4SChristian Hewitt				  <&clkc CLKID_MPLL1>,
724e0649f4SChristian Hewitt				  <&clkc CLKID_MPLL2>;
734e0649f4SChristian Hewitt		assigned-clock-parents = <0>, <0>, <0>;
744e0649f4SChristian Hewitt		assigned-clock-rates = <294912000>,
754e0649f4SChristian Hewitt				       <270950400>,
764e0649f4SChristian Hewitt				       <393216000>;
774e0649f4SChristian Hewitt
784e0649f4SChristian Hewitt		dai-link-0 {
794e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
804e0649f4SChristian Hewitt		};
814e0649f4SChristian Hewitt
824e0649f4SChristian Hewitt		dai-link-1 {
834e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
844e0649f4SChristian Hewitt			dai-format = "i2s";
854e0649f4SChristian Hewitt			mclk-fs = <256>;
864e0649f4SChristian Hewitt
874e0649f4SChristian Hewitt			codec-0 {
884e0649f4SChristian Hewitt				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
894e0649f4SChristian Hewitt			};
904e0649f4SChristian Hewitt		};
914e0649f4SChristian Hewitt
924e0649f4SChristian Hewitt		dai-link-2 {
934e0649f4SChristian Hewitt			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
944e0649f4SChristian Hewitt
954e0649f4SChristian Hewitt			codec-0 {
964e0649f4SChristian Hewitt				sound-dai = <&hdmi_tx>;
974e0649f4SChristian Hewitt			};
984e0649f4SChristian Hewitt		};
994e0649f4SChristian Hewitt	};
1004e0649f4SChristian Hewitt};
1014e0649f4SChristian Hewitt
1024e0649f4SChristian Hewitt&aiu {
1034e0649f4SChristian Hewitt	status = "okay";
104b43186dbSNeil Armstrong};
105b43186dbSNeil Armstrong
106b16c71c9SNeil Armstrong&cec_AO {
107b16c71c9SNeil Armstrong	status = "okay";
108b16c71c9SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
109b16c71c9SNeil Armstrong	pinctrl-names = "default";
110b16c71c9SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
111b16c71c9SNeil Armstrong};
112b16c71c9SNeil Armstrong
113b43186dbSNeil Armstrong&hdmi_tx {
114b43186dbSNeil Armstrong	status = "okay";
115b43186dbSNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
116b43186dbSNeil Armstrong	pinctrl-names = "default";
117e1f2163dSNeil Armstrong	hdmi-supply = <&hdmi_5v>;
118b43186dbSNeil Armstrong};
119b43186dbSNeil Armstrong
120b43186dbSNeil Armstrong&hdmi_tx_tmds_port {
121b43186dbSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
122b43186dbSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
123b43186dbSNeil Armstrong	};
124e15d2774SMartin Blumenstingl};
125e15d2774SMartin Blumenstingl
126e15d2774SMartin Blumenstingl&i2c_A {
127e15d2774SMartin Blumenstingl	status = "okay";
128e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_a_pins>;
129e15d2774SMartin Blumenstingl	pinctrl-names = "default";
130e15d2774SMartin Blumenstingl};
131e15d2774SMartin Blumenstingl
132e15d2774SMartin Blumenstingl&i2c_B {
133e15d2774SMartin Blumenstingl	status = "okay";
134e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_b_pins>;
135e15d2774SMartin Blumenstingl	pinctrl-names = "default";
136e15d2774SMartin Blumenstingl
137e15d2774SMartin Blumenstingl	rtc: rtc@51 {
138287eb2beSChristian Hewitt		status = "okay";
139e15d2774SMartin Blumenstingl		compatible = "haoyu,hym8563";
140e15d2774SMartin Blumenstingl		reg = <0x51>;
141e15d2774SMartin Blumenstingl		#clock-cells = <0>;
142e15d2774SMartin Blumenstingl		clock-output-names = "xin32k";
143e15d2774SMartin Blumenstingl	};
144e15d2774SMartin Blumenstingl};
145e15d2774SMartin Blumenstingl
146e15d2774SMartin Blumenstingl&ir {
147c9ee1d25SChristian Hewitt	linux,rc-map-name = "rc-khadas";
148e15d2774SMartin Blumenstingl};
149e15d2774SMartin Blumenstingl
1505b780126SNeil Armstrong&gpio_ao {
15160795933SNeil Armstrong	gpio-line-names = "UART TX",
15260795933SNeil Armstrong			  "UART RX",
15360795933SNeil Armstrong			  "Power Key In",
15460795933SNeil Armstrong			  "J9 Header Pin35",
15560795933SNeil Armstrong			  "J9 Header Pin16",
15660795933SNeil Armstrong			  "J9 Header Pin15",
15760795933SNeil Armstrong			  "J9 Header Pin33",
15860795933SNeil Armstrong			  "IR In",
15960795933SNeil Armstrong			  "HDMI CEC",
160c6496b47SJerome Brunet			  "SYS LED",
161c6496b47SJerome Brunet			  /* GPIO_TEST_N */
162c6496b47SJerome Brunet			  "";
16360795933SNeil Armstrong};
16460795933SNeil Armstrong
1655b780126SNeil Armstrong&gpio {
16660795933SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
16760795933SNeil Armstrong			  "", "", "", "", "", "", "",
16860795933SNeil Armstrong			  "", "", "", "", "", "", "",
16960795933SNeil Armstrong			  "Power OFF",
17060795933SNeil Armstrong			  "VCCK Enable",
17160795933SNeil Armstrong			  /* Bank GPIOH */
17260795933SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
17360795933SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
17460795933SNeil Armstrong			  "J9 Header Pin37",
17560795933SNeil Armstrong			  "J9 Header Pin30",
17660795933SNeil Armstrong			  "J9 Header Pin29",
17760795933SNeil Armstrong			  "J9 Header Pin32",
17860795933SNeil Armstrong			  "J9 Header Pin31",
17960795933SNeil Armstrong			  /* Bank BOOT */
18060795933SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
18160795933SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
18260795933SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
18360795933SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
18460795933SNeil Armstrong			  /* Bank CARD */
18560795933SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
18660795933SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
18760795933SNeil Armstrong			  /* Bank GPIODV */
18860795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
18960795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
19060795933SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
19160795933SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
19260795933SNeil Armstrong			  /* Bank GPIOX */
19360795933SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
19460795933SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
19560795933SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
19660795933SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
19760795933SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
19860795933SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
19960795933SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
20060795933SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
20160795933SNeil Armstrong			  "Bluetooth WAKE HOST",
20260795933SNeil Armstrong			  /* Bank GPIOCLK */
203c6496b47SJerome Brunet			  "", "J9 Header Pin39";
20460795933SNeil Armstrong};
20560795933SNeil Armstrong
206e15d2774SMartin Blumenstingl&pwm_AO_ab {
207e15d2774SMartin Blumenstingl	status = "okay";
208e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
209e15d2774SMartin Blumenstingl	pinctrl-names = "default";
2106620f146SJerome Brunet	clocks = <&xtal> , <&xtal>;
2116620f146SJerome Brunet	clock-names = "clkin0", "clkin1" ;
212e15d2774SMartin Blumenstingl};
213e15d2774SMartin Blumenstingl
214e15d2774SMartin Blumenstingl&pwm_ef {
215e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
216e15d2774SMartin Blumenstingl};
217e15d2774SMartin Blumenstingl
218e15d2774SMartin Blumenstingl&sd_emmc_a {
219*6b197abeSArtem Lapkin	max-frequency = <100000000>;
220dd5297ccSChristian Hewitt};
221dd5297ccSChristian Hewitt
222e15d2774SMartin Blumenstingl/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
223e15d2774SMartin Blumenstingl&uart_AO {
224e15d2774SMartin Blumenstingl	status = "okay";
225e15d2774SMartin Blumenstingl};
226e15d2774SMartin Blumenstingl
227e15d2774SMartin Blumenstingl/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
228e15d2774SMartin Blumenstingl&uart_AO_B {
229e15d2774SMartin Blumenstingl	status = "okay";
230e15d2774SMartin Blumenstingl	pinctrl-0 = <&uart_ao_b_pins>;
231e15d2774SMartin Blumenstingl	pinctrl-names = "default";
232e15d2774SMartin Blumenstingl};
2332f9139c2SMartin Blumenstingl
2342f9139c2SMartin Blumenstingl&usb {
2352f9139c2SMartin Blumenstingl	dr_mode = "peripheral";
2362f9139c2SMartin Blumenstingl};
237