1/*
2 * Copyright (c) 2016 Martin Blumenstingl <martin.blumenstingl@googlemail.com>.
3 * Based on meson-gx-p23x-q20x.dtsi:
4 * - Copyright (c) 2016 Endless Computers, Inc.
5 *   Author: Carlo Caione <carlo@endlessm.com>
6 * - Copyright (c) 2016 BayLibre, SAS.
7 *   Author: Neil Armstrong <narmstrong@baylibre.com>
8 *
9 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
10 */
11
12/* Common DTSI for devices which are based on the P212 reference board. */
13
14#include "meson-gxl-s905x.dtsi"
15
16/ {
17	aliases {
18		serial0 = &uart_AO;
19		serial1 = &uart_A;
20		ethernet0 = &ethmac;
21	};
22
23	chosen {
24		stdout-path = "serial0:115200n8";
25	};
26
27	memory@0 {
28		device_type = "memory";
29		reg = <0x0 0x0 0x0 0x80000000>;
30	};
31
32	hdmi_5v: regulator-hdmi-5v {
33		compatible = "regulator-fixed";
34
35		regulator-name = "HDMI_5V";
36		regulator-min-microvolt = <5000000>;
37		regulator-max-microvolt = <5000000>;
38
39		gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
40		enable-active-high;
41		regulator-always-on;
42	};
43
44	vddio_boot: regulator-vddio_boot {
45		compatible = "regulator-fixed";
46		regulator-name = "VDDIO_BOOT";
47		regulator-min-microvolt = <1800000>;
48		regulator-max-microvolt = <1800000>;
49	};
50
51	vddao_3v3: regulator-vddao_3v3 {
52		compatible = "regulator-fixed";
53		regulator-name = "VDDAO_3V3";
54		regulator-min-microvolt = <3300000>;
55		regulator-max-microvolt = <3300000>;
56	};
57
58	vddio_ao18: regulator-vddio_ao18 {
59		compatible = "regulator-fixed";
60		regulator-name = "VDDIO_AO18";
61		regulator-min-microvolt = <1800000>;
62		regulator-max-microvolt = <1800000>;
63	};
64
65	vcc_3v3: regulator-vcc_3v3 {
66		compatible = "regulator-fixed";
67		regulator-name = "VCC_3V3";
68		regulator-min-microvolt = <3300000>;
69		regulator-max-microvolt = <3300000>;
70	};
71
72	emmc_pwrseq: emmc-pwrseq {
73		compatible = "mmc-pwrseq-emmc";
74		reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
75	};
76
77	wifi32k: wifi32k {
78		compatible = "pwm-clock";
79		#clock-cells = <0>;
80		clock-frequency = <32768>;
81		pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
82	};
83
84	sdio_pwrseq: sdio-pwrseq {
85		compatible = "mmc-pwrseq-simple";
86		reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
87		clocks = <&wifi32k>;
88		clock-names = "ext_clock";
89	};
90};
91
92&ethmac {
93	status = "okay";
94};
95
96&ir {
97	status = "okay";
98	pinctrl-0 = <&remote_input_ao_pins>;
99	pinctrl-names = "default";
100};
101
102&saradc {
103	status = "okay";
104	vref-supply = <&vddio_ao18>;
105};
106
107/* Wireless SDIO Module */
108&sd_emmc_a {
109	status = "okay";
110	pinctrl-0 = <&sdio_pins>;
111	pinctrl-1 = <&sdio_clk_gate_pins>;
112	pinctrl-names = "default", "clk-gate";
113	#address-cells = <1>;
114	#size-cells = <0>;
115
116	bus-width = <4>;
117	cap-sd-highspeed;
118	max-frequency = <100000000>;
119
120	non-removable;
121	disable-wp;
122
123	mmc-pwrseq = <&sdio_pwrseq>;
124
125	vmmc-supply = <&vddao_3v3>;
126	vqmmc-supply = <&vddio_boot>;
127};
128
129/* SD card */
130&sd_emmc_b {
131	status = "okay";
132	pinctrl-0 = <&sdcard_pins>;
133	pinctrl-1 = <&sdcard_clk_gate_pins>;
134	pinctrl-names = "default", "clk-gate";
135
136	bus-width = <4>;
137	cap-sd-highspeed;
138	max-frequency = <100000000>;
139	disable-wp;
140
141	cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
142	cd-inverted;
143
144	vmmc-supply = <&vddao_3v3>;
145	vqmmc-supply = <&vddio_boot>;
146};
147
148/* eMMC */
149&sd_emmc_c {
150	status = "okay";
151	pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
152	pinctrl-1 = <&emmc_clk_gate_pins>;
153	pinctrl-names = "default", "clk-gate";
154
155	bus-width = <8>;
156	cap-mmc-highspeed;
157	max-frequency = <200000000>;
158	non-removable;
159	disable-wp;
160	mmc-ddr-1_8v;
161	mmc-hs200-1_8v;
162
163	mmc-pwrseq = <&emmc_pwrseq>;
164	vmmc-supply = <&vcc_3v3>;
165	vqmmc-supply = <&vddio_boot>;
166};
167
168&pwm_ef {
169	status = "okay";
170	pinctrl-0 = <&pwm_e_pins>;
171	pinctrl-names = "default";
172	clocks = <&clkc CLKID_FCLK_DIV4>;
173	clock-names = "clkin0";
174};
175
176/* This is connected to the Bluetooth module: */
177&uart_A {
178	status = "okay";
179	pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
180	pinctrl-names = "default";
181	uart-has-rtscts;
182};
183
184&uart_AO {
185	status = "okay";
186	pinctrl-0 = <&uart_ao_a_pins>;
187	pinctrl-names = "default";
188};
189