19ded9b0fSMartin Blumenstingl/*
29ded9b0fSMartin Blumenstingl * Copyright (c) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
39ded9b0fSMartin Blumenstingl * Based on meson-gx-p23x-q20x.dtsi:
49ded9b0fSMartin Blumenstingl * - Copyright (c) 2016 Endless Computers, Inc.
59ded9b0fSMartin Blumenstingl *   Author: Carlo Caione <carlo@endlessm.com>
69ded9b0fSMartin Blumenstingl * - Copyright (c) 2016 BayLibre, SAS.
79ded9b0fSMartin Blumenstingl *   Author: Neil Armstrong <narmstrong@baylibre.com>
89ded9b0fSMartin Blumenstingl *
99ded9b0fSMartin Blumenstingl * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
109ded9b0fSMartin Blumenstingl */
119ded9b0fSMartin Blumenstingl
129ded9b0fSMartin Blumenstingl/* Common DTSI for devices which are based on the P212 reference board. */
139ded9b0fSMartin Blumenstingl
149ded9b0fSMartin Blumenstingl#include "meson-gxl-s905x.dtsi"
159ded9b0fSMartin Blumenstingl
169ded9b0fSMartin Blumenstingl/ {
179ded9b0fSMartin Blumenstingl	aliases {
189ded9b0fSMartin Blumenstingl		serial0 = &uart_AO;
199ded9b0fSMartin Blumenstingl		serial1 = &uart_A;
20059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
219ded9b0fSMartin Blumenstingl	};
229ded9b0fSMartin Blumenstingl
239ded9b0fSMartin Blumenstingl	chosen {
249ded9b0fSMartin Blumenstingl		stdout-path = "serial0:115200n8";
259ded9b0fSMartin Blumenstingl	};
269ded9b0fSMartin Blumenstingl
279ded9b0fSMartin Blumenstingl	memory@0 {
289ded9b0fSMartin Blumenstingl		device_type = "memory";
299ded9b0fSMartin Blumenstingl		reg = <0x0 0x0 0x0 0x80000000>;
309ded9b0fSMartin Blumenstingl	};
319ded9b0fSMartin Blumenstingl
32b409f625SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
33b409f625SNeil Armstrong		compatible = "regulator-fixed";
34b409f625SNeil Armstrong
35b409f625SNeil Armstrong		regulator-name = "HDMI_5V";
36b409f625SNeil Armstrong		regulator-min-microvolt = <5000000>;
37b409f625SNeil Armstrong		regulator-max-microvolt = <5000000>;
38b409f625SNeil Armstrong
39b409f625SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
40b409f625SNeil Armstrong		enable-active-high;
41b409f625SNeil Armstrong		regulator-always-on;
42b409f625SNeil Armstrong	};
43b409f625SNeil Armstrong
449ded9b0fSMartin Blumenstingl	vddio_boot: regulator-vddio_boot {
459ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
469ded9b0fSMartin Blumenstingl		regulator-name = "VDDIO_BOOT";
479ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
489ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
499ded9b0fSMartin Blumenstingl	};
509ded9b0fSMartin Blumenstingl
519ded9b0fSMartin Blumenstingl	vddao_3v3: regulator-vddao_3v3 {
529ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
539ded9b0fSMartin Blumenstingl		regulator-name = "VDDAO_3V3";
549ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <3300000>;
559ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <3300000>;
569ded9b0fSMartin Blumenstingl	};
579ded9b0fSMartin Blumenstingl
589ded9b0fSMartin Blumenstingl	vddio_ao18: regulator-vddio_ao18 {
599ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
609ded9b0fSMartin Blumenstingl		regulator-name = "VDDIO_AO18";
619ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
629ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
639ded9b0fSMartin Blumenstingl	};
649ded9b0fSMartin Blumenstingl
659ded9b0fSMartin Blumenstingl	vcc_3v3: regulator-vcc_3v3 {
669ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
679ded9b0fSMartin Blumenstingl		regulator-name = "VCC_3V3";
689ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <3300000>;
699ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <3300000>;
709ded9b0fSMartin Blumenstingl	};
719ded9b0fSMartin Blumenstingl
729ded9b0fSMartin Blumenstingl	emmc_pwrseq: emmc-pwrseq {
739ded9b0fSMartin Blumenstingl		compatible = "mmc-pwrseq-emmc";
749ded9b0fSMartin Blumenstingl		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
759ded9b0fSMartin Blumenstingl	};
769ded9b0fSMartin Blumenstingl
779ded9b0fSMartin Blumenstingl	wifi32k: wifi32k {
789ded9b0fSMartin Blumenstingl		compatible = "pwm-clock";
799ded9b0fSMartin Blumenstingl		#clock-cells = <0>;
809ded9b0fSMartin Blumenstingl		clock-frequency = <32768>;
819ded9b0fSMartin Blumenstingl		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
829ded9b0fSMartin Blumenstingl	};
839ded9b0fSMartin Blumenstingl
849ded9b0fSMartin Blumenstingl	sdio_pwrseq: sdio-pwrseq {
859ded9b0fSMartin Blumenstingl		compatible = "mmc-pwrseq-simple";
869ded9b0fSMartin Blumenstingl		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
879ded9b0fSMartin Blumenstingl		clocks = <&wifi32k>;
889ded9b0fSMartin Blumenstingl		clock-names = "ext_clock";
899ded9b0fSMartin Blumenstingl	};
909ded9b0fSMartin Blumenstingl};
919ded9b0fSMartin Blumenstingl
929ded9b0fSMartin Blumenstingl&ethmac {
939ded9b0fSMartin Blumenstingl	status = "okay";
949ded9b0fSMartin Blumenstingl};
959ded9b0fSMartin Blumenstingl
969ded9b0fSMartin Blumenstingl&ir {
979ded9b0fSMartin Blumenstingl	status = "okay";
989ded9b0fSMartin Blumenstingl	pinctrl-0 = <&remote_input_ao_pins>;
999ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1009ded9b0fSMartin Blumenstingl};
1019ded9b0fSMartin Blumenstingl
1029ded9b0fSMartin Blumenstingl&saradc {
1039ded9b0fSMartin Blumenstingl	status = "okay";
1049ded9b0fSMartin Blumenstingl	vref-supply = <&vddio_ao18>;
1059ded9b0fSMartin Blumenstingl};
1069ded9b0fSMartin Blumenstingl
1079ded9b0fSMartin Blumenstingl/* Wireless SDIO Module */
1089ded9b0fSMartin Blumenstingl&sd_emmc_a {
1099ded9b0fSMartin Blumenstingl	status = "okay";
1109ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdio_pins>;
11167e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
11267e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1139ded9b0fSMartin Blumenstingl	#address-cells = <1>;
1149ded9b0fSMartin Blumenstingl	#size-cells = <0>;
1159ded9b0fSMartin Blumenstingl
1169ded9b0fSMartin Blumenstingl	bus-width = <4>;
1179ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
1189ded9b0fSMartin Blumenstingl	max-frequency = <100000000>;
1199ded9b0fSMartin Blumenstingl
1209ded9b0fSMartin Blumenstingl	non-removable;
1219ded9b0fSMartin Blumenstingl	disable-wp;
1229ded9b0fSMartin Blumenstingl
1239ded9b0fSMartin Blumenstingl	mmc-pwrseq = <&sdio_pwrseq>;
1249ded9b0fSMartin Blumenstingl
1259ded9b0fSMartin Blumenstingl	vmmc-supply = <&vddao_3v3>;
1269ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1279ded9b0fSMartin Blumenstingl};
1289ded9b0fSMartin Blumenstingl
1299ded9b0fSMartin Blumenstingl/* SD card */
1309ded9b0fSMartin Blumenstingl&sd_emmc_b {
1319ded9b0fSMartin Blumenstingl	status = "okay";
1329ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdcard_pins>;
13367e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
13467e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1359ded9b0fSMartin Blumenstingl
1369ded9b0fSMartin Blumenstingl	bus-width = <4>;
1379ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
1389ded9b0fSMartin Blumenstingl	max-frequency = <100000000>;
1399ded9b0fSMartin Blumenstingl	disable-wp;
1409ded9b0fSMartin Blumenstingl
1419ded9b0fSMartin Blumenstingl	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
1429ded9b0fSMartin Blumenstingl	cd-inverted;
1439ded9b0fSMartin Blumenstingl
1449ded9b0fSMartin Blumenstingl	vmmc-supply = <&vddao_3v3>;
1459ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1469ded9b0fSMartin Blumenstingl};
1479ded9b0fSMartin Blumenstingl
1489ded9b0fSMartin Blumenstingl/* eMMC */
1499ded9b0fSMartin Blumenstingl&sd_emmc_c {
1509ded9b0fSMartin Blumenstingl	status = "okay";
151ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
15267e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
15367e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1549ded9b0fSMartin Blumenstingl
1559ded9b0fSMartin Blumenstingl	bus-width = <8>;
1569ded9b0fSMartin Blumenstingl	cap-mmc-highspeed;
1579ded9b0fSMartin Blumenstingl	max-frequency = <200000000>;
1589ded9b0fSMartin Blumenstingl	non-removable;
1599ded9b0fSMartin Blumenstingl	disable-wp;
1609ded9b0fSMartin Blumenstingl	mmc-ddr-1_8v;
1619ded9b0fSMartin Blumenstingl	mmc-hs200-1_8v;
1629ded9b0fSMartin Blumenstingl
1639ded9b0fSMartin Blumenstingl	mmc-pwrseq = <&emmc_pwrseq>;
1649ded9b0fSMartin Blumenstingl	vmmc-supply = <&vcc_3v3>;
1659ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1669ded9b0fSMartin Blumenstingl};
1679ded9b0fSMartin Blumenstingl
1689ded9b0fSMartin Blumenstingl&pwm_ef {
1699ded9b0fSMartin Blumenstingl	status = "okay";
1709ded9b0fSMartin Blumenstingl	pinctrl-0 = <&pwm_e_pins>;
1719ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1729ded9b0fSMartin Blumenstingl	clocks = <&clkc CLKID_FCLK_DIV4>;
1739ded9b0fSMartin Blumenstingl	clock-names = "clkin0";
1749ded9b0fSMartin Blumenstingl};
1759ded9b0fSMartin Blumenstingl
1769ded9b0fSMartin Blumenstingl/* This is connected to the Bluetooth module: */
1779ded9b0fSMartin Blumenstingl&uart_A {
1789ded9b0fSMartin Blumenstingl	status = "okay";
1799ded9b0fSMartin Blumenstingl	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
1809ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1819ded9b0fSMartin Blumenstingl	uart-has-rtscts;
1829ded9b0fSMartin Blumenstingl};
1839ded9b0fSMartin Blumenstingl
1849ded9b0fSMartin Blumenstingl&uart_AO {
1859ded9b0fSMartin Blumenstingl	status = "okay";
1869ded9b0fSMartin Blumenstingl	pinctrl-0 = <&uart_ao_a_pins>;
1879ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1889ded9b0fSMartin Blumenstingl};
189