163fafc5aSJerome Brunet// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
263fafc5aSJerome Brunet/*
363fafc5aSJerome Brunet * Copyright (c) 2020 BayLibre, SAS.
463fafc5aSJerome Brunet * Author: Jerome Brunet <jbrunet@baylibre.com>
563fafc5aSJerome Brunet */
663fafc5aSJerome Brunet
763fafc5aSJerome Brunet/dts-v1/;
863fafc5aSJerome Brunet
963fafc5aSJerome Brunet#include <dt-bindings/input/input.h>
1063fafc5aSJerome Brunet#include <dt-bindings/leds/common.h>
1163fafc5aSJerome Brunet#include <dt-bindings/sound/meson-aiu.h>
1263fafc5aSJerome Brunet
1363fafc5aSJerome Brunet#include "meson-gxl-s905x.dtsi"
1463fafc5aSJerome Brunet
1563fafc5aSJerome Brunet/ {
1663fafc5aSJerome Brunet	compatible = "libretech,aml-s905x-cc-v2", "amlogic,s905x",
1763fafc5aSJerome Brunet		     "amlogic,meson-gxl";
1863fafc5aSJerome Brunet	model = "Libre Computer AML-S905X-CC V2";
1963fafc5aSJerome Brunet
2063fafc5aSJerome Brunet	aliases {
2163fafc5aSJerome Brunet		serial0 = &uart_AO;
2263fafc5aSJerome Brunet		ethernet0 = &ethmac;
2363fafc5aSJerome Brunet		spi0 = &spifc;
2463fafc5aSJerome Brunet	};
2563fafc5aSJerome Brunet
2663fafc5aSJerome Brunet	chosen {
2763fafc5aSJerome Brunet		stdout-path = "serial0:115200n8";
2863fafc5aSJerome Brunet	};
2963fafc5aSJerome Brunet
3063fafc5aSJerome Brunet	emmc_pwrseq: emmc-pwrseq {
3163fafc5aSJerome Brunet		compatible = "mmc-pwrseq-emmc";
3263fafc5aSJerome Brunet		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
3363fafc5aSJerome Brunet	};
3463fafc5aSJerome Brunet
3563fafc5aSJerome Brunet	hdmi-connector {
3663fafc5aSJerome Brunet		compatible = "hdmi-connector";
3763fafc5aSJerome Brunet		type = "a";
3863fafc5aSJerome Brunet
3963fafc5aSJerome Brunet		port {
4063fafc5aSJerome Brunet			hdmi_connector_in: endpoint {
4163fafc5aSJerome Brunet				remote-endpoint = <&hdmi_tx_tmds_out>;
4263fafc5aSJerome Brunet			};
4363fafc5aSJerome Brunet		};
4463fafc5aSJerome Brunet	};
4563fafc5aSJerome Brunet
4663fafc5aSJerome Brunet	leds {
4763fafc5aSJerome Brunet		compatible = "gpio-leds";
4863fafc5aSJerome Brunet
4963fafc5aSJerome Brunet		led-blue {
5063fafc5aSJerome Brunet			color = <LED_COLOR_ID_BLUE>;
5163fafc5aSJerome Brunet			function = LED_FUNCTION_STATUS;
5263fafc5aSJerome Brunet			gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
5363fafc5aSJerome Brunet			linux,default-trigger = "heartbeat";
5463fafc5aSJerome Brunet			panic-indicator;
5563fafc5aSJerome Brunet		};
5663fafc5aSJerome Brunet
5763fafc5aSJerome Brunet		led-green {
5863fafc5aSJerome Brunet			color = <LED_COLOR_ID_GREEN>;
5963fafc5aSJerome Brunet			function = LED_FUNCTION_DISK_ACTIVITY;
6063fafc5aSJerome Brunet			gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
6163fafc5aSJerome Brunet			linux,default-trigger = "disk-activity";
6263fafc5aSJerome Brunet		};
6363fafc5aSJerome Brunet	};
6463fafc5aSJerome Brunet
6563fafc5aSJerome Brunet	memory@0 {
6663fafc5aSJerome Brunet		device_type = "memory";
6763fafc5aSJerome Brunet		reg = <0x0 0x0 0x0 0x80000000>;
6863fafc5aSJerome Brunet	};
6963fafc5aSJerome Brunet
7063fafc5aSJerome Brunet	ao_5v: regulator-ao_5v {
7163fafc5aSJerome Brunet		compatible = "regulator-fixed";
7263fafc5aSJerome Brunet		regulator-name = "AO_5V";
7363fafc5aSJerome Brunet		regulator-min-microvolt = <5000000>;
7463fafc5aSJerome Brunet		regulator-max-microvolt = <5000000>;
7563fafc5aSJerome Brunet		vin-supply = <&dc_in>;
7663fafc5aSJerome Brunet		regulator-always-on;
7763fafc5aSJerome Brunet	};
7863fafc5aSJerome Brunet
7963fafc5aSJerome Brunet	dc_in: regulator-dc_in {
8063fafc5aSJerome Brunet		compatible = "regulator-fixed";
8163fafc5aSJerome Brunet		regulator-name = "DC_IN";
8263fafc5aSJerome Brunet		regulator-min-microvolt = <5000000>;
8363fafc5aSJerome Brunet		regulator-max-microvolt = <5000000>;
8463fafc5aSJerome Brunet		regulator-always-on;
8563fafc5aSJerome Brunet	};
8663fafc5aSJerome Brunet
8763fafc5aSJerome Brunet	vcck: regulator-vcck {
8863fafc5aSJerome Brunet		compatible = "regulator-fixed";
8963fafc5aSJerome Brunet		regulator-name = "VCCK";
9063fafc5aSJerome Brunet		regulator-min-microvolt = <3300000>;
9163fafc5aSJerome Brunet		regulator-max-microvolt = <3300000>;
9263fafc5aSJerome Brunet		vin-supply = <&ao_5v>;
9363fafc5aSJerome Brunet		regulator-always-on;
9463fafc5aSJerome Brunet	};
9563fafc5aSJerome Brunet
9663fafc5aSJerome Brunet	vcc_card: regulator-vcc_card {
9763fafc5aSJerome Brunet		compatible = "regulator-fixed";
9863fafc5aSJerome Brunet		regulator-name = "VCC_CARD";
9963fafc5aSJerome Brunet		regulator-min-microvolt = <3300000>;
10063fafc5aSJerome Brunet		regulator-max-microvolt = <3300000>;
10163fafc5aSJerome Brunet		vin-supply = <&vddio_ao3v3>;
10263fafc5aSJerome Brunet
10363fafc5aSJerome Brunet		gpio = <&gpio GPIOCLK_1 GPIO_ACTIVE_HIGH>;
10463fafc5aSJerome Brunet		enable-active-high;
10563fafc5aSJerome Brunet	};
10663fafc5aSJerome Brunet
10763fafc5aSJerome Brunet	vcc5v: regulator-vcc5v {
10863fafc5aSJerome Brunet		compatible = "regulator-fixed";
10963fafc5aSJerome Brunet		regulator-name = "VCC5V";
11063fafc5aSJerome Brunet		regulator-min-microvolt = <5000000>;
11163fafc5aSJerome Brunet		regulator-max-microvolt = <5000000>;
11263fafc5aSJerome Brunet		vin-supply = <&ao_5v>;
11363fafc5aSJerome Brunet
11463fafc5aSJerome Brunet		gpio = <&gpio GPIOH_3 GPIO_OPEN_DRAIN>;
11563fafc5aSJerome Brunet	};
11663fafc5aSJerome Brunet
11763fafc5aSJerome Brunet	vddio_ao3v3: regulator-vddio_ao3v3 {
11863fafc5aSJerome Brunet		compatible = "regulator-fixed";
11963fafc5aSJerome Brunet		regulator-name = "VDDIO_AO3V3";
12063fafc5aSJerome Brunet		regulator-min-microvolt = <3300000>;
12163fafc5aSJerome Brunet		regulator-max-microvolt = <3300000>;
12263fafc5aSJerome Brunet		vin-supply = <&ao_5v>;
12363fafc5aSJerome Brunet		regulator-always-on;
12463fafc5aSJerome Brunet	};
12563fafc5aSJerome Brunet
12663fafc5aSJerome Brunet	vddio_card: regulator-vddio-card {
12763fafc5aSJerome Brunet		compatible = "regulator-gpio";
12863fafc5aSJerome Brunet		regulator-name = "VDDIO_CARD";
12963fafc5aSJerome Brunet		regulator-min-microvolt = <1800000>;
13063fafc5aSJerome Brunet		regulator-max-microvolt = <3300000>;
13163fafc5aSJerome Brunet
13263fafc5aSJerome Brunet		gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
13363fafc5aSJerome Brunet		gpios-states = <0>;
13463fafc5aSJerome Brunet
13563fafc5aSJerome Brunet		states = <3300000 0>,
13663fafc5aSJerome Brunet			 <1800000 1>;
13763fafc5aSJerome Brunet
13863fafc5aSJerome Brunet		regulator-settling-time-up-us = <200>;
13963fafc5aSJerome Brunet		regulator-settling-time-down-us = <50000>;
14063fafc5aSJerome Brunet	};
14163fafc5aSJerome Brunet
14263fafc5aSJerome Brunet	vddio_ao18: regulator-vddio_ao18 {
14363fafc5aSJerome Brunet		compatible = "regulator-fixed";
14463fafc5aSJerome Brunet		regulator-name = "VDDIO_AO18";
14563fafc5aSJerome Brunet		regulator-min-microvolt = <1800000>;
14663fafc5aSJerome Brunet		regulator-max-microvolt = <1800000>;
14763fafc5aSJerome Brunet		vin-supply = <&vddio_ao3v3>;
14863fafc5aSJerome Brunet		regulator-always-on;
14963fafc5aSJerome Brunet	};
15063fafc5aSJerome Brunet
15163fafc5aSJerome Brunet	vcc_1v8: regulator-vcc_1v8 {
15263fafc5aSJerome Brunet		compatible = "regulator-fixed";
15363fafc5aSJerome Brunet		regulator-name = "VCC 1V8";
15463fafc5aSJerome Brunet		regulator-min-microvolt = <1800000>;
15563fafc5aSJerome Brunet		regulator-max-microvolt = <1800000>;
15663fafc5aSJerome Brunet		vin-supply = <&vddio_ao3v3>;
15763fafc5aSJerome Brunet		regulator-always-on;
15863fafc5aSJerome Brunet	};
15963fafc5aSJerome Brunet
16063fafc5aSJerome Brunet	sound {
16163fafc5aSJerome Brunet		compatible = "amlogic,gx-sound-card";
162933b80edSChristian Hewitt		model = "LIBRETECH-CC-V2";
16363fafc5aSJerome Brunet		assigned-clocks = <&clkc CLKID_MPLL0>,
16463fafc5aSJerome Brunet				  <&clkc CLKID_MPLL1>,
16563fafc5aSJerome Brunet				  <&clkc CLKID_MPLL2>;
16663fafc5aSJerome Brunet		assigned-clock-parents = <0>, <0>, <0>;
16763fafc5aSJerome Brunet		assigned-clock-rates = <294912000>,
16863fafc5aSJerome Brunet				       <270950400>,
16963fafc5aSJerome Brunet				       <393216000>;
17063fafc5aSJerome Brunet
17163fafc5aSJerome Brunet		dai-link-0 {
17263fafc5aSJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
17363fafc5aSJerome Brunet		};
17463fafc5aSJerome Brunet
17563fafc5aSJerome Brunet		dai-link-1 {
17663fafc5aSJerome Brunet			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
17763fafc5aSJerome Brunet			dai-format = "i2s";
17863fafc5aSJerome Brunet			mclk-fs = <256>;
17963fafc5aSJerome Brunet
18063fafc5aSJerome Brunet			codec-0 {
18163fafc5aSJerome Brunet				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
18263fafc5aSJerome Brunet			};
18363fafc5aSJerome Brunet		};
18463fafc5aSJerome Brunet
18563fafc5aSJerome Brunet		dai-link-2 {
18663fafc5aSJerome Brunet			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
18763fafc5aSJerome Brunet
18863fafc5aSJerome Brunet			codec-0 {
18963fafc5aSJerome Brunet				sound-dai = <&hdmi_tx>;
19063fafc5aSJerome Brunet			};
19163fafc5aSJerome Brunet		};
19263fafc5aSJerome Brunet	};
19363fafc5aSJerome Brunet};
19463fafc5aSJerome Brunet
19563fafc5aSJerome Brunet&aiu {
19663fafc5aSJerome Brunet	status = "okay";
19763fafc5aSJerome Brunet};
19863fafc5aSJerome Brunet
19963fafc5aSJerome Brunet&cec_AO {
20063fafc5aSJerome Brunet	status = "okay";
20163fafc5aSJerome Brunet	pinctrl-0 = <&ao_cec_pins>;
20263fafc5aSJerome Brunet	pinctrl-names = "default";
20363fafc5aSJerome Brunet	hdmi-phandle = <&hdmi_tx>;
20463fafc5aSJerome Brunet};
20563fafc5aSJerome Brunet
20663fafc5aSJerome Brunet&ethmac {
20763fafc5aSJerome Brunet	status = "okay";
20863fafc5aSJerome Brunet};
20963fafc5aSJerome Brunet
21063fafc5aSJerome Brunet&internal_phy {
21163fafc5aSJerome Brunet	pinctrl-0 = <&eth_link_led_pins>, <&eth_act_led_pins>;
21263fafc5aSJerome Brunet	pinctrl-names = "default";
21363fafc5aSJerome Brunet};
21463fafc5aSJerome Brunet
21563fafc5aSJerome Brunet&ir {
21663fafc5aSJerome Brunet	status = "okay";
21763fafc5aSJerome Brunet	pinctrl-0 = <&remote_input_ao_pins>;
21863fafc5aSJerome Brunet	pinctrl-names = "default";
21963fafc5aSJerome Brunet};
22063fafc5aSJerome Brunet
22163fafc5aSJerome Brunet&hdmi_tx {
22263fafc5aSJerome Brunet	status = "okay";
22363fafc5aSJerome Brunet	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
22463fafc5aSJerome Brunet	hdmi-supply = <&vcc5v>;
22563fafc5aSJerome Brunet	pinctrl-names = "default";
22663fafc5aSJerome Brunet};
22763fafc5aSJerome Brunet
22863fafc5aSJerome Brunet&hdmi_tx_tmds_port {
22963fafc5aSJerome Brunet	hdmi_tx_tmds_out: endpoint {
23063fafc5aSJerome Brunet		remote-endpoint = <&hdmi_connector_in>;
23163fafc5aSJerome Brunet	};
23263fafc5aSJerome Brunet};
23363fafc5aSJerome Brunet
23463fafc5aSJerome Brunet&saradc {
23563fafc5aSJerome Brunet	status = "okay";
23663fafc5aSJerome Brunet	vref-supply = <&vddio_ao18>;
23763fafc5aSJerome Brunet};
23863fafc5aSJerome Brunet
23963fafc5aSJerome Brunet/* SD card */
24063fafc5aSJerome Brunet&sd_emmc_b {
24163fafc5aSJerome Brunet	pinctrl-0 = <&sdcard_pins>;
24263fafc5aSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
24363fafc5aSJerome Brunet	pinctrl-names = "default", "clk-gate";
24463fafc5aSJerome Brunet
24563fafc5aSJerome Brunet	bus-width = <4>;
24663fafc5aSJerome Brunet	cap-sd-highspeed;
24763fafc5aSJerome Brunet	sd-uhs-sdr12;
24863fafc5aSJerome Brunet	sd-uhs-sdr25;
24963fafc5aSJerome Brunet	sd-uhs-sdr50;
25063fafc5aSJerome Brunet	sd-uhs-ddr50;
25163fafc5aSJerome Brunet	max-frequency = <100000000>;
25263fafc5aSJerome Brunet	disable-wp;
25363fafc5aSJerome Brunet
25463fafc5aSJerome Brunet	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
25563fafc5aSJerome Brunet
25663fafc5aSJerome Brunet	vmmc-supply = <&vcc_card>;
25763fafc5aSJerome Brunet	vqmmc-supply = <&vddio_card>;
25863fafc5aSJerome Brunet
25963fafc5aSJerome Brunet	status = "okay";
26063fafc5aSJerome Brunet};
26163fafc5aSJerome Brunet
26263fafc5aSJerome Brunet/* eMMC */
26363fafc5aSJerome Brunet&sd_emmc_c {
26463fafc5aSJerome Brunet	pinctrl-0 = <&emmc_pins>;
26563fafc5aSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
26663fafc5aSJerome Brunet	pinctrl-names = "default", "clk-gate";
26763fafc5aSJerome Brunet
26863fafc5aSJerome Brunet	bus-width = <8>;
26963fafc5aSJerome Brunet	cap-mmc-highspeed;
27063fafc5aSJerome Brunet	mmc-hs200-1_8v;
27163fafc5aSJerome Brunet	max-frequency = <200000000>;
27263fafc5aSJerome Brunet	disable-wp;
27363fafc5aSJerome Brunet
27463fafc5aSJerome Brunet	mmc-pwrseq = <&emmc_pwrseq>;
27563fafc5aSJerome Brunet	vmmc-supply = <&vddio_ao3v3>;
27663fafc5aSJerome Brunet	vqmmc-supply = <&vcc_1v8>;
27763fafc5aSJerome Brunet
27863fafc5aSJerome Brunet	status = "okay";
27963fafc5aSJerome Brunet};
28063fafc5aSJerome Brunet
28163fafc5aSJerome Brunet&spifc {
28263fafc5aSJerome Brunet	status = "okay";
28363fafc5aSJerome Brunet	pinctrl-0 = <&nor_pins>;
28463fafc5aSJerome Brunet	pinctrl-names = "default";
28563fafc5aSJerome Brunet
286*8771ce5eSKrzysztof Kozlowski	nor_4u1: flash@0 {
28763fafc5aSJerome Brunet		#address-cells = <1>;
28863fafc5aSJerome Brunet		#size-cells = <1>;
28963fafc5aSJerome Brunet		compatible = "jedec,spi-nor";
29063fafc5aSJerome Brunet		reg = <0>;
29163fafc5aSJerome Brunet		spi-max-frequency = <3000000>;
29263fafc5aSJerome Brunet	};
29363fafc5aSJerome Brunet};
29463fafc5aSJerome Brunet
29563fafc5aSJerome Brunet&uart_AO {
29663fafc5aSJerome Brunet	status = "okay";
29763fafc5aSJerome Brunet	pinctrl-0 = <&uart_ao_a_pins>;
29863fafc5aSJerome Brunet	pinctrl-names = "default";
29963fafc5aSJerome Brunet};
30063fafc5aSJerome Brunet
30163fafc5aSJerome Brunet&usb {
30263fafc5aSJerome Brunet	status = "okay";
30363fafc5aSJerome Brunet	dr_mode = "host";
30463fafc5aSJerome Brunet};
30563fafc5aSJerome Brunet
30663fafc5aSJerome Brunet&usb2_phy0 {
30763fafc5aSJerome Brunet	phy-supply = <&vcc5v>;
30863fafc5aSJerome Brunet};
30963fafc5aSJerome Brunet
31063fafc5aSJerome Brunet&usb2_phy1 {
31163fafc5aSJerome Brunet	phy-supply = <&vcc5v>;
31263fafc5aSJerome Brunet};
313