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