// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2017 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
 */

/dts-v1/;

#include "meson-gxl-s905x-p212.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/sound/meson-aiu.h>

/ {
	compatible = "khadas,vim", "amlogic,s905x", "amlogic,meson-gxl";
	model = "Khadas VIM";

	adc-keys {
		compatible = "adc-keys";
		io-channels = <&saradc 0>;
		io-channel-names = "buttons";
		keyup-threshold-microvolt = <1710000>;

		button-function {
			label = "Function";
			linux,code = <KEY_FN>;
			press-threshold-microvolt = <10000>;
		};
	};

	aliases {
		serial2 = &uart_AO_B;
		ethernet0 = &ethmac;
	};

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		poll-interval = <100>;

		power-button {
			label = "power";
			linux,code = <KEY_POWER>;
			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_LOW>;
		};
	};

	led-controller {
		compatible = "pwm-leds";

		led-1 {
			label = "vim:red:power";
			pwms = <&pwm_AO_ab 1 7812500 0>;
			max-brightness = <255>;
			linux,default-trigger = "default-on";
		};
	};

	hdmi-connector {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&hdmi_tx_tmds_out>;
			};
		};
	};

	sound {
		compatible = "amlogic,gx-sound-card";
		model = "KHADAS-VIM";
		assigned-clocks = <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>,
				  <&clkc CLKID_MPLL2>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;

		dai-link-0 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
		};

		dai-link-1 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
			dai-format = "i2s";
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
			};
		};

		dai-link-2 {
			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;

			codec-0 {
				sound-dai = <&hdmi_tx>;
			};
		};
	};
};

&aiu {
	status = "okay";
};

&cec_AO {
	status = "okay";
	pinctrl-0 = <&ao_cec_pins>;
	pinctrl-names = "default";
	hdmi-phandle = <&hdmi_tx>;
};

&hdmi_tx {
	status = "okay";
	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
	pinctrl-names = "default";
	hdmi-supply = <&hdmi_5v>;
};

&hdmi_tx_tmds_port {
	hdmi_tx_tmds_out: endpoint {
		remote-endpoint = <&hdmi_connector_in>;
	};
};

&i2c_A {
	status = "okay";
	pinctrl-0 = <&i2c_a_pins>;
	pinctrl-names = "default";
};

&i2c_B {
	status = "okay";
	pinctrl-0 = <&i2c_b_pins>;
	pinctrl-names = "default";

	rtc: rtc@51 {
		status = "okay";
		compatible = "haoyu,hym8563";
		reg = <0x51>;
		#clock-cells = <0>;
		clock-output-names = "xin32k";
	};
};

&ir {
	linux,rc-map-name = "rc-khadas";
};

&gpio_ao {
	gpio-line-names = "UART TX",
			  "UART RX",
			  "Power Key In",
			  "J9 Header Pin35",
			  "J9 Header Pin16",
			  "J9 Header Pin15",
			  "J9 Header Pin33",
			  "IR In",
			  "HDMI CEC",
			  "SYS LED",
			  /* GPIO_TEST_N */
			  "";
};

&gpio {
	gpio-line-names = /* Bank GPIOZ */
			  "", "", "", "", "", "", "",
			  "", "", "", "", "", "", "",
			  "Power OFF",
			  "VCCK Enable",
			  /* Bank GPIOH */
			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
			  "HDMI_5V_EN", "SPDIF",
			  "J9 Header Pin37",
			  "J9 Header Pin30",
			  "J9 Header Pin29",
			  "J9 Header Pin32",
			  "J9 Header Pin31",
			  /* Bank BOOT */
			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
			  "", "BOOT_MODE", "", "", "eMMC Data Strobe",
			  /* Bank CARD */
			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
			  "SDCard D3", "SDCard D2", "SDCard Det",
			  /* Bank GPIODV */
			  "", "", "", "", "", "", "", "", "", "", "", "",
			  "", "", "", "", "", "", "", "", "", "", "", "",
			  "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
			  "VCCK Regulator", "VDDEE Regulator",
			  /* Bank GPIOX */
			  "WIFI SDIO D0", "WIFI SDIO D1", "WIFI SDIO D2",
			  "WIFI SDIO D3", "WIFI SDIO CLK", "WIFI SDIO CMD",
			  "WIFI Power Enable", "WIFI WAKE HOST",
			  "Bluetooth PCM DOUT", "Bluetooth PCM DIN",
			  "Bluetooth PCM SYNC", "Bluetooth PCM CLK",
			  "Bluetooth UART TX", "Bluetooth UART RX",
			  "Bluetooth UART CTS", "Bluetooth UART RTS",
			  "WIFI 32K", "Bluetooth Enable",
			  "Bluetooth WAKE HOST",
			  /* Bank GPIOCLK */
			  "", "J9 Header Pin39";
};

&pwm_AO_ab {
	status = "okay";
	pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
	pinctrl-names = "default";
	clocks = <&xtal> , <&xtal>;
	clock-names = "clkin0", "clkin1" ;
};

&pwm_ef {
	pinctrl-0 = <&pwm_e_pins>, <&pwm_f_clk_pins>;
};

&sd_emmc_a {
	max-frequency = <100000000>;
};

/* This is brought out on the Linux_RX (18) and Linux_TX (19) pins: */
&uart_AO {
	status = "okay";
};

/* This is brought out on the UART_RX_AO_B (15) and UART_TX_AO_B (16) pins: */
&uart_AO_B {
	status = "okay";
	pinctrl-0 = <&uart_ao_b_pins>;
	pinctrl-names = "default";
};

&usb {
	dr_mode = "peripheral";
};
