14549e789STom Rini// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
25ff2ee44SNeil Armstrong/*
35ff2ee44SNeil Armstrong * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
45ff2ee44SNeil Armstrong */
55ff2ee44SNeil Armstrong
65ff2ee44SNeil Armstrong/dts-v1/;
75ff2ee44SNeil Armstrong
85ff2ee44SNeil Armstrong#include <dt-bindings/input/input.h>
95ff2ee44SNeil Armstrong
105ff2ee44SNeil Armstrong#include "meson-gxl-s905x-p212.dtsi"
115ff2ee44SNeil Armstrong
125ff2ee44SNeil Armstrong/ {
135ff2ee44SNeil Armstrong	compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl";
145ff2ee44SNeil Armstrong	model = "Khadas VIM";
155ff2ee44SNeil Armstrong
165ff2ee44SNeil Armstrong	adc-keys {
175ff2ee44SNeil Armstrong		compatible = "adc-keys";
185ff2ee44SNeil Armstrong		io-channels = <&saradc 0>;
195ff2ee44SNeil Armstrong		io-channel-names = "buttons";
205ff2ee44SNeil Armstrong		keyup-threshold-microvolt = <1710000>;
215ff2ee44SNeil Armstrong
225ff2ee44SNeil Armstrong		button-function {
235ff2ee44SNeil Armstrong			label = "Function";
245ff2ee44SNeil Armstrong			linux,code = <KEY_FN>;
255ff2ee44SNeil Armstrong			press-threshold-microvolt = <10000>;
265ff2ee44SNeil Armstrong		};
275ff2ee44SNeil Armstrong	};
285ff2ee44SNeil Armstrong
295ff2ee44SNeil Armstrong	aliases {
305ff2ee44SNeil Armstrong		serial2 = &uart_AO_B;
315ff2ee44SNeil Armstrong	};
325ff2ee44SNeil Armstrong
335ff2ee44SNeil Armstrong	gpio-keys-polled {
345ff2ee44SNeil Armstrong		compatible = "gpio-keys-polled";
355ff2ee44SNeil Armstrong		#address-cells = <1>;
365ff2ee44SNeil Armstrong		#size-cells = <0>;
375ff2ee44SNeil Armstrong		poll-interval = <100>;
385ff2ee44SNeil Armstrong
395ff2ee44SNeil Armstrong		button@0 {
405ff2ee44SNeil Armstrong			label = "power";
415ff2ee44SNeil Armstrong			linux,code = <KEY_POWER>;
425ff2ee44SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
435ff2ee44SNeil Armstrong		};
445ff2ee44SNeil Armstrong	};
455ff2ee44SNeil Armstrong
465ff2ee44SNeil Armstrong	pwmleds {
475ff2ee44SNeil Armstrong		compatible = "pwm-leds";
485ff2ee44SNeil Armstrong
495ff2ee44SNeil Armstrong		power {
505ff2ee44SNeil Armstrong			label = "vim:red:power";
515ff2ee44SNeil Armstrong			pwms = <&pwm_AO_ab 1 7812500 0>;
525ff2ee44SNeil Armstrong			max-brightness = <255>;
535ff2ee44SNeil Armstrong			linux,default-trigger = "default-on";
545ff2ee44SNeil Armstrong		};
555ff2ee44SNeil Armstrong	};
565ff2ee44SNeil Armstrong
575ff2ee44SNeil Armstrong	hdmi-connector {
585ff2ee44SNeil Armstrong		compatible = "hdmi-connector";
595ff2ee44SNeil Armstrong		type = "a";
605ff2ee44SNeil Armstrong
615ff2ee44SNeil Armstrong		port {
625ff2ee44SNeil Armstrong			hdmi_connector_in: endpoint {
635ff2ee44SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
645ff2ee44SNeil Armstrong			};
655ff2ee44SNeil Armstrong		};
665ff2ee44SNeil Armstrong	};
675ff2ee44SNeil Armstrong};
685ff2ee44SNeil Armstrong
69*7d750c35SNeil Armstrong&cec_AO {
70*7d750c35SNeil Armstrong	status = "okay";
71*7d750c35SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
72*7d750c35SNeil Armstrong	pinctrl-names = "default";
73*7d750c35SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
74*7d750c35SNeil Armstrong};
75*7d750c35SNeil Armstrong
765ff2ee44SNeil Armstrong&hdmi_tx {
775ff2ee44SNeil Armstrong	status = "okay";
785ff2ee44SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
795ff2ee44SNeil Armstrong	pinctrl-names = "default";
805ff2ee44SNeil Armstrong};
815ff2ee44SNeil Armstrong
825ff2ee44SNeil Armstrong&hdmi_tx_tmds_port {
835ff2ee44SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
845ff2ee44SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
855ff2ee44SNeil Armstrong	};
865ff2ee44SNeil Armstrong};
875ff2ee44SNeil Armstrong
885ff2ee44SNeil Armstrong&i2c_A {
895ff2ee44SNeil Armstrong	status = "okay";
905ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_a_pins>;
915ff2ee44SNeil Armstrong	pinctrl-names = "default";
925ff2ee44SNeil Armstrong};
935ff2ee44SNeil Armstrong
945ff2ee44SNeil Armstrong&i2c_B {
955ff2ee44SNeil Armstrong	status = "okay";
965ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_b_pins>;
975ff2ee44SNeil Armstrong	pinctrl-names = "default";
985ff2ee44SNeil Armstrong
995ff2ee44SNeil Armstrong	rtc: rtc@51 {
1005ff2ee44SNeil Armstrong		/* has to be enabled manually when a battery is connected: */
1015ff2ee44SNeil Armstrong		status = "disabled";
1025ff2ee44SNeil Armstrong		compatible = "haoyu,hym8563";
1035ff2ee44SNeil Armstrong		reg = <0x51>;
1045ff2ee44SNeil Armstrong		#clock-cells = <0>;
1055ff2ee44SNeil Armstrong		clock-frequency = <32768>;
1065ff2ee44SNeil Armstrong		clock-output-names = "xin32k";
1075ff2ee44SNeil Armstrong	};
1085ff2ee44SNeil Armstrong};
1095ff2ee44SNeil Armstrong
1105ff2ee44SNeil Armstrong&ir {
1115ff2ee44SNeil Armstrong	linux,rc-map-name = "rc-geekbox";
1125ff2ee44SNeil Armstrong};
1135ff2ee44SNeil Armstrong
114*7d750c35SNeil Armstrong&pinctrl_aobus {
115*7d750c35SNeil Armstrong	gpio-line-names = "UART TX",
116*7d750c35SNeil Armstrong			  "UART RX",
117*7d750c35SNeil Armstrong			  "Power Key In",
118*7d750c35SNeil Armstrong			  "J9 Header Pin35",
119*7d750c35SNeil Armstrong			  "J9 Header Pin16",
120*7d750c35SNeil Armstrong			  "J9 Header Pin15",
121*7d750c35SNeil Armstrong			  "J9 Header Pin33",
122*7d750c35SNeil Armstrong			  "IR In",
123*7d750c35SNeil Armstrong			  "HDMI CEC",
124*7d750c35SNeil Armstrong			  "SYS LED",
125*7d750c35SNeil Armstrong			  /* GPIO_TEST_N */
126*7d750c35SNeil Armstrong			  "";
127*7d750c35SNeil Armstrong};
128*7d750c35SNeil Armstrong
129*7d750c35SNeil Armstrong&pinctrl_periphs {
130*7d750c35SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
131*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
132*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
133*7d750c35SNeil Armstrong			  "Power OFF",
134*7d750c35SNeil Armstrong			  "VCCK Enable",
135*7d750c35SNeil Armstrong			  /* Bank GPIOH */
136*7d750c35SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
137*7d750c35SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
138*7d750c35SNeil Armstrong			  "J9 Header Pin37",
139*7d750c35SNeil Armstrong			  "J9 Header Pin30",
140*7d750c35SNeil Armstrong			  "J9 Header Pin29",
141*7d750c35SNeil Armstrong			  "J9 Header Pin32",
142*7d750c35SNeil Armstrong			  "J9 Header Pin31",
143*7d750c35SNeil Armstrong			  /* Bank BOOT */
144*7d750c35SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
145*7d750c35SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
146*7d750c35SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
147*7d750c35SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
148*7d750c35SNeil Armstrong			  /* Bank CARD */
149*7d750c35SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
150*7d750c35SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
151*7d750c35SNeil Armstrong			  /* Bank GPIODV */
152*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
153*7d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
154*7d750c35SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
155*7d750c35SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
156*7d750c35SNeil Armstrong			  /* Bank GPIOX */
157*7d750c35SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
158*7d750c35SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
159*7d750c35SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
160*7d750c35SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
161*7d750c35SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
162*7d750c35SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
163*7d750c35SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
164*7d750c35SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
165*7d750c35SNeil Armstrong			  "Bluetooth WAKE HOST",
166*7d750c35SNeil Armstrong			  /* Bank GPIOCLK */
167*7d750c35SNeil Armstrong			  "", "J9 Header Pin39";
168*7d750c35SNeil Armstrong};
169*7d750c35SNeil Armstrong
1705ff2ee44SNeil Armstrong&pwm_AO_ab {
1715ff2ee44SNeil Armstrong	status = "okay";
1725ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
1735ff2ee44SNeil Armstrong	pinctrl-names = "default";
1745ff2ee44SNeil Armstrong	clocks = <&xtal> , <&xtal>;
1755ff2ee44SNeil Armstrong	clock-names = "clkin0", "clkin1" ;
1765ff2ee44SNeil Armstrong};
1775ff2ee44SNeil Armstrong
1785ff2ee44SNeil Armstrong&pwm_ef {
1795ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
1805ff2ee44SNeil Armstrong};
1815ff2ee44SNeil Armstrong
1825ff2ee44SNeil Armstrong&sd_emmc_a {
1835ff2ee44SNeil Armstrong	brcmf: wifi@1 {
1845ff2ee44SNeil Armstrong		reg = <1>;
1855ff2ee44SNeil Armstrong		compatible = "brcm,bcm4329-fmac";
1865ff2ee44SNeil Armstrong	};
1875ff2ee44SNeil Armstrong};
1885ff2ee44SNeil Armstrong
1895ff2ee44SNeil Armstrong/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
1905ff2ee44SNeil Armstrong&uart_AO {
1915ff2ee44SNeil Armstrong	status = "okay";
1925ff2ee44SNeil Armstrong};
1935ff2ee44SNeil Armstrong
1945ff2ee44SNeil Armstrong/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
1955ff2ee44SNeil Armstrong&uart_AO_B {
1965ff2ee44SNeil Armstrong	status = "okay";
1975ff2ee44SNeil Armstrong	pinctrl-0 = <&uart_ao_b_pins>;
1985ff2ee44SNeil Armstrong	pinctrl-names = "default";
1995ff2ee44SNeil Armstrong};
200