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;
18059a58fcSJorge Ramirez-Ortiz		ethernet0 = &ethmac;
199ded9b0fSMartin Blumenstingl	};
209ded9b0fSMartin Blumenstingl
219ded9b0fSMartin Blumenstingl	chosen {
229ded9b0fSMartin Blumenstingl		stdout-path = "serial0:115200n8";
239ded9b0fSMartin Blumenstingl	};
249ded9b0fSMartin Blumenstingl
259ded9b0fSMartin Blumenstingl	memory@0 {
269ded9b0fSMartin Blumenstingl		device_type = "memory";
279ded9b0fSMartin Blumenstingl		reg = <0x0 0x0 0x0 0x80000000>;
289ded9b0fSMartin Blumenstingl	};
299ded9b0fSMartin Blumenstingl
30b409f625SNeil Armstrong	hdmi_5v: regulator-hdmi-5v {
31b409f625SNeil Armstrong		compatible = "regulator-fixed";
32b409f625SNeil Armstrong
33b409f625SNeil Armstrong		regulator-name = "HDMI_5V";
34b409f625SNeil Armstrong		regulator-min-microvolt = <5000000>;
35b409f625SNeil Armstrong		regulator-max-microvolt = <5000000>;
36b409f625SNeil Armstrong
37b409f625SNeil Armstrong		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
38b409f625SNeil Armstrong		enable-active-high;
39b409f625SNeil Armstrong		regulator-always-on;
40b409f625SNeil Armstrong	};
41b409f625SNeil Armstrong
429ded9b0fSMartin Blumenstingl	vddio_boot: regulator-vddio_boot {
439ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
449ded9b0fSMartin Blumenstingl		regulator-name = "VDDIO_BOOT";
459ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
469ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
479ded9b0fSMartin Blumenstingl	};
489ded9b0fSMartin Blumenstingl
499ded9b0fSMartin Blumenstingl	vddao_3v3: regulator-vddao_3v3 {
509ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
519ded9b0fSMartin Blumenstingl		regulator-name = "VDDAO_3V3";
529ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <3300000>;
539ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <3300000>;
549ded9b0fSMartin Blumenstingl	};
559ded9b0fSMartin Blumenstingl
569ded9b0fSMartin Blumenstingl	vddio_ao18: regulator-vddio_ao18 {
579ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
589ded9b0fSMartin Blumenstingl		regulator-name = "VDDIO_AO18";
599ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <1800000>;
609ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <1800000>;
619ded9b0fSMartin Blumenstingl	};
629ded9b0fSMartin Blumenstingl
639ded9b0fSMartin Blumenstingl	vcc_3v3: regulator-vcc_3v3 {
649ded9b0fSMartin Blumenstingl		compatible = "regulator-fixed";
659ded9b0fSMartin Blumenstingl		regulator-name = "VCC_3V3";
669ded9b0fSMartin Blumenstingl		regulator-min-microvolt = <3300000>;
679ded9b0fSMartin Blumenstingl		regulator-max-microvolt = <3300000>;
689ded9b0fSMartin Blumenstingl	};
699ded9b0fSMartin Blumenstingl
709ded9b0fSMartin Blumenstingl	emmc_pwrseq: emmc-pwrseq {
719ded9b0fSMartin Blumenstingl		compatible = "mmc-pwrseq-emmc";
729ded9b0fSMartin Blumenstingl		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
739ded9b0fSMartin Blumenstingl	};
749ded9b0fSMartin Blumenstingl
759ded9b0fSMartin Blumenstingl	wifi32k: wifi32k {
769ded9b0fSMartin Blumenstingl		compatible = "pwm-clock";
779ded9b0fSMartin Blumenstingl		#clock-cells = <0>;
789ded9b0fSMartin Blumenstingl		clock-frequency = <32768>;
799ded9b0fSMartin Blumenstingl		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
809ded9b0fSMartin Blumenstingl	};
819ded9b0fSMartin Blumenstingl
829ded9b0fSMartin Blumenstingl	sdio_pwrseq: sdio-pwrseq {
839ded9b0fSMartin Blumenstingl		compatible = "mmc-pwrseq-simple";
849ded9b0fSMartin Blumenstingl		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
859ded9b0fSMartin Blumenstingl		clocks = <&wifi32k>;
869ded9b0fSMartin Blumenstingl		clock-names = "ext_clock";
879ded9b0fSMartin Blumenstingl	};
889ded9b0fSMartin Blumenstingl};
899ded9b0fSMartin Blumenstingl
909ded9b0fSMartin Blumenstingl&ethmac {
919ded9b0fSMartin Blumenstingl	status = "okay";
929ded9b0fSMartin Blumenstingl};
939ded9b0fSMartin Blumenstingl
949ded9b0fSMartin Blumenstingl&ir {
959ded9b0fSMartin Blumenstingl	status = "okay";
969ded9b0fSMartin Blumenstingl	pinctrl-0 = <&remote_input_ao_pins>;
979ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
989ded9b0fSMartin Blumenstingl};
999ded9b0fSMartin Blumenstingl
1009ded9b0fSMartin Blumenstingl&saradc {
1019ded9b0fSMartin Blumenstingl	status = "okay";
1029ded9b0fSMartin Blumenstingl	vref-supply = <&vddio_ao18>;
1039ded9b0fSMartin Blumenstingl};
1049ded9b0fSMartin Blumenstingl
1059ded9b0fSMartin Blumenstingl/* Wireless SDIO Module */
1069ded9b0fSMartin Blumenstingl&sd_emmc_a {
1079ded9b0fSMartin Blumenstingl	status = "okay";
1089ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdio_pins>;
10967e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
11067e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1119ded9b0fSMartin Blumenstingl	#address-cells = <1>;
1129ded9b0fSMartin Blumenstingl	#size-cells = <0>;
1139ded9b0fSMartin Blumenstingl
1149ded9b0fSMartin Blumenstingl	bus-width = <4>;
1159ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
116adc52bf7SJerome Brunet	max-frequency = <50000000>;
1179ded9b0fSMartin Blumenstingl
1189ded9b0fSMartin Blumenstingl	non-removable;
1199ded9b0fSMartin Blumenstingl	disable-wp;
1209ded9b0fSMartin Blumenstingl
12132122c46SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
12232122c46SNeil Armstrong	keep-power-in-suspend;
12332122c46SNeil Armstrong
1249ded9b0fSMartin Blumenstingl	mmc-pwrseq = <&sdio_pwrseq>;
1259ded9b0fSMartin Blumenstingl
1269ded9b0fSMartin Blumenstingl	vmmc-supply = <&vddao_3v3>;
1279ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1289ded9b0fSMartin Blumenstingl};
1299ded9b0fSMartin Blumenstingl
1309ded9b0fSMartin Blumenstingl/* SD card */
1319ded9b0fSMartin Blumenstingl&sd_emmc_b {
1329ded9b0fSMartin Blumenstingl	status = "okay";
1339ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdcard_pins>;
13467e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
13567e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1369ded9b0fSMartin Blumenstingl
1379ded9b0fSMartin Blumenstingl	bus-width = <4>;
1389ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
139adc52bf7SJerome Brunet	max-frequency = <50000000>;
1409ded9b0fSMartin Blumenstingl	disable-wp;
1419ded9b0fSMartin Blumenstingl
142f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
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;
182026c20e7SChristian Hewitt
183026c20e7SChristian Hewitt	bluetooth {
184026c20e7SChristian Hewitt		compatible = "brcm,bcm43438-bt";
185026c20e7SChristian Hewitt		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
186026c20e7SChristian Hewitt		max-speed = <2000000>;
187026c20e7SChristian Hewitt		clocks = <&wifi32k>;
188026c20e7SChristian Hewitt		clock-names = "lpo";
189026c20e7SChristian Hewitt	};
1909ded9b0fSMartin Blumenstingl};
1919ded9b0fSMartin Blumenstingl
1929ded9b0fSMartin Blumenstingl&uart_AO {
1939ded9b0fSMartin Blumenstingl	status = "okay";
1949ded9b0fSMartin Blumenstingl	pinctrl-0 = <&uart_ao_a_pins>;
1959ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1969ded9b0fSMartin Blumenstingl};
197b9f07cb4SMartin Blumenstingl
1982f9139c2SMartin Blumenstingl&usb {
199b9f07cb4SMartin Blumenstingl	status = "okay";
2002f9139c2SMartin Blumenstingl	dr_mode = "host";
201b9f07cb4SMartin Blumenstingl};
202d511b3e4SNeil Armstrong
203d511b3e4SNeil Armstrong&usb2_phy0 {
204d511b3e4SNeil Armstrong	/*
205d511b3e4SNeil Armstrong	 * HDMI_5V is also used as supply for the USB VBUS.
206d511b3e4SNeil Armstrong	 */
207d511b3e4SNeil Armstrong	phy-supply = <&hdmi_5v>;
208d511b3e4SNeil Armstrong};
209