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
100*81351d2fSChristian Hewitt&pwm_ef {
101*81351d2fSChristian Hewitt	status = "okay";
102*81351d2fSChristian Hewitt	pinctrl-0 = <&pwm_e_pins>;
103*81351d2fSChristian Hewitt	pinctrl-names = "default";
104*81351d2fSChristian Hewitt	clocks = <&clkc CLKID_FCLK_DIV4>;
105*81351d2fSChristian Hewitt	clock-names = "clkin0";
106*81351d2fSChristian Hewitt};
107*81351d2fSChristian Hewitt
1089ded9b0fSMartin Blumenstingl&saradc {
1099ded9b0fSMartin Blumenstingl	status = "okay";
1109ded9b0fSMartin Blumenstingl	vref-supply = <&vddio_ao18>;
1119ded9b0fSMartin Blumenstingl};
1129ded9b0fSMartin Blumenstingl
1139ded9b0fSMartin Blumenstingl/* Wireless SDIO Module */
1149ded9b0fSMartin Blumenstingl&sd_emmc_a {
1159ded9b0fSMartin Blumenstingl	status = "okay";
1169ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdio_pins>;
11767e7607fSJerome Brunet	pinctrl-1 = <&sdio_clk_gate_pins>;
11867e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1199ded9b0fSMartin Blumenstingl	#address-cells = <1>;
1209ded9b0fSMartin Blumenstingl	#size-cells = <0>;
1219ded9b0fSMartin Blumenstingl
1229ded9b0fSMartin Blumenstingl	bus-width = <4>;
1239ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
124adc52bf7SJerome Brunet	max-frequency = <50000000>;
1259ded9b0fSMartin Blumenstingl
1269ded9b0fSMartin Blumenstingl	non-removable;
1279ded9b0fSMartin Blumenstingl	disable-wp;
1289ded9b0fSMartin Blumenstingl
12932122c46SNeil Armstrong	/* WiFi firmware requires power to be kept while in suspend */
13032122c46SNeil Armstrong	keep-power-in-suspend;
13132122c46SNeil Armstrong
1329ded9b0fSMartin Blumenstingl	mmc-pwrseq = <&sdio_pwrseq>;
1339ded9b0fSMartin Blumenstingl
1349ded9b0fSMartin Blumenstingl	vmmc-supply = <&vddao_3v3>;
1359ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
136ac714d09SChristian Hewitt
137ac714d09SChristian Hewitt	brcmf: wifi@1 {
138ac714d09SChristian Hewitt		reg = <1>;
139ac714d09SChristian Hewitt		compatible = "brcm,bcm4329-fmac";
140ac714d09SChristian Hewitt	};
1419ded9b0fSMartin Blumenstingl};
1429ded9b0fSMartin Blumenstingl
1439ded9b0fSMartin Blumenstingl/* SD card */
1449ded9b0fSMartin Blumenstingl&sd_emmc_b {
1459ded9b0fSMartin Blumenstingl	status = "okay";
1469ded9b0fSMartin Blumenstingl	pinctrl-0 = <&sdcard_pins>;
14767e7607fSJerome Brunet	pinctrl-1 = <&sdcard_clk_gate_pins>;
14867e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1499ded9b0fSMartin Blumenstingl
1509ded9b0fSMartin Blumenstingl	bus-width = <4>;
1519ded9b0fSMartin Blumenstingl	cap-sd-highspeed;
152adc52bf7SJerome Brunet	max-frequency = <50000000>;
1539ded9b0fSMartin Blumenstingl	disable-wp;
1549ded9b0fSMartin Blumenstingl
155f29200c8SLoys Ollivier	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
1569ded9b0fSMartin Blumenstingl
1579ded9b0fSMartin Blumenstingl	vmmc-supply = <&vddao_3v3>;
1589ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1599ded9b0fSMartin Blumenstingl};
1609ded9b0fSMartin Blumenstingl
1619ded9b0fSMartin Blumenstingl/* eMMC */
1629ded9b0fSMartin Blumenstingl&sd_emmc_c {
1639ded9b0fSMartin Blumenstingl	status = "okay";
164ab36be66SNeil Armstrong	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
16567e7607fSJerome Brunet	pinctrl-1 = <&emmc_clk_gate_pins>;
16667e7607fSJerome Brunet	pinctrl-names = "default", "clk-gate";
1679ded9b0fSMartin Blumenstingl
1689ded9b0fSMartin Blumenstingl	bus-width = <8>;
1699ded9b0fSMartin Blumenstingl	cap-mmc-highspeed;
1709ded9b0fSMartin Blumenstingl	max-frequency = <200000000>;
1719ded9b0fSMartin Blumenstingl	non-removable;
1729ded9b0fSMartin Blumenstingl	disable-wp;
1739ded9b0fSMartin Blumenstingl	mmc-ddr-1_8v;
1749ded9b0fSMartin Blumenstingl	mmc-hs200-1_8v;
1759ded9b0fSMartin Blumenstingl
1769ded9b0fSMartin Blumenstingl	mmc-pwrseq = <&emmc_pwrseq>;
1779ded9b0fSMartin Blumenstingl	vmmc-supply = <&vcc_3v3>;
1789ded9b0fSMartin Blumenstingl	vqmmc-supply = <&vddio_boot>;
1799ded9b0fSMartin Blumenstingl};
1809ded9b0fSMartin Blumenstingl
1819ded9b0fSMartin Blumenstingl/* This is connected to the Bluetooth module: */
1829ded9b0fSMartin Blumenstingl&uart_A {
1839ded9b0fSMartin Blumenstingl	status = "okay";
1849ded9b0fSMartin Blumenstingl	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
1859ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
1869ded9b0fSMartin Blumenstingl	uart-has-rtscts;
187026c20e7SChristian Hewitt
188026c20e7SChristian Hewitt	bluetooth {
189026c20e7SChristian Hewitt		compatible = "brcm,bcm43438-bt";
190026c20e7SChristian Hewitt		shutdown-gpios = <&gpio GPIOX_17 GPIO_ACTIVE_HIGH>;
191026c20e7SChristian Hewitt		max-speed = <2000000>;
192026c20e7SChristian Hewitt		clocks = <&wifi32k>;
193026c20e7SChristian Hewitt		clock-names = "lpo";
194026c20e7SChristian Hewitt	};
1959ded9b0fSMartin Blumenstingl};
1969ded9b0fSMartin Blumenstingl
1979ded9b0fSMartin Blumenstingl&uart_AO {
1989ded9b0fSMartin Blumenstingl	status = "okay";
1999ded9b0fSMartin Blumenstingl	pinctrl-0 = <&uart_ao_a_pins>;
2009ded9b0fSMartin Blumenstingl	pinctrl-names = "default";
2019ded9b0fSMartin Blumenstingl};
202b9f07cb4SMartin Blumenstingl
2032f9139c2SMartin Blumenstingl&usb {
204b9f07cb4SMartin Blumenstingl	status = "okay";
2052f9139c2SMartin Blumenstingl	dr_mode = "host";
206b9f07cb4SMartin Blumenstingl};
207d511b3e4SNeil Armstrong
208d511b3e4SNeil Armstrong&usb2_phy0 {
209d511b3e4SNeil Armstrong	/*
210d511b3e4SNeil Armstrong	 * HDMI_5V is also used as supply for the USB VBUS.
211d511b3e4SNeil Armstrong	 */
212d511b3e4SNeil Armstrong	phy-supply = <&hdmi_5v>;
213d511b3e4SNeil Armstrong};
214