14549e789STom Rini// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
296e7b5a1SNeil Armstrong/*
396e7b5a1SNeil Armstrong * Copyright (c) 2017 BayLibre, SAS.
496e7b5a1SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
596e7b5a1SNeil Armstrong * Author: Jerome Brunet <jbrunet@baylibre.com>
696e7b5a1SNeil Armstrong */
796e7b5a1SNeil Armstrong
896e7b5a1SNeil Armstrong/dts-v1/;
996e7b5a1SNeil Armstrong
1096e7b5a1SNeil Armstrong#include <dt-bindings/input/input.h>
1196e7b5a1SNeil Armstrong
1296e7b5a1SNeil Armstrong#include "meson-gxl-s905x.dtsi"
1396e7b5a1SNeil Armstrong
1496e7b5a1SNeil Armstrong/ {
1596e7b5a1SNeil Armstrong	compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
168973d816SLoic Devulder	model = "Libre Computer Board AML-S905X-CC";
1796e7b5a1SNeil Armstrong
1896e7b5a1SNeil Armstrong	aliases {
1996e7b5a1SNeil Armstrong		serial0 = &uart_AO;
205b3da7faSNeil Armstrong		ethernet0 = &ethmac;
2196e7b5a1SNeil Armstrong	};
2296e7b5a1SNeil Armstrong
2396e7b5a1SNeil Armstrong	chosen {
2496e7b5a1SNeil Armstrong		stdout-path = "serial0:115200n8";
2596e7b5a1SNeil Armstrong	};
2696e7b5a1SNeil Armstrong
2796e7b5a1SNeil Armstrong	cvbs-connector {
2896e7b5a1SNeil Armstrong		compatible = "composite-video-connector";
2996e7b5a1SNeil Armstrong
3096e7b5a1SNeil Armstrong		port {
3196e7b5a1SNeil Armstrong			cvbs_connector_in: endpoint {
3296e7b5a1SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
3396e7b5a1SNeil Armstrong			};
3496e7b5a1SNeil Armstrong		};
3596e7b5a1SNeil Armstrong	};
3696e7b5a1SNeil Armstrong
3796e7b5a1SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
3896e7b5a1SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
3996e7b5a1SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
4096e7b5a1SNeil Armstrong	};
4196e7b5a1SNeil Armstrong
4296e7b5a1SNeil Armstrong	hdmi-connector {
4396e7b5a1SNeil Armstrong		compatible = "hdmi-connector";
4496e7b5a1SNeil Armstrong		type = "a";
4596e7b5a1SNeil Armstrong
4696e7b5a1SNeil Armstrong		port {
4796e7b5a1SNeil Armstrong			hdmi_connector_in: endpoint {
4896e7b5a1SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
4996e7b5a1SNeil Armstrong			};
5096e7b5a1SNeil Armstrong		};
5196e7b5a1SNeil Armstrong	};
5296e7b5a1SNeil Armstrong
5396e7b5a1SNeil Armstrong	leds {
5496e7b5a1SNeil Armstrong		compatible = "gpio-leds";
5596e7b5a1SNeil Armstrong
5696e7b5a1SNeil Armstrong		system {
5796e7b5a1SNeil Armstrong			label = "librecomputer:system-status";
5896e7b5a1SNeil Armstrong			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
5996e7b5a1SNeil Armstrong			default-state = "on";
6096e7b5a1SNeil Armstrong			panic-indicator;
6196e7b5a1SNeil Armstrong		};
6296e7b5a1SNeil Armstrong
6396e7b5a1SNeil Armstrong		blue {
6496e7b5a1SNeil Armstrong			label = "librecomputer:blue";
6596e7b5a1SNeil Armstrong			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
6696e7b5a1SNeil Armstrong			linux,default-trigger = "heartbeat";
6796e7b5a1SNeil Armstrong		};
6896e7b5a1SNeil Armstrong	};
6996e7b5a1SNeil Armstrong
7096e7b5a1SNeil Armstrong	memory@0 {
7196e7b5a1SNeil Armstrong		device_type = "memory";
7296e7b5a1SNeil Armstrong		reg = <0x0 0x0 0x0 0x80000000>;
7396e7b5a1SNeil Armstrong	};
7496e7b5a1SNeil Armstrong
757d750c35SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
767d750c35SNeil Armstrong		compatible = "regulator-fixed";
777d750c35SNeil Armstrong
787d750c35SNeil Armstrong		regulator-name = "HDMI_5V";
797d750c35SNeil Armstrong		regulator-min-microvolt = <5000000>;
807d750c35SNeil Armstrong		regulator-max-microvolt = <5000000>;
817d750c35SNeil Armstrong
827d750c35SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
837d750c35SNeil Armstrong		enable-active-high;
847d750c35SNeil Armstrong		regulator-always-on;
857d750c35SNeil Armstrong	};
867d750c35SNeil Armstrong
8796e7b5a1SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
8896e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
8996e7b5a1SNeil Armstrong		regulator-name = "VCC_3V3";
9096e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
9196e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
9296e7b5a1SNeil Armstrong	};
9396e7b5a1SNeil Armstrong
9496e7b5a1SNeil Armstrong	vcc_card: regulator-vcc-card {
9596e7b5a1SNeil Armstrong		compatible = "regulator-gpio";
9696e7b5a1SNeil Armstrong
9796e7b5a1SNeil Armstrong		regulator-name = "VCC_CARD";
9896e7b5a1SNeil Armstrong		regulator-min-microvolt = <1800000>;
9996e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
10096e7b5a1SNeil Armstrong
10196e7b5a1SNeil Armstrong		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
10296e7b5a1SNeil Armstrong		gpios-states = <0>;
10396e7b5a1SNeil Armstrong
10496e7b5a1SNeil Armstrong		states = <3300000 0>,
10596e7b5a1SNeil Armstrong			 <1800000 1>;
1067d750c35SNeil Armstrong
1077d750c35SNeil Armstrong		regulator-settling-time-up-us = <200>;
1087d750c35SNeil Armstrong		regulator-settling-time-down-us = <50000>;
1097d750c35SNeil Armstrong	};
1107d750c35SNeil Armstrong
1117d750c35SNeil Armstrong	vddio_ao18: regulator-vddio_ao18 {
1127d750c35SNeil Armstrong		compatible = "regulator-fixed";
1137d750c35SNeil Armstrong		regulator-name = "VDDIO_AO18";
1147d750c35SNeil Armstrong		regulator-min-microvolt = <1800000>;
1157d750c35SNeil Armstrong		regulator-max-microvolt = <1800000>;
11696e7b5a1SNeil Armstrong	};
11796e7b5a1SNeil Armstrong
11896e7b5a1SNeil Armstrong	vddio_boot: regulator-vddio_boot {
11996e7b5a1SNeil Armstrong		compatible = "regulator-fixed";
12096e7b5a1SNeil Armstrong		regulator-name = "VDDIO_BOOT";
12196e7b5a1SNeil Armstrong		regulator-min-microvolt = <3300000>;
12296e7b5a1SNeil Armstrong		regulator-max-microvolt = <3300000>;
12396e7b5a1SNeil Armstrong	};
12496e7b5a1SNeil Armstrong};
12596e7b5a1SNeil Armstrong
1267d750c35SNeil Armstrong&cec_AO {
1277d750c35SNeil Armstrong	status = "okay";
1287d750c35SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
1297d750c35SNeil Armstrong	pinctrl-names = "default";
1307d750c35SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
1317d750c35SNeil Armstrong};
1327d750c35SNeil Armstrong
13396e7b5a1SNeil Armstrong&cvbs_vdac_port {
13496e7b5a1SNeil Armstrong	cvbs_vdac_out: endpoint {
13596e7b5a1SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
13696e7b5a1SNeil Armstrong	};
13796e7b5a1SNeil Armstrong};
13896e7b5a1SNeil Armstrong
13996e7b5a1SNeil Armstrong&ethmac {
14096e7b5a1SNeil Armstrong	status = "okay";
14196e7b5a1SNeil Armstrong};
14296e7b5a1SNeil Armstrong
1437d750c35SNeil Armstrong&internal_phy {
1447d750c35SNeil Armstrong	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
1457d750c35SNeil Armstrong	pinctrl-names = "default";
1467d750c35SNeil Armstrong};
1477d750c35SNeil Armstrong
14896e7b5a1SNeil Armstrong&ir {
14996e7b5a1SNeil Armstrong	status = "okay";
15096e7b5a1SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
15196e7b5a1SNeil Armstrong	pinctrl-names = "default";
15296e7b5a1SNeil Armstrong};
15396e7b5a1SNeil Armstrong
15496e7b5a1SNeil Armstrong&hdmi_tx {
15596e7b5a1SNeil Armstrong	status = "okay";
15696e7b5a1SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
15796e7b5a1SNeil Armstrong	pinctrl-names = "default";
158*bce59f91SNeil Armstrong	hdmi-supply = <&hdmi_5v>;
15996e7b5a1SNeil Armstrong};
16096e7b5a1SNeil Armstrong
16196e7b5a1SNeil Armstrong&hdmi_tx_tmds_port {
16296e7b5a1SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
16396e7b5a1SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
16496e7b5a1SNeil Armstrong	};
16596e7b5a1SNeil Armstrong};
16696e7b5a1SNeil Armstrong
1677d750c35SNeil Armstrong&pinctrl_aobus {
1687d750c35SNeil Armstrong	gpio-line-names = "UART TX",
1697d750c35SNeil Armstrong			  "UART RX",
1707d750c35SNeil Armstrong			  "Blue LED",
1717d750c35SNeil Armstrong			  "SDCard Voltage Switch",
1727d750c35SNeil Armstrong			  "7J1 Header Pin5",
1737d750c35SNeil Armstrong			  "7J1 Header Pin3",
1747d750c35SNeil Armstrong			  "7J1 Header Pin12",
1757d750c35SNeil Armstrong			  "IR In",
1767d750c35SNeil Armstrong			  "9J3 Switch HDMI CEC/7J1 Header Pin11",
1777d750c35SNeil Armstrong			  "7J1 Header Pin13",
1787d750c35SNeil Armstrong			  /* GPIO_TEST_N */
1797d750c35SNeil Armstrong			  "7J1 Header Pin15";
1807d750c35SNeil Armstrong};
1817d750c35SNeil Armstrong
1827d750c35SNeil Armstrong&pinctrl_periphs {
1837d750c35SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
1847d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1857d750c35SNeil Armstrong			  "", "", "", "", "", "", "",
1867d750c35SNeil Armstrong			  "Eth Link LED", "Eth Activity LED",
1877d750c35SNeil Armstrong			  /* Bank GPIOH */
1887d750c35SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
1897d750c35SNeil Armstrong			  "HDMI_5V_EN", "9J1 Header Pin2",
1907d750c35SNeil Armstrong			  "Analog Audio Mute",
1917d750c35SNeil Armstrong			  "2J3 Header Pin6",
1927d750c35SNeil Armstrong			  "2J3 Header Pin5",
1937d750c35SNeil Armstrong			  "2J3 Header Pin4",
1947d750c35SNeil Armstrong			  "2J3 Header Pin3",
1957d750c35SNeil Armstrong			  /* Bank BOOT */
1967d750c35SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
1977d750c35SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
1987d750c35SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
1997d750c35SNeil Armstrong			  "ALT BOOT MODE", "", "", "", "eMMC Data Strobe",
2007d750c35SNeil Armstrong			  /* Bank CARD */
2017d750c35SNeil Armstrong			  "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
2027d750c35SNeil Armstrong			  "SDCard D3", "SDCard D2", "SDCard Det",
2037d750c35SNeil Armstrong			  /* Bank GPIODV */
2047d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
2057d750c35SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
2067d750c35SNeil Armstrong			  "Green LED", "VCCK Enable",
2077d750c35SNeil Armstrong			  "7J1 Header Pin27", "7J1 Header Pin28",
2087d750c35SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
2097d750c35SNeil Armstrong			  /* Bank GPIOX */
2107d750c35SNeil Armstrong			  "7J1 Header Pin22", "7J1 Header Pin26",
2117d750c35SNeil Armstrong			  "7J1 Header Pin36", "7J1 Header Pin38",
2127d750c35SNeil Armstrong			  "7J1 Header Pin40", "7J1 Header Pin37",
2137d750c35SNeil Armstrong			  "7J1 Header Pin33", "7J1 Header Pin35",
2147d750c35SNeil Armstrong			  "7J1 Header Pin19", "7J1 Header Pin21",
2157d750c35SNeil Armstrong			  "7J1 Header Pin24", "7J1 Header Pin23",
2167d750c35SNeil Armstrong			  "7J1 Header Pin8", "7J1 Header Pin10",
2177d750c35SNeil Armstrong			  "7J1 Header Pin16", "7J1 Header Pin18",
2187d750c35SNeil Armstrong			  "7J1 Header Pin32", "7J1 Header Pin29",
2197d750c35SNeil Armstrong			  "7J1 Header Pin31",
2207d750c35SNeil Armstrong			  /* Bank GPIOCLK */
2217d750c35SNeil Armstrong			  "7J1 Header Pin7", "";
2227d750c35SNeil Armstrong};
2237d750c35SNeil Armstrong
2247d750c35SNeil Armstrong&saradc {
2257d750c35SNeil Armstrong	status = "okay";
2267d750c35SNeil Armstrong	vref-supply = <&vddio_ao18>;
2277d750c35SNeil Armstrong};
2287d750c35SNeil Armstrong
22996e7b5a1SNeil Armstrong/* SD card */
23096e7b5a1SNeil Armstrong&sd_emmc_b {
23196e7b5a1SNeil Armstrong	status = "okay";
23296e7b5a1SNeil Armstrong	pinctrl-0 = <&sdcard_pins>;
2337d750c35SNeil Armstrong	pinctrl-1 = <&sdcard_clk_gate_pins>;
2347d750c35SNeil Armstrong	pinctrl-names = "default", "clk-gate";
23596e7b5a1SNeil Armstrong
23696e7b5a1SNeil Armstrong	bus-width = <4>;
23796e7b5a1SNeil Armstrong	cap-sd-highspeed;
23896e7b5a1SNeil Armstrong	max-frequency = <100000000>;
23996e7b5a1SNeil Armstrong	disable-wp;
24096e7b5a1SNeil Armstrong
24196e7b5a1SNeil Armstrong	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
24296e7b5a1SNeil Armstrong	cd-inverted;
24396e7b5a1SNeil Armstrong
24496e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
24596e7b5a1SNeil Armstrong	vqmmc-supply = <&vcc_card>;
24696e7b5a1SNeil Armstrong};
24796e7b5a1SNeil Armstrong
24896e7b5a1SNeil Armstrong/* eMMC */
24996e7b5a1SNeil Armstrong&sd_emmc_c {
25096e7b5a1SNeil Armstrong	status = "okay";
2517d750c35SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
2527d750c35SNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
2537d750c35SNeil Armstrong	pinctrl-names = "default", "clk-gate";
25496e7b5a1SNeil Armstrong
25596e7b5a1SNeil Armstrong	bus-width = <8>;
25696e7b5a1SNeil Armstrong	cap-mmc-highspeed;
2577d750c35SNeil Armstrong	mmc-ddr-3_3v;
25896e7b5a1SNeil Armstrong	max-frequency = <50000000>;
25996e7b5a1SNeil Armstrong	non-removable;
26096e7b5a1SNeil Armstrong	disable-wp;
26196e7b5a1SNeil Armstrong
26296e7b5a1SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
26396e7b5a1SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
26496e7b5a1SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
26596e7b5a1SNeil Armstrong};
26696e7b5a1SNeil Armstrong
26796e7b5a1SNeil Armstrong&uart_AO {
26896e7b5a1SNeil Armstrong	status = "okay";
26996e7b5a1SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
27096e7b5a1SNeil Armstrong	pinctrl-names = "default";
27196e7b5a1SNeil Armstrong};
2725b3da7faSNeil Armstrong
2735b3da7faSNeil Armstrong&usb0 {
2745b3da7faSNeil Armstrong	status = "okay";
2755b3da7faSNeil Armstrong};
2765b3da7faSNeil Armstrong
2775b3da7faSNeil Armstrong&usb2_phy0 {
2785b3da7faSNeil Armstrong	/*
2795b3da7faSNeil Armstrong	 * even though the schematics don't show it:
2805b3da7faSNeil Armstrong	 * HDMI_5V is also used as supply for the USB VBUS.
2815b3da7faSNeil Armstrong	 */
2825b3da7faSNeil Armstrong	phy-supply = <&hdmi_5v>;
2835b3da7faSNeil Armstrong};
284