1/*
2 * Copyright 2017 NXP
3 *
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 *  a) This file is free software; you can redistribute it and/or
10 *     modify it under the terms of the GNU General Public License as
11 *     published by the Free Software Foundation; either version 2 of the
12 *     License, or (at your option) any later version.
13 *
14 *     This file is distributed in the hope that it will be useful,
15 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *     GNU General Public License for more details.
18 *
19 * Or, alternatively,
20 *
21 *  b) Permission is hereby granted, free of charge, to any person
22 *     obtaining a copy of this software and associated documentation
23 *     files (the "Software"), to deal in the Software without
24 *     restriction, including without limitation the rights to use,
25 *     copy, modify, merge, publish, distribute, sublicense, and/or
26 *     sell copies of the Software, and to permit persons to whom the
27 *     Software is furnished to do so, subject to the following
28 *     conditions:
29 *
30 *     The above copyright notice and this permission notice shall be
31 *     included in all copies or substantial portions of the Software.
32 *
33 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
34 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40 *     OTHER DEALINGS IN THE SOFTWARE.
41 */
42
43/dts-v1/;
44
45#include "imx7d.dtsi"
46
47/ {
48	model = "Technexion Pico i.MX7D Board";
49	compatible = "technexion,imx7d-pico", "fsl,imx7d";
50
51	memory@80000000 {
52		reg = <0x80000000 0x80000000>;
53	};
54
55	reg_ap6212: regulator-ap6212 {
56		compatible = "regulator-fixed";
57		pinctrl-names = "default";
58		pinctrl-0 = <&pinctrl_reg_ap6212>;
59		regulator-name = "AP6212";
60		regulator-min-microvolt = <3300000>;
61		regulator-max-microvolt = <3300000>;
62		gpio = <&gpio4 16 GPIO_ACTIVE_HIGH>;
63		enable-active-high;
64	};
65
66	reg_2p5v: regulator-2p5v {
67		compatible = "regulator-fixed";
68		regulator-name = "2P5V";
69		regulator-min-microvolt = <2500000>;
70		regulator-max-microvolt = <2500000>;
71		regulator-always-on;
72	};
73
74	reg_3p3v: regulator-3p3v {
75		compatible = "regulator-fixed";
76		regulator-name = "3P3V";
77		regulator-min-microvolt = <3300000>;
78		regulator-max-microvolt = <3300000>;
79		regulator-always-on;
80	};
81
82	reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
83		compatible = "regulator-fixed";
84		regulator-name = "usb_otg1_vbus";
85		regulator-min-microvolt = <5000000>;
86		regulator-max-microvolt = <5000000>;
87		gpio = <&gpio4 5 GPIO_ACTIVE_LOW>;
88	};
89
90	reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
91		compatible = "regulator-fixed";
92		regulator-name = "usb_otg2_vbus";
93		regulator-min-microvolt = <5000000>;
94		regulator-max-microvolt = <5000000>;
95	};
96
97	reg_vref_1v8: regulator-vref-1v8 {
98		compatible = "regulator-fixed";
99		regulator-name = "vref-1v8";
100		regulator-min-microvolt = <1800000>;
101		regulator-max-microvolt = <1800000>;
102	};
103};
104
105&i2c4 {
106	pinctrl-names = "default";
107	pinctrl-0 = <&pinctrl_i2c4>;
108	status = "okay";
109
110	pmic: pfuze3000@8 {
111		compatible = "fsl,pfuze3000";
112		reg = <0x08>;
113
114		regulators {
115			sw1a_reg: sw1a {
116				regulator-min-microvolt = <700000>;
117				regulator-max-microvolt = <3300000>;
118				regulator-boot-on;
119				regulator-always-on;
120				regulator-ramp-delay = <6250>;
121			};
122			/* use sw1c_reg to align with pfuze100/pfuze200 */
123			sw1c_reg: sw1b {
124				regulator-min-microvolt = <700000>;
125				regulator-max-microvolt = <1475000>;
126				regulator-boot-on;
127				regulator-always-on;
128				regulator-ramp-delay = <6250>;
129			};
130
131			sw2_reg: sw2 {
132				regulator-min-microvolt = <1800000>;
133				regulator-max-microvolt = <1850000>;
134				regulator-boot-on;
135				regulator-always-on;
136			};
137
138			sw3a_reg: sw3 {
139				regulator-min-microvolt = <900000>;
140				regulator-max-microvolt = <1650000>;
141				regulator-boot-on;
142				regulator-always-on;
143			};
144
145			swbst_reg: swbst {
146				regulator-min-microvolt = <5000000>;
147				regulator-max-microvolt = <5150000>;
148			};
149
150			snvs_reg: vsnvs {
151				regulator-min-microvolt = <1000000>;
152				regulator-max-microvolt = <3000000>;
153				regulator-boot-on;
154				regulator-always-on;
155			};
156
157			vref_reg: vrefddr {
158				regulator-boot-on;
159				regulator-always-on;
160			};
161
162			vgen1_reg: vldo1 {
163				regulator-min-microvolt = <1800000>;
164				regulator-max-microvolt = <3300000>;
165				regulator-always-on;
166			};
167
168			vgen2_reg: vldo2 {
169				regulator-min-microvolt = <800000>;
170				regulator-max-microvolt = <1550000>;
171			};
172
173			vgen3_reg: vccsd {
174				regulator-min-microvolt = <2850000>;
175				regulator-max-microvolt = <3300000>;
176				regulator-always-on;
177			};
178
179			vgen4_reg: v33 {
180				regulator-min-microvolt = <2850000>;
181				regulator-max-microvolt = <3300000>;
182				regulator-always-on;
183			};
184
185			vgen5_reg: vldo3 {
186				regulator-min-microvolt = <1800000>;
187				regulator-max-microvolt = <3300000>;
188				regulator-always-on;
189			};
190
191			vgen6_reg: vldo4 {
192				regulator-min-microvolt = <1800000>;
193				regulator-max-microvolt = <3300000>;
194				regulator-always-on;
195			};
196		};
197	};
198};
199
200&usdhc2 { /* Wifi SDIO */
201	pinctrl-names = "default";
202	pinctrl-0 = <&pinctrl_usdhc2>;
203	no-1-8-v;
204	non-removable;
205	keep-power-in-suspend;
206	wakeup-source;
207	vmmc-supply = <&reg_ap6212>;
208	status = "okay";
209};
210
211&usdhc3 {
212	pinctrl-names = "default", "state_100mhz", "state_200mhz";
213	pinctrl-0 = <&pinctrl_usdhc3>;
214	pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
215	pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
216	assigned-clocks = <&clks IMX7D_USDHC3_ROOT_CLK>;
217	assigned-clock-rates = <400000000>;
218	bus-width = <8>;
219	no-1-8-v;
220	fsl,tuning-step = <2>;
221	non-removable;
222	status = "okay";
223};
224
225&wdog1 {
226	pinctrl-names = "default";
227	pinctrl-0 = <&pinctrl_wdog>;
228	fsl,ext-reset-output;
229	status = "okay";
230};
231
232&iomuxc {
233	pinctrl_i2c4: i2c4grp {
234		fsl,pins = <
235			MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA		0x4000007f
236			MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL		0x4000007f
237		>;
238	};
239
240	pinctrl_reg_ap6212: regap6212grp {
241		fsl,pins = <
242			MX7D_PAD_ECSPI1_SCLK__GPIO4_IO16	0x59
243		>;
244	};
245
246	pinctrl_usdhc2: usdhc2grp {
247		fsl,pins = <
248			MX7D_PAD_SD2_CMD__SD2_CMD		0x59
249			MX7D_PAD_SD2_CLK__SD2_CLK		0x19
250			MX7D_PAD_SD2_DATA0__SD2_DATA0		0x59
251			MX7D_PAD_SD2_DATA1__SD2_DATA1		0x59
252			MX7D_PAD_SD2_DATA2__SD2_DATA2		0x59
253			MX7D_PAD_SD2_DATA3__SD2_DATA3		0x59
254		>;
255	};
256
257	pinctrl_usdhc3: usdhc3grp {
258		fsl,pins = <
259			MX7D_PAD_SD3_CMD__SD3_CMD		0x59
260			MX7D_PAD_SD3_CLK__SD3_CLK		0x19
261			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x59
262			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x59
263			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x59
264			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x59
265			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x59
266			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x59
267			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x59
268			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x59
269		>;
270	};
271
272	pinctrl_usdhc3_100mhz: usdhc3grp_100mhz {
273		fsl,pins = <
274			MX7D_PAD_SD3_CMD__SD3_CMD		0x5a
275			MX7D_PAD_SD3_CLK__SD3_CLK		0x1a
276			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x5a
277			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x5a
278			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x5a
279			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x5a
280			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x5a
281			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x5a
282			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x5a
283			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x5a
284		>;
285	};
286
287	pinctrl_usdhc3_200mhz: usdhc3grp_200mhz {
288		fsl,pins = <
289			MX7D_PAD_SD3_CMD__SD3_CMD		0x5b
290			MX7D_PAD_SD3_CLK__SD3_CLK		0x1b
291			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x5b
292			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x5b
293			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x5b
294			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x5b
295			MX7D_PAD_SD3_DATA4__SD3_DATA4		0x5b
296			MX7D_PAD_SD3_DATA5__SD3_DATA5		0x5b
297			MX7D_PAD_SD3_DATA6__SD3_DATA6		0x5b
298			MX7D_PAD_SD3_DATA7__SD3_DATA7		0x5b
299		>;
300	};
301};
302
303&iomuxc_lpsr {
304	pinctrl_wdog: wdoggrp {
305		fsl,pins = <
306			MX7D_PAD_LPSR_GPIO1_IO00__WDOG1_WDOG_B	0x74
307		>;
308	};
309};
310