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;
315b3da7faSNeil 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";
81*bce59f91SNeil Armstrong	hdmi-supply = <&hdmi_5v>;
825ff2ee44SNeil Armstrong};
835ff2ee44SNeil Armstrong
845ff2ee44SNeil Armstrong&hdmi_tx_tmds_port {
855ff2ee44SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
865ff2ee44SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
875ff2ee44SNeil Armstrong	};
885ff2ee44SNeil Armstrong};
895ff2ee44SNeil Armstrong
905ff2ee44SNeil Armstrong&i2c_A {
915ff2ee44SNeil Armstrong	status = "okay";
925ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_a_pins>;
935ff2ee44SNeil Armstrong	pinctrl-names = "default";
945ff2ee44SNeil Armstrong};
955ff2ee44SNeil Armstrong
965ff2ee44SNeil Armstrong&i2c_B {
975ff2ee44SNeil Armstrong	status = "okay";
985ff2ee44SNeil Armstrong	pinctrl-0 = <&i2c_b_pins>;
995ff2ee44SNeil Armstrong	pinctrl-names = "default";
1005ff2ee44SNeil Armstrong
1015ff2ee44SNeil Armstrong	rtc: rtc@51 {
1025ff2ee44SNeil Armstrong		/* has to be enabled manually when a battery is connected: */
1035ff2ee44SNeil Armstrong		status = "disabled";
1045ff2ee44SNeil Armstrong		compatible = "haoyu,hym8563";
1055ff2ee44SNeil Armstrong		reg = <0x51>;
1065ff2ee44SNeil Armstrong		#clock-cells = <0>;
1075ff2ee44SNeil Armstrong		clock-frequency = <32768>;
1085ff2ee44SNeil Armstrong		clock-output-names = "xin32k";
1095ff2ee44SNeil Armstrong	};
1105ff2ee44SNeil Armstrong};
1115ff2ee44SNeil Armstrong
1125ff2ee44SNeil Armstrong&ir {
1135ff2ee44SNeil Armstrong	linux,rc-map-name = "rc-geekbox";
1145ff2ee44SNeil Armstrong};
1155ff2ee44SNeil Armstrong
1167d750c35SNeil Armstrong&pinctrl_aobus {
1177d750c35SNeil Armstrong	gpio-line-names = "UART TX",
1187d750c35SNeil Armstrong			  "UART RX",
1197d750c35SNeil Armstrong			  "Power Key In",
1207d750c35SNeil Armstrong			  "J9 Header Pin35",
1217d750c35SNeil Armstrong			  "J9 Header Pin16",
1227d750c35SNeil Armstrong			  "J9 Header Pin15",
1237d750c35SNeil Armstrong			  "J9 Header Pin33",
1247d750c35SNeil Armstrong			  "IR In",
1257d750c35SNeil Armstrong			  "HDMI CEC",
1267d750c35SNeil Armstrong			  "SYS LED",
1277d750c35SNeil Armstrong			  /* GPIO_TEST_N */
1287d750c35SNeil Armstrong			  "";
1297d750c35SNeil Armstrong};
1307d750c35SNeil Armstrong
1317d750c35SNeil Armstrong&pinctrl_periphs {
1327d750c35SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
1337d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1347d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1357d750c35SNeil Armstrong			  "Power OFF",
1367d750c35SNeil Armstrong			  "VCCK Enable",
1377d750c35SNeil Armstrong			  /* Bank GPIOH */
1387d750c35SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
1397d750c35SNeil Armstrong			  "HDMI_5V_EN", "SPDIF",
1407d750c35SNeil Armstrong			  "J9 Header Pin37",
1417d750c35SNeil Armstrong			  "J9 Header Pin30",
1427d750c35SNeil Armstrong			  "J9 Header Pin29",
1437d750c35SNeil Armstrong			  "J9 Header Pin32",
1447d750c35SNeil Armstrong			  "J9 Header Pin31",
1457d750c35SNeil Armstrong			  /* Bank BOOT */
1467d750c35SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
1477d750c35SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
1487d750c35SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
1497d750c35SNeil Armstrong			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
1507d750c35SNeil Armstrong			  /* Bank CARD */
1517d750c35SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
1527d750c35SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
1537d750c35SNeil Armstrong			  /* Bank GPIODV */
1547d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1557d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1567d750c35SNeil Armstrong			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
1577d750c35SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
1587d750c35SNeil Armstrong			  /* Bank GPIOX */
1597d750c35SNeil Armstrong			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
1607d750c35SNeil Armstrong			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
1617d750c35SNeil Armstrong			  "WIFI Power Enable", "WIFI WAKE HOST",
1627d750c35SNeil Armstrong			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
1637d750c35SNeil Armstrong			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
1647d750c35SNeil Armstrong			  "Bluetooth UART TX", "Bluetooth UART RX",
1657d750c35SNeil Armstrong			  "Bluetooth UART CTS", "Bluetooth UART RTS",
1667d750c35SNeil Armstrong			  "WIFI 32K", "Bluetooth Enable",
1677d750c35SNeil Armstrong			  "Bluetooth WAKE HOST",
1687d750c35SNeil Armstrong			  /* Bank GPIOCLK */
1697d750c35SNeil Armstrong			  "", "J9 Header Pin39";
1707d750c35SNeil Armstrong};
1717d750c35SNeil Armstrong
1725ff2ee44SNeil Armstrong&pwm_AO_ab {
1735ff2ee44SNeil Armstrong	status = "okay";
1745ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
1755ff2ee44SNeil Armstrong	pinctrl-names = "default";
1765ff2ee44SNeil Armstrong	clocks = <&xtal> , <&xtal>;
1775ff2ee44SNeil Armstrong	clock-names = "clkin0", "clkin1" ;
1785ff2ee44SNeil Armstrong};
1795ff2ee44SNeil Armstrong
1805ff2ee44SNeil Armstrong&pwm_ef {
1815ff2ee44SNeil Armstrong	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
1825ff2ee44SNeil Armstrong};
1835ff2ee44SNeil Armstrong
1845ff2ee44SNeil Armstrong&sd_emmc_a {
1855ff2ee44SNeil Armstrong	brcmf: wifi@1 {
1865ff2ee44SNeil Armstrong		reg = <1>;
1875ff2ee44SNeil Armstrong		compatible = "brcm,bcm4329-fmac";
1885ff2ee44SNeil Armstrong	};
1895ff2ee44SNeil Armstrong};
1905ff2ee44SNeil Armstrong
1915ff2ee44SNeil Armstrong/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
1925ff2ee44SNeil Armstrong&uart_AO {
1935ff2ee44SNeil Armstrong	status = "okay";
1945ff2ee44SNeil Armstrong};
1955ff2ee44SNeil Armstrong
1965ff2ee44SNeil Armstrong/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
1975ff2ee44SNeil Armstrong&uart_AO_B {
1985ff2ee44SNeil Armstrong	status = "okay";
1995ff2ee44SNeil Armstrong	pinctrl-0 = <&uart_ao_b_pins>;
2005ff2ee44SNeil Armstrong	pinctrl-names = "default";
2015ff2ee44SNeil Armstrong};
202