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;
31*5b3da7faSNeil Armstrong		ethernet0 = &ethmac;
325ff2ee44SNeil Armstrong	};
335ff2ee44SNeil Armstrong
345ff2ee44SNeil Armstrong	gpio-keys-polled {
355ff2ee44SNeil Armstrong		compatible = "gpio-keys-polled";
365ff2ee44SNeil Armstrong		#address-cells = <1>;
375ff2ee44SNeil Armstrong		#size-cells = <0>;
385ff2ee44SNeil Armstrong		poll-interval = <100>;
395ff2ee44SNeil Armstrong
405ff2ee44SNeil Armstrong		button@0 {
415ff2ee44SNeil Armstrong			label = "power";
425ff2ee44SNeil Armstrong			linux,code = <KEY_POWER>;
435ff2ee44SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
445ff2ee44SNeil Armstrong		};
455ff2ee44SNeil Armstrong	};
465ff2ee44SNeil Armstrong
475ff2ee44SNeil Armstrong	pwmleds {
485ff2ee44SNeil Armstrong		compatible = "pwm-leds";
495ff2ee44SNeil Armstrong
505ff2ee44SNeil Armstrong		power {
515ff2ee44SNeil Armstrong			label = "vim:red:power";
525ff2ee44SNeil Armstrong			pwms = <&pwm_AO_ab 1 7812500 0>;
535ff2ee44SNeil Armstrong			max-brightness = <255>;
545ff2ee44SNeil Armstrong			linux,default-trigger = "default-on";
555ff2ee44SNeil Armstrong		};
565ff2ee44SNeil Armstrong	};
575ff2ee44SNeil Armstrong
585ff2ee44SNeil Armstrong	hdmi-connector {
595ff2ee44SNeil Armstrong		compatible = "hdmi-connector";
605ff2ee44SNeil Armstrong		type = "a";
615ff2ee44SNeil Armstrong
625ff2ee44SNeil Armstrong		port {
635ff2ee44SNeil Armstrong			hdmi_connector_in: endpoint {
645ff2ee44SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
655ff2ee44SNeil Armstrong			};
665ff2ee44SNeil Armstrong		};
675ff2ee44SNeil Armstrong	};
685ff2ee44SNeil Armstrong};
695ff2ee44SNeil Armstrong
707d750c35SNeil Armstrong&cec_AO {
717d750c35SNeil Armstrong	status = "okay";
727d750c35SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
737d750c35SNeil Armstrong	pinctrl-names = "default";
747d750c35SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
757d750c35SNeil Armstrong};
767d750c35SNeil Armstrong
775ff2ee44SNeil Armstrong&hdmi_tx {
785ff2ee44SNeil Armstrong	status = "okay";
795ff2ee44SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
805ff2ee44SNeil Armstrong	pinctrl-names = "default";
815ff2ee44SNeil Armstrong};
825ff2ee44SNeil Armstrong
835ff2ee44SNeil Armstrong&hdmi_tx_tmds_port {
845ff2ee44SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
855ff2ee44SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
865ff2ee44SNeil Armstrong	};
875ff2ee44SNeil Armstrong};
885ff2ee44SNeil Armstrong
895ff2ee44SNeil Armstrong&i2c_A {
905ff2ee44SNeil Armstrong	status = "okay";
915ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_a_pins>;
925ff2ee44SNeil Armstrong	pinctrl-names = "default";
935ff2ee44SNeil Armstrong};
945ff2ee44SNeil Armstrong
955ff2ee44SNeil Armstrong&i2c_B {
965ff2ee44SNeil Armstrong	status = "okay";
975ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_b_pins>;
985ff2ee44SNeil Armstrong	pinctrl-names = "default";
995ff2ee44SNeil Armstrong
1005ff2ee44SNeil Armstrong	rtc: rtc@51 {
1015ff2ee44SNeil Armstrong		/* has to be enabled manually when a battery is connected: */
1025ff2ee44SNeil Armstrong		status = "disabled";
1035ff2ee44SNeil Armstrong		compatible = "haoyu,hym8563";
1045ff2ee44SNeil Armstrong		reg = <0x51>;
1055ff2ee44SNeil Armstrong		#clock-cells = <0>;
1065ff2ee44SNeil Armstrong		clock-frequency = <32768>;
1075ff2ee44SNeil Armstrong		clock-output-names = "xin32k";
1085ff2ee44SNeil Armstrong	};
1095ff2ee44SNeil Armstrong};
1105ff2ee44SNeil Armstrong
1115ff2ee44SNeil Armstrong&ir {
1125ff2ee44SNeil Armstrong	linux,rc-map-name = "rc-geekbox";
1135ff2ee44SNeil Armstrong};
1145ff2ee44SNeil Armstrong
1157d750c35SNeil Armstrong&pinctrl_aobus {
1167d750c35SNeil Armstrong	gpio-line-names = "UART TX",
1177d750c35SNeil Armstrong			  "UART RX",
1187d750c35SNeil Armstrong			  "Power Key In",
1197d750c35SNeil Armstrong			  "J9 Header Pin35",
1207d750c35SNeil Armstrong			  "J9 Header Pin16",
1217d750c35SNeil Armstrong			  "J9 Header Pin15",
1227d750c35SNeil Armstrong			  "J9 Header Pin33",
1237d750c35SNeil Armstrong			  "IR In",
1247d750c35SNeil Armstrong			  "HDMI CEC",
1257d750c35SNeil Armstrong			  "SYS LED",
1267d750c35SNeil Armstrong			  /* GPIO_TEST_N */
1277d750c35SNeil Armstrong			  "";
1287d750c35SNeil Armstrong};
1297d750c35SNeil Armstrong
1307d750c35SNeil Armstrong&pinctrl_periphs {
1317d750c35SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
1327d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1337d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1347d750c35SNeil Armstrong			  "Power OFF",
1357d750c35SNeil Armstrong			  "VCCK Enable",
1367d750c35SNeil Armstrong			  /* Bank GPIOH */
1377d750c35SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
1387d750c35SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
1397d750c35SNeil Armstrong			  "J9 Header Pin37",
1407d750c35SNeil Armstrong			  "J9 Header Pin30",
1417d750c35SNeil Armstrong			  "J9 Header Pin29",
1427d750c35SNeil Armstrong			  "J9 Header Pin32",
1437d750c35SNeil Armstrong			  "J9 Header Pin31",
1447d750c35SNeil Armstrong			  /* Bank BOOT */
1457d750c35SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
1467d750c35SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
1477d750c35SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
1487d750c35SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
1497d750c35SNeil Armstrong			  /* Bank CARD */
1507d750c35SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
1517d750c35SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
1527d750c35SNeil Armstrong			  /* Bank GPIODV */
1537d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1547d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1557d750c35SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
1567d750c35SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
1577d750c35SNeil Armstrong			  /* Bank GPIOX */
1587d750c35SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
1597d750c35SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
1607d750c35SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
1617d750c35SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
1627d750c35SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
1637d750c35SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
1647d750c35SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
1657d750c35SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
1667d750c35SNeil Armstrong			  "Bluetooth WAKE HOST",
1677d750c35SNeil Armstrong			  /* Bank GPIOCLK */
1687d750c35SNeil Armstrong			  "", "J9 Header Pin39";
1697d750c35SNeil Armstrong};
1707d750c35SNeil Armstrong
1715ff2ee44SNeil Armstrong&pwm_AO_ab {
1725ff2ee44SNeil Armstrong	status = "okay";
1735ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
1745ff2ee44SNeil Armstrong	pinctrl-names = "default";
1755ff2ee44SNeil Armstrong	clocks = <&xtal> , <&xtal>;
1765ff2ee44SNeil Armstrong	clock-names = "clkin0", "clkin1" ;
1775ff2ee44SNeil Armstrong};
1785ff2ee44SNeil Armstrong
1795ff2ee44SNeil Armstrong&pwm_ef {
1805ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
1815ff2ee44SNeil Armstrong};
1825ff2ee44SNeil Armstrong
1835ff2ee44SNeil Armstrong&sd_emmc_a {
1845ff2ee44SNeil Armstrong	brcmf: wifi@1 {
1855ff2ee44SNeil Armstrong		reg = <1>;
1865ff2ee44SNeil Armstrong		compatible = "brcm,bcm4329-fmac";
1875ff2ee44SNeil Armstrong	};
1885ff2ee44SNeil Armstrong};
1895ff2ee44SNeil Armstrong
1905ff2ee44SNeil Armstrong/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
1915ff2ee44SNeil Armstrong&uart_AO {
1925ff2ee44SNeil Armstrong	status = "okay";
1935ff2ee44SNeil Armstrong};
1945ff2ee44SNeil Armstrong
1955ff2ee44SNeil Armstrong/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
1965ff2ee44SNeil Armstrong&uart_AO_B {
1975ff2ee44SNeil Armstrong	status = "okay";
1985ff2ee44SNeil Armstrong	pinctrl-0 = <&uart_ao_b_pins>;
1995ff2ee44SNeil Armstrong	pinctrl-names = "default";
2005ff2ee44SNeil Armstrong};
201