1e15d2774SMartin Blumenstingl/*
2e15d2774SMartin Blumenstingl * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
3e15d2774SMartin Blumenstingl *
4e15d2774SMartin Blumenstingl * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
5e15d2774SMartin Blumenstingl */
6e15d2774SMartin Blumenstingl
7e15d2774SMartin Blumenstingl/dts-v1/;
8e15d2774SMartin Blumenstingl
9e15d2774SMartin Blumenstingl#include <dt-bindings/input/input.h>
10e15d2774SMartin Blumenstingl
11e15d2774SMartin Blumenstingl#include "meson-gxl-s905x-p212.dtsi"
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;
32e15d2774SMartin Blumenstingl	};
33e15d2774SMartin Blumenstingl
34e15d2774SMartin Blumenstingl	gpio-keys-polled {
35e15d2774SMartin Blumenstingl		compatible = "gpio-keys-polled";
36e15d2774SMartin Blumenstingl		#address-cells = <1>;
37e15d2774SMartin Blumenstingl		#size-cells = <0>;
38e15d2774SMartin Blumenstingl		poll-interval = <100>;
39e15d2774SMartin Blumenstingl
40e15d2774SMartin Blumenstingl		button@0 {
41e15d2774SMartin Blumenstingl			label = "power";
42e15d2774SMartin Blumenstingl			linux,code = <KEY_POWER>;
43e15d2774SMartin Blumenstingl			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
44e15d2774SMartin Blumenstingl		};
45e15d2774SMartin Blumenstingl	};
46e15d2774SMartin Blumenstingl
47e15d2774SMartin Blumenstingl	pwmleds {
48e15d2774SMartin Blumenstingl		compatible = "pwm-leds";
49e15d2774SMartin Blumenstingl
50e15d2774SMartin Blumenstingl		power {
51e15d2774SMartin Blumenstingl			label = "vim:red:power";
52e15d2774SMartin Blumenstingl			pwms = <&pwm_AO_ab 1 7812500 0>;
53e15d2774SMartin Blumenstingl			max-brightness = <255>;
54e15d2774SMartin Blumenstingl			linux,default-trigger = "default-on";
55e15d2774SMartin Blumenstingl		};
56e15d2774SMartin Blumenstingl	};
57b43186dbSNeil Armstrong
58b43186dbSNeil Armstrong	hdmi-connector {
59b43186dbSNeil Armstrong		compatible = "hdmi-connector";
60b43186dbSNeil Armstrong		type = "a";
61b43186dbSNeil Armstrong
62b43186dbSNeil Armstrong		port {
63b43186dbSNeil Armstrong			hdmi_connector_in: endpoint {
64b43186dbSNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
65b43186dbSNeil Armstrong			};
66b43186dbSNeil Armstrong		};
67b43186dbSNeil Armstrong	};
68b43186dbSNeil Armstrong};
69b43186dbSNeil Armstrong
70b43186dbSNeil Armstrong&hdmi_tx {
71b43186dbSNeil Armstrong	status = "okay";
72b43186dbSNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
73b43186dbSNeil Armstrong	pinctrl-names = "default";
74b43186dbSNeil Armstrong};
75b43186dbSNeil Armstrong
76b43186dbSNeil Armstrong&hdmi_tx_tmds_port {
77b43186dbSNeil Armstrong	hdmi_tx_tmds_out: endpoint {
78b43186dbSNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
79b43186dbSNeil Armstrong	};
80e15d2774SMartin Blumenstingl};
81e15d2774SMartin Blumenstingl
82e15d2774SMartin Blumenstingl&i2c_A {
83e15d2774SMartin Blumenstingl	status = "okay";
84e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_a_pins>;
85e15d2774SMartin Blumenstingl	pinctrl-names = "default";
86e15d2774SMartin Blumenstingl};
87e15d2774SMartin Blumenstingl
88e15d2774SMartin Blumenstingl&i2c_B {
89e15d2774SMartin Blumenstingl	status = "okay";
90e15d2774SMartin Blumenstingl	pinctrl-0 = <&i2c_b_pins>;
91e15d2774SMartin Blumenstingl	pinctrl-names = "default";
92e15d2774SMartin Blumenstingl
93e15d2774SMartin Blumenstingl	rtc: rtc@51 {
94e15d2774SMartin Blumenstingl		/* has to be enabled manually when a battery is connected: */
95e15d2774SMartin Blumenstingl		status = "disabled";
96e15d2774SMartin Blumenstingl		compatible = "haoyu,hym8563";
97e15d2774SMartin Blumenstingl		reg = <0x51>;
98e15d2774SMartin Blumenstingl		#clock-cells = <0>;
99e15d2774SMartin Blumenstingl		clock-frequency = <32768>;
100e15d2774SMartin Blumenstingl		clock-output-names = "xin32k";
101e15d2774SMartin Blumenstingl	};
102e15d2774SMartin Blumenstingl};
103e15d2774SMartin Blumenstingl
104e15d2774SMartin Blumenstingl&ir {
105e15d2774SMartin Blumenstingl	linux,rc-map-name = "rc-geekbox";
106e15d2774SMartin Blumenstingl};
107e15d2774SMartin Blumenstingl
10860795933SNeil Armstrong&pinctrl_aobus {
10960795933SNeil Armstrong	gpio-line-names = "UART TX",
11060795933SNeil Armstrong			  "UART RX",
11160795933SNeil Armstrong			  "Power Key In",
11260795933SNeil Armstrong			  "J9 Header Pin35",
11360795933SNeil Armstrong			  "J9 Header Pin16",
11460795933SNeil Armstrong			  "J9 Header Pin15",
11560795933SNeil Armstrong			  "J9 Header Pin33",
11660795933SNeil Armstrong			  "IR In",
11760795933SNeil Armstrong			  "HDMI CEC",
11860795933SNeil Armstrong			  "SYS LED";
11960795933SNeil Armstrong};
12060795933SNeil Armstrong
12160795933SNeil Armstrong&pinctrl_periphs {
12260795933SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
12360795933SNeil Armstrong			  "", "", "", "", "", "", "",
12460795933SNeil Armstrong			  "", "", "", "", "", "", "",
12560795933SNeil Armstrong			  "Power OFF",
12660795933SNeil Armstrong			  "VCCK Enable",
12760795933SNeil Armstrong			  /* Bank GPIOH */
12860795933SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
12960795933SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
13060795933SNeil Armstrong			  "J9 Header Pin37",
13160795933SNeil Armstrong			  "J9 Header Pin30",
13260795933SNeil Armstrong			  "J9 Header Pin29",
13360795933SNeil Armstrong			  "J9 Header Pin32",
13460795933SNeil Armstrong			  "J9 Header Pin31",
13560795933SNeil Armstrong			  /* Bank BOOT */
13660795933SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
13760795933SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
13860795933SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
13960795933SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
14060795933SNeil Armstrong			  /* Bank CARD */
14160795933SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
14260795933SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
14360795933SNeil Armstrong			  /* Bank GPIODV */
14460795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
14560795933SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
14660795933SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
14760795933SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
14860795933SNeil Armstrong			  /* Bank GPIOX */
14960795933SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
15060795933SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
15160795933SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
15260795933SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
15360795933SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
15460795933SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
15560795933SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
15660795933SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
15760795933SNeil Armstrong			  "Bluetooth WAKE HOST",
15860795933SNeil Armstrong			  /* Bank GPIOCLK */
15960795933SNeil Armstrong			  "", "J9 Header Pin39",
16060795933SNeil Armstrong			  /* GPIO_TEST_N */
16160795933SNeil Armstrong			  "";
16260795933SNeil Armstrong};
16360795933SNeil Armstrong
164e15d2774SMartin Blumenstingl&pwm_AO_ab {
165e15d2774SMartin Blumenstingl	status = "okay";
166e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
167e15d2774SMartin Blumenstingl	pinctrl-names = "default";
168e15d2774SMartin Blumenstingl	clocks = <&clkc CLKID_FCLK_DIV4>;
169e15d2774SMartin Blumenstingl	clock-names = "clkin0";
170e15d2774SMartin Blumenstingl};
171e15d2774SMartin Blumenstingl
172e15d2774SMartin Blumenstingl&pwm_ef {
173e15d2774SMartin Blumenstingl	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
174e15d2774SMartin Blumenstingl};
175e15d2774SMartin Blumenstingl
176e15d2774SMartin Blumenstingl&sd_emmc_a {
177c26db7aaSAndreas Färber	brcmf: wifi@1 {
178e15d2774SMartin Blumenstingl		reg = <1>;
179e15d2774SMartin Blumenstingl		compatible = "brcm,bcm4329-fmac";
180e15d2774SMartin Blumenstingl	};
181e15d2774SMartin Blumenstingl};
182e15d2774SMartin Blumenstingl
183e15d2774SMartin Blumenstingl/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
184e15d2774SMartin Blumenstingl&uart_AO {
185e15d2774SMartin Blumenstingl	status = "okay";
186e15d2774SMartin Blumenstingl};
187e15d2774SMartin Blumenstingl
188e15d2774SMartin Blumenstingl/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
189e15d2774SMartin Blumenstingl&uart_AO_B {
190e15d2774SMartin Blumenstingl	status = "okay";
191e15d2774SMartin Blumenstingl	pinctrl-0 = <&uart_ao_b_pins>;
192e15d2774SMartin Blumenstingl	pinctrl-names = "default";
193e15d2774SMartin Blumenstingl};
194