// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2017 BayLibre, SAS.
 * Author: Neil Armstrong <narmstrong@baylibre.com>
 * Author: Jerome Brunet <jbrunet@baylibre.com>
 */

/dts-v1/;

#include <dt-bindings/input/input.h>
#include <dt-bindings/sound/meson-aiu.h>

#include "meson-gxl-s905x.dtsi"

/ {
	compatible = "libretech,aml-s905x-cc", "amlogic,s905x",
		     "amlogic,meson-gxl";
	model = "Libre Computer AML-S905X-CC";

	aliases {
		serial0 = &uart_AO;
		ethernet0 = &ethmac;
	};

	dio2133: analog-amplifier {
		compatible = "simple-audio-amplifier";
		sound-name-prefix = "AU2";
		VCC-supply = <&hdmi_5v>;
		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	cvbs-connector {
		compatible = "composite-video-connector";

		port {
			cvbs_connector_in: endpoint {
				remote-endpoint = <&cvbs_vdac_out>;
			};
		};
	};

	emmc_pwrseq: emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
	};

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

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

	leds {
		compatible = "gpio-leds";

		led-system {
			label = "librecomputer:system-status";
			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
			default-state = "on";
			panic-indicator;
		};

		led-blue {
			label = "librecomputer:blue";
			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x80000000>;
	};

	hdmi_5v: regulator-hdmi-5v {
		compatible = "regulator-fixed";

		regulator-name = "HDMI_5V";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;

		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
		enable-active-high;
		regulator-always-on;
	};

	vcc_3v3: regulator-vcc_3v3 {
		compatible = "regulator-fixed";
		regulator-name = "VCC_3V3";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	vcc_card: regulator-vcc-card {
		compatible = "regulator-gpio";

		regulator-name = "VCC_CARD";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;

		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
		gpios-states = <0>;

		states = <3300000 0>,
			 <1800000 1>;

		regulator-settling-time-up-us = <200>;
		regulator-settling-time-down-us = <50000>;
	};

	vddio_ao18: regulator-vddio_ao18 {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_AO18";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	/* This is provided by LDOs on the eMMC daugther card */
	vddio_boot: regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		vin-supply = <&vcc_3v3>;
	};

	sound {
		compatible = "amlogic,gx-sound-card";
		model = "LIBRETECH-CC";
		audio-aux-devs = <&dio2133>;
		audio-widgets = "Line", "Lineout";
		audio-routing = "AU2 INL", "ACODEC LOLN",
				"AU2 INR", "ACODEC LORN",
				"Lineout", "AU2 OUTL",
				"Lineout", "AU2 OUTR";
		assigned-clocks = <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>,
				  <&clkc CLKID_MPLL2>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;
		status = "okay";

		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>;
			};

			codec-1 {
				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
			};
		};

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

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

		dai-link-3 {
			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;

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

&acodec {
	AVDD-supply = <&vddio_ao18>;
	status = "okay";
};

&aiu {
	status = "okay";
};

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

&cvbs_vdac_port {
	cvbs_vdac_out: endpoint {
		remote-endpoint = <&cvbs_connector_in>;
	};
};

&ethmac {
	status = "okay";
};

&internal_phy {
	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
	pinctrl-names = "default";
};

&ir {
	status = "okay";
	pinctrl-0 = <&remote_input_ao_pins>;
	pinctrl-names = "default";
};

&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>;
	};
};

&gpio_ao {
	gpio-line-names = "UART TX",
			  "UART RX",
			  "Blue LED",
			  "SDCard Voltage Switch",
			  "7J1 Header Pin5",
			  "7J1 Header Pin3",
			  "7J1 Header Pin12",
			  "IR In",
			  "9J3 Switch HDMI CEC/7J1 Header Pin11",
			  "7J1 Header Pin13",
			  /* GPIO_TEST_N */
			  "7J1 Header Pin15";
};

&gpio {
	gpio-line-names = /* Bank GPIOZ */
			  "", "", "", "", "", "", "",
			  "", "", "", "", "", "", "",
			  "Eth Link LED", "Eth Activity LED",
			  /* Bank GPIOH */
			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
			  "HDMI_5V_EN", "9J1 Header Pin2",
			  "Analog Audio Mute",
			  "2J3 Header Pin6",
			  "2J3 Header Pin5",
			  "2J3 Header Pin4",
			  "2J3 Header Pin3",
			  /* Bank BOOT */
			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
			  "ALT BOOT MODE", "", "", "", "eMMC Data Strobe",
			  /* Bank CARD */
			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
			  "SDCard D3", "SDCard D2", "SDCard Det",
			  /* Bank GPIODV */
			  "", "", "", "", "", "", "", "", "", "", "", "",
			  "", "", "", "", "", "", "", "", "", "", "", "",
			  "Green LED", "VCCK Enable",
			  "7J1 Header Pin27", "7J1 Header Pin28",
			  "VCCK Regulator", "VDDEE Regulator",
			  /* Bank GPIOX */
			  "7J1 Header Pin22", "7J1 Header Pin26",
			  "7J1 Header Pin36", "7J1 Header Pin38",
			  "7J1 Header Pin40", "7J1 Header Pin37",
			  "7J1 Header Pin33", "7J1 Header Pin35",
			  "7J1 Header Pin19", "7J1 Header Pin21",
			  "7J1 Header Pin24", "7J1 Header Pin23",
			  "7J1 Header Pin8", "7J1 Header Pin10",
			  "7J1 Header Pin16", "7J1 Header Pin18",
			  "7J1 Header Pin32", "7J1 Header Pin29",
			  "7J1 Header Pin31",
			  /* Bank GPIOCLK */
			  "7J1 Header Pin7", "";
};

&saradc {
	status = "okay";
	vref-supply = <&vddio_ao18>;
};

/* SD card */
&sd_emmc_b {
	status = "okay";
	pinctrl-0 = <&sdcard_pins>;
	pinctrl-1 = <&sdcard_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <4>;
	cap-sd-highspeed;
	max-frequency = <50000000>;
	disable-wp;

	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;

	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&vcc_card>;
};

/* eMMC */
&sd_emmc_c {
	status = "okay";
	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
	pinctrl-1 = <&emmc_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	max-frequency = <200000000>;
	disable-wp;

	mmc-pwrseq = <&emmc_pwrseq>;
	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&vddio_boot>;
};

&uart_AO {
	status = "okay";
	pinctrl-0 = <&uart_ao_a_pins>;
	pinctrl-names = "default";
};

&usb {
	status = "okay";
	dr_mode = "host";
};

&usb2_phy0 {
	/*
	 * even though the schematics don't show it:
	 * HDMI_5V is also used as supply for the USB VBUS.
	 */
	phy-supply = <&hdmi_5v>;
};
