10449b8e3SNeil Armstrong// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
20449b8e3SNeil Armstrong/*
30449b8e3SNeil Armstrong * Copyright (c) 2018 BayLibre, SAS.
40449b8e3SNeil Armstrong * Author: Neil Armstrong <narmstrong@baylibre.com>
50449b8e3SNeil Armstrong * Author: Jerome Brunet <jbrunet@baylibre.com>
60449b8e3SNeil Armstrong */
70449b8e3SNeil Armstrong
80449b8e3SNeil Armstrong/dts-v1/;
90449b8e3SNeil Armstrong
100449b8e3SNeil Armstrong#include <dt-bindings/input/input.h>
110449b8e3SNeil Armstrong
120449b8e3SNeil Armstrong#include "meson-gxl-s905x.dtsi"
130449b8e3SNeil Armstrong
140449b8e3SNeil Armstrong/ {
150449b8e3SNeil Armstrong	compatible = "libretech,aml-s805x-ac", "amlogic,s805x",
160449b8e3SNeil Armstrong		     "amlogic,meson-gxl";
17b1ae8ca5SChristian Hewitt	model = "Libre Computer AML-S805X-AC";
180449b8e3SNeil Armstrong
190449b8e3SNeil Armstrong	aliases {
200449b8e3SNeil Armstrong		serial0 = &uart_AO;
210449b8e3SNeil Armstrong		ethernet0 = &ethmac;
220449b8e3SNeil Armstrong		spi0 = &spifc;
230449b8e3SNeil Armstrong	};
240449b8e3SNeil Armstrong
250449b8e3SNeil Armstrong	chosen {
260449b8e3SNeil Armstrong		stdout-path = "serial0:115200n8";
270449b8e3SNeil Armstrong	};
280449b8e3SNeil Armstrong
290449b8e3SNeil Armstrong	cvbs-connector {
300449b8e3SNeil Armstrong		/*
310449b8e3SNeil Armstrong		 * The pads are present but no connector is soldered on
320449b8e3SNeil Armstrong		 * 2J2, so keep this off by default.
330449b8e3SNeil Armstrong		 */
340449b8e3SNeil Armstrong		status = "disabled";
350449b8e3SNeil Armstrong		compatible = "composite-video-connector";
360449b8e3SNeil Armstrong
370449b8e3SNeil Armstrong		port {
380449b8e3SNeil Armstrong			cvbs_connector_in: endpoint {
390449b8e3SNeil Armstrong				remote-endpoint = <&cvbs_vdac_out>;
400449b8e3SNeil Armstrong			};
410449b8e3SNeil Armstrong		};
420449b8e3SNeil Armstrong	};
430449b8e3SNeil Armstrong
440449b8e3SNeil Armstrong	dc_5v: regulator-dc_5v {
450449b8e3SNeil Armstrong		compatible = "regulator-fixed";
460449b8e3SNeil Armstrong		regulator-name = "DC_5V";
470449b8e3SNeil Armstrong		regulator-min-microvolt = <5000000>;
480449b8e3SNeil Armstrong		regulator-max-microvolt = <5000000>;
490449b8e3SNeil Armstrong		regulator-always-on;
500449b8e3SNeil Armstrong	};
510449b8e3SNeil Armstrong
520449b8e3SNeil Armstrong	emmc_pwrseq: emmc-pwrseq {
530449b8e3SNeil Armstrong		compatible = "mmc-pwrseq-emmc";
540449b8e3SNeil Armstrong		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
550449b8e3SNeil Armstrong	};
560449b8e3SNeil Armstrong
570449b8e3SNeil Armstrong	hdmi-connector {
580449b8e3SNeil Armstrong		compatible = "hdmi-connector";
590449b8e3SNeil Armstrong		type = "a";
600449b8e3SNeil Armstrong
610449b8e3SNeil Armstrong		port {
620449b8e3SNeil Armstrong			hdmi_connector_in: endpoint {
630449b8e3SNeil Armstrong				remote-endpoint = <&hdmi_tx_tmds_out>;
640449b8e3SNeil Armstrong			};
650449b8e3SNeil Armstrong		};
660449b8e3SNeil Armstrong	};
670449b8e3SNeil Armstrong
680449b8e3SNeil Armstrong	memory@0 {
690449b8e3SNeil Armstrong		device_type = "memory";
700449b8e3SNeil Armstrong		reg = <0x0 0x0 0x0 0x20000000>;
710449b8e3SNeil Armstrong	};
720449b8e3SNeil Armstrong
730449b8e3SNeil Armstrong	vcck: regulator-vcck {
740449b8e3SNeil Armstrong		compatible = "regulator-fixed";
750449b8e3SNeil Armstrong		regulator-name = "VCCK";
760449b8e3SNeil Armstrong		regulator-min-microvolt = <3300000>;
770449b8e3SNeil Armstrong		regulator-max-microvolt = <3300000>;
780449b8e3SNeil Armstrong		vin-supply = <&dc_5v>;
790449b8e3SNeil Armstrong
800449b8e3SNeil Armstrong		/*
810449b8e3SNeil Armstrong		 * This is controlled by GPIOAO_9 we reserve this but
820449b8e3SNeil Armstrong		 * claiming it as done below reset the board anyway
830449b8e3SNeil Armstrong		 * Need to investigate this
840449b8e3SNeil Armstrong		 *
850449b8e3SNeil Armstrong		 * gpio = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
860449b8e3SNeil Armstrong		 * enable-active-high;
870449b8e3SNeil Armstrong		 */
880449b8e3SNeil Armstrong		regulator-always-on;
890449b8e3SNeil Armstrong	};
900449b8e3SNeil Armstrong
910449b8e3SNeil Armstrong	vcc_3v3: regulator-vcc_3v3 {
920449b8e3SNeil Armstrong		compatible = "regulator-fixed";
930449b8e3SNeil Armstrong		regulator-name = "VCC_3V3";
940449b8e3SNeil Armstrong		regulator-min-microvolt = <3300000>;
950449b8e3SNeil Armstrong		regulator-max-microvolt = <3300000>;
960449b8e3SNeil Armstrong		vin-supply = <&dc_5v>;
970449b8e3SNeil Armstrong		regulator-always-on;
980449b8e3SNeil Armstrong	};
990449b8e3SNeil Armstrong
1000449b8e3SNeil Armstrong	vddio_boot: regulator-vddio_boot {
1010449b8e3SNeil Armstrong		compatible = "regulator-fixed";
1020449b8e3SNeil Armstrong		regulator-name = "VDDIO_BOOT";
1030449b8e3SNeil Armstrong		regulator-min-microvolt = <1800000>;
1040449b8e3SNeil Armstrong		regulator-max-microvolt = <1800000>;
1050449b8e3SNeil Armstrong		vin-supply = <&vcc_3v3>;
1060449b8e3SNeil Armstrong		regulator-always-on;
1070449b8e3SNeil Armstrong	};
1080449b8e3SNeil Armstrong};
1090449b8e3SNeil Armstrong
1100449b8e3SNeil Armstrong&cec_AO {
1110449b8e3SNeil Armstrong	status = "okay";
1120449b8e3SNeil Armstrong	pinctrl-0 = <&ao_cec_pins>;
1130449b8e3SNeil Armstrong	pinctrl-names = "default";
1140449b8e3SNeil Armstrong	hdmi-phandle = <&hdmi_tx>;
1150449b8e3SNeil Armstrong};
1160449b8e3SNeil Armstrong
1170449b8e3SNeil Armstrong&cvbs_vdac_port {
1180449b8e3SNeil Armstrong	cvbs_vdac_out: endpoint {
1190449b8e3SNeil Armstrong		remote-endpoint = <&cvbs_connector_in>;
1200449b8e3SNeil Armstrong	};
1210449b8e3SNeil Armstrong};
1220449b8e3SNeil Armstrong
1230449b8e3SNeil Armstrong&ethmac {
1240449b8e3SNeil Armstrong	status = "okay";
1250449b8e3SNeil Armstrong};
1260449b8e3SNeil Armstrong
1270449b8e3SNeil Armstrong&internal_phy {
1280449b8e3SNeil Armstrong	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
1290449b8e3SNeil Armstrong	pinctrl-names = "default";
1300449b8e3SNeil Armstrong};
1310449b8e3SNeil Armstrong
1320449b8e3SNeil Armstrong&ir {
1330449b8e3SNeil Armstrong	status = "okay";
1340449b8e3SNeil Armstrong	pinctrl-0 = <&remote_input_ao_pins>;
1350449b8e3SNeil Armstrong	pinctrl-names = "default";
1360449b8e3SNeil Armstrong};
1370449b8e3SNeil Armstrong
1380449b8e3SNeil Armstrong&hdmi_tx {
1390449b8e3SNeil Armstrong	status = "okay";
1400449b8e3SNeil Armstrong	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
1410449b8e3SNeil Armstrong	pinctrl-names = "default";
1420449b8e3SNeil Armstrong};
1430449b8e3SNeil Armstrong
1440449b8e3SNeil Armstrong&hdmi_tx_tmds_port {
1450449b8e3SNeil Armstrong	hdmi_tx_tmds_out: endpoint {
1460449b8e3SNeil Armstrong		remote-endpoint = <&hdmi_connector_in>;
1470449b8e3SNeil Armstrong	};
1480449b8e3SNeil Armstrong};
1490449b8e3SNeil Armstrong
1500449b8e3SNeil Armstrong&gpio_ao {
1510449b8e3SNeil Armstrong	gpio-line-names = "UART TX",
1520449b8e3SNeil Armstrong			  "UART RX",
1530449b8e3SNeil Armstrong			  "7J1 Header Pin31",
1540449b8e3SNeil Armstrong			  "", "", "", "",
1550449b8e3SNeil Armstrong			  "IR In",
1560449b8e3SNeil Armstrong			  "HDMI CEC",
1570449b8e3SNeil Armstrong			  "5V VCCK Regulator",
1580449b8e3SNeil Armstrong			  /* GPIO_TEST_N */
1590449b8e3SNeil Armstrong			  "";
1600449b8e3SNeil Armstrong};
1610449b8e3SNeil Armstrong
1620449b8e3SNeil Armstrong&gpio {
1630449b8e3SNeil Armstrong	gpio-line-names = /* Bank GPIOZ */
1640449b8e3SNeil Armstrong			  "", "", "", "", "", "", "",
1650449b8e3SNeil Armstrong			  "", "", "", "", "", "", "",
1660449b8e3SNeil Armstrong			  "Eth Link LED", "Eth Activity LED",
1670449b8e3SNeil Armstrong			  /* Bank GPIOH */
1680449b8e3SNeil Armstrong			  "HDMI HPD", "HDMI SDA", "HDMI SCL",
1690449b8e3SNeil Armstrong			  "", "7J1 Header Pin13",
1700449b8e3SNeil Armstrong			  "7J1 Header Pin15",
1710449b8e3SNeil Armstrong			  "7J1 Header Pin7",
1720449b8e3SNeil Armstrong			  "7J1 Header Pin12",
1730449b8e3SNeil Armstrong			  "7J1 Header Pin16",
1740449b8e3SNeil Armstrong			  "7J1 Header Pin18",
1750449b8e3SNeil Armstrong			  /* Bank BOOT */
1760449b8e3SNeil Armstrong			  "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3",
1770449b8e3SNeil Armstrong			  "eMMC D4", "eMMC D5", "eMMC D6", "eMMC D7",
1780449b8e3SNeil Armstrong			  "eMMC Clk", "eMMC Reset", "eMMC CMD",
1790449b8e3SNeil Armstrong			  "SPI NOR MOSI", "SPI NOR MISO", "SPI NOR Clk",
1800449b8e3SNeil Armstrong			  "", "SPI NOR Chip Select",
1810449b8e3SNeil Armstrong			  /* Bank CARD */
1820449b8e3SNeil Armstrong			  "", "", "", "", "", "", "",
1830449b8e3SNeil Armstrong			  /* Bank GPIODV */
1840449b8e3SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1850449b8e3SNeil Armstrong			  "", "", "", "", "", "", "", "", "", "", "", "",
1860449b8e3SNeil Armstrong			  "7J1 Header Pin27", "7J1 Header Pin28", "",
1870449b8e3SNeil Armstrong			  "7J1 Header Pin29",
1880449b8e3SNeil Armstrong			  "VCCK Regulator", "VDDEE Regulator",
1890449b8e3SNeil Armstrong			  /* Bank GPIOX */
1900449b8e3SNeil Armstrong			  "7J1 Header Pin22", "7J1 Header Pin26",
1910449b8e3SNeil Armstrong			  "7J1 Header Pin36", "7J1 Header Pin38",
1920449b8e3SNeil Armstrong			  "7J1 Header Pin40", "7J1 Header Pin37",
1930449b8e3SNeil Armstrong			  "7J1 Header Pin33", "7J1 Header Pin35",
1940449b8e3SNeil Armstrong			  "7J1 Header Pin19", "7J1 Header Pin21",
1950449b8e3SNeil Armstrong			  "7J1 Header Pin24", "7J1 Header Pin23",
1960449b8e3SNeil Armstrong			  "7J1 Header Pin8", "7J1 Header Pin10",
1970449b8e3SNeil Armstrong			  "", "", "7J1 Header Pin32", "", "",
1980449b8e3SNeil Armstrong			  /* Bank GPIOCLK */
1990449b8e3SNeil Armstrong			  "", "";
2000449b8e3SNeil Armstrong};
2010449b8e3SNeil Armstrong
2020449b8e3SNeil Armstrong&saradc {
2030449b8e3SNeil Armstrong	status = "okay";
2040449b8e3SNeil Armstrong	vref-supply = <&vddio_boot>;
2050449b8e3SNeil Armstrong};
2060449b8e3SNeil Armstrong
2070449b8e3SNeil Armstrong/* eMMC */
2080449b8e3SNeil Armstrong&sd_emmc_c {
2090449b8e3SNeil Armstrong	status = "okay";
2100449b8e3SNeil Armstrong	pinctrl-0 = <&emmc_pins>;
2110449b8e3SNeil Armstrong	pinctrl-1 = <&emmc_clk_gate_pins>;
2120449b8e3SNeil Armstrong	pinctrl-names = "default", "clk-gate";
2130449b8e3SNeil Armstrong
2140449b8e3SNeil Armstrong	bus-width = <8>;
2150449b8e3SNeil Armstrong	cap-mmc-highspeed;
2160449b8e3SNeil Armstrong	mmc-ddr-1_8v;
2170449b8e3SNeil Armstrong	mmc-hs200-1_8v;
2180449b8e3SNeil Armstrong	max-frequency = <200000000>;
2190449b8e3SNeil Armstrong	disable-wp;
2200449b8e3SNeil Armstrong
2210449b8e3SNeil Armstrong	mmc-pwrseq = <&emmc_pwrseq>;
2220449b8e3SNeil Armstrong	vmmc-supply = <&vcc_3v3>;
2230449b8e3SNeil Armstrong	vqmmc-supply = <&vddio_boot>;
2240449b8e3SNeil Armstrong};
2250449b8e3SNeil Armstrong
2260449b8e3SNeil Armstrong&spifc {
2270449b8e3SNeil Armstrong	status = "okay";
2280449b8e3SNeil Armstrong	pinctrl-0 = <&nor_pins>;
2290449b8e3SNeil Armstrong	pinctrl-names = "default";
2300449b8e3SNeil Armstrong
2310449b8e3SNeil Armstrong	w25q32: spi-flash@0 {
2320449b8e3SNeil Armstrong		#address-cells = <1>;
2330449b8e3SNeil Armstrong		#size-cells = <1>;
2340449b8e3SNeil Armstrong		compatible = "jedec,spi-nor";
2350449b8e3SNeil Armstrong		reg = <0>;
2360449b8e3SNeil Armstrong		spi-max-frequency = <3000000>;
2370449b8e3SNeil Armstrong	};
2380449b8e3SNeil Armstrong};
2390449b8e3SNeil Armstrong
2400449b8e3SNeil Armstrong&uart_AO {
2410449b8e3SNeil Armstrong	status = "okay";
2420449b8e3SNeil Armstrong	pinctrl-0 = <&uart_ao_a_pins>;
2430449b8e3SNeil Armstrong	pinctrl-names = "default";
2440449b8e3SNeil Armstrong};
2450449b8e3SNeil Armstrong
2460449b8e3SNeil Armstrong&usb0 {
2470449b8e3SNeil Armstrong	status = "okay";
2480449b8e3SNeil Armstrong};
249