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

/dts-v1/;

#include <dt-bindings/input/input.h>

#include "meson-gxl-s905x.dtsi"

/ {
	compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
	model = "Libre Technology CC";

	aliases {
		serial0 = &uart_AO;
	};

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

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

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

	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_boot: regulator-vddio_boot {
		compatible = "regulator-fixed";
		regulator-name = "VDDIO_BOOT";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};
};

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

&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_tx_tmds_port {
	hdmi_tx_tmds_out: endpoint {
		remote-endpoint = <&hdmi_connector_in>;
	};
};

&pinctrl_aobus {
	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";
};

&pinctrl_periphs {
	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", "",
			  /* GPIO_TEST_N */
			  "7J1 Header Pin15";
};

/* 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;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	max-frequency = <100000000>;
	disable-wp;

	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
	cd-inverted;

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

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

	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-ddr-3_3v;
	max-frequency = <50000000>;
	non-removable;
	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";
};
