1// SPDX-License-Identifier: GPL-2.0+ OR MIT
2/*
3 * Copyright (C) 2019 Linaro Ltd.
4 */
5
6/dts-v1/;
7
8#include "imx7d.dtsi"
9
10/ {
11	model = "96Boards Meerkat96 Board";
12	compatible = "novtech,imx7d-meerkat96", "fsl,imx7d";
13
14	chosen {
15		stdout-path = &uart6;
16	};
17
18	memory@80000000 {
19		device_type = "memory";
20		reg = <0x80000000 0x20000000>; /* 512MB */
21	};
22
23	reg_wlreg_on: regulator-wlreg-on {
24		compatible = "regulator-fixed";
25		pinctrl-names = "default";
26		pinctrl-0 = <&pinctrl_wlreg_on>;
27		regulator-name = "wlreg_on";
28		regulator-min-microvolt = <3300000>;
29		regulator-max-microvolt = <3300000>;
30		startup-delay-us = <100>;
31		gpio = <&gpio6 15 GPIO_ACTIVE_HIGH>;
32		enable-active-high;
33		regulator-always-on;
34	};
35
36	reg_3p3v: regulator-3p3v {
37		compatible = "regulator-fixed";
38		regulator-name = "3P3V";
39		regulator-min-microvolt = <3300000>;
40		regulator-max-microvolt = <3300000>;
41		regulator-always-on;
42	};
43
44	reg_usb_otg1_vbus: regulator-usb-otg1-vbus {
45		compatible = "regulator-fixed";
46		regulator-name = "usb_otg1_vbus";
47		regulator-min-microvolt = <5000000>;
48		regulator-max-microvolt = <5000000>;
49	};
50
51	reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
52		compatible = "regulator-fixed";
53		regulator-name = "usb_otg2_vbus";
54		regulator-min-microvolt = <5000000>;
55		regulator-max-microvolt = <5000000>;
56		gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
57		enable-active-high;
58	};
59
60	leds {
61		compatible = "gpio-leds";
62		pinctrl-names = "default";
63		pinctrl-0 = <&pinctrl_gpio_leds>;
64
65		led1 {
66			label = "green:user1";
67			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
68			linux,default-trigger = "heartbeat";
69			default-state = "off";
70		};
71
72		led2 {
73			label = "green:user2";
74			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
75			linux,default-trigger = "mmc0";
76			default-state = "off";
77		};
78
79		led3 {
80			label = "green:user3";
81			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
82			linux,default-trigger = "mmc1";
83			default-state = "off";
84		};
85
86		led4 {
87			label = "green:user4";
88			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
89			linux,default-trigger = "none";
90			default-state = "off";
91			panic-indicator;
92		};
93
94		led5 {
95			label = "yellow:wlan";
96			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
97			linux,default-trigger = "phy0tx";
98			default-state = "off";
99		};
100
101		led6 {
102			label = "blue:bt";
103			gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
104			linux,default-trigger = "bluetooth-power";
105			default-state = "off";
106		};
107	};
108};
109
110&i2c1 {
111	pinctrl-names = "default";
112	pinctrl-0 = <&pinctrl_i2c1>;
113	status = "okay";
114};
115
116&i2c2 {
117	pinctrl-names = "default";
118	pinctrl-0 = <&pinctrl_i2c2>;
119	status = "okay";
120};
121
122&i2c3 {
123	pinctrl-names = "default";
124	pinctrl-0 = <&pinctrl_i2c3>;
125	status = "okay";
126};
127
128&i2c4 {
129	pinctrl-names = "default";
130	pinctrl-0 = <&pinctrl_i2c4>;
131	status = "okay";
132};
133
134&lcdif {
135	pinctrl-names = "default";
136	pinctrl-0 = <&pinctrl_lcdif>;
137	status = "okay";
138};
139
140&uart1 {
141	pinctrl-names = "default";
142	pinctrl-0 = <&pinctrl_uart1>;
143	assigned-clocks = <&clks IMX7D_UART1_ROOT_SRC>;
144	assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
145	status = "okay";
146};
147
148&uart3 {
149	pinctrl-names = "default";
150	pinctrl-0 = <&pinctrl_uart3>;
151	assigned-clocks = <&clks IMX7D_UART3_ROOT_SRC>;
152	assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
153	uart-has-rtscts;
154	status = "okay";
155};
156
157&uart6 {
158	pinctrl-names = "default";
159	pinctrl-0 = <&pinctrl_uart6>;
160	assigned-clocks = <&clks IMX7D_UART6_ROOT_SRC>;
161	assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
162	status = "okay";
163};
164
165&uart7 {
166	pinctrl-names = "default";
167	pinctrl-0 = <&pinctrl_uart7 &pinctrl_bt_gpios>;
168	assigned-clocks = <&clks IMX7D_UART7_ROOT_SRC>;
169	assigned-clock-parents = <&clks IMX7D_PLL_SYS_MAIN_240M_CLK>;
170	uart-has-rtscts;
171	fsl,dte-mode;
172	status = "okay";
173
174	bluetooth {
175		compatible = "brcm,bcm43438-bt";
176		device-wakeup-gpios = <&gpio6 13 GPIO_ACTIVE_HIGH>;
177		host-wakeup-gpios = <&gpio4 17 GPIO_ACTIVE_HIGH>;
178	};
179};
180
181&usbotg1 {
182	vbus-supply = <&reg_usb_otg1_vbus>;
183	status = "okay";
184};
185
186&usbotg2 {
187	vbus-supply = <&reg_usb_otg2_vbus>;
188	dr_mode = "host";
189	status = "okay";
190};
191
192&usdhc1 {
193	pinctrl-names = "default";
194	pinctrl-0 = <&pinctrl_usdhc1>;
195	keep-power-in-suspend;
196	fsl,tuning-step = <2>;
197	vmmc-supply = <&reg_3p3v>;
198	no-1-8-v;
199	broken-cd;
200	status = "okay";
201};
202
203&usdhc3 {
204	#address-cells = <1>;
205	#size-cells = <0>;
206	pinctrl-names = "default";
207	pinctrl-0 = <&pinctrl_usdhc3>;
208	bus-width = <4>;
209	no-1-8-v;
210	no-mmc;
211	non-removable;
212	keep-power-in-suspend;
213	wakeup-source;
214	vmmc-supply = <&reg_wlreg_on>;
215	vqmmc-supply =<&reg_3p3v>;
216	status = "okay";
217
218	brcmf: wifi@1 {
219		reg = <1>;
220		compatible = "brcm,bcm4329-fmac";
221		pinctrl-names = "default";
222		pinctrl-0 = <&pinctrl_wlan_irq>;
223		interrupt-parent = <&gpio6>;
224		interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
225		interrupt-names = "host-wake";
226	};
227};
228
229&iomuxc {
230	pinctrl_bt_gpios: btgpiosgrp {
231		fsl,pins = <
232			MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13	0x59
233			MX7D_PAD_ECSPI1_MOSI__GPIO4_IO17	0x1f
234		>;
235	};
236
237	pinctrl_gpio_leds: gpioledsgrp {
238		fsl,pins = <
239			MX7D_PAD_LPSR_GPIO1_IO00__GPIO1_IO0	0x59
240			MX7D_PAD_LPSR_GPIO1_IO04__GPIO1_IO4	0x59
241			MX7D_PAD_LPSR_GPIO1_IO05__GPIO1_IO5	0x59
242			MX7D_PAD_LPSR_GPIO1_IO06__GPIO1_IO6	0x59
243			MX7D_PAD_LPSR_GPIO1_IO07__GPIO1_IO7	0x59
244			MX7D_PAD_SD1_RESET_B__GPIO5_IO2		0x59
245		>;
246	};
247
248	pinctrl_i2c1: i2c1grp {
249		fsl,pins = <
250			MX7D_PAD_I2C1_SDA__I2C1_SDA		0x4000007f
251			MX7D_PAD_I2C1_SCL__I2C1_SCL		0x4000007f
252		>;
253	};
254
255	pinctrl_i2c2: i2c2grp {
256		fsl,pins = <
257			MX7D_PAD_I2C2_SDA__I2C2_SDA		0x4000007f
258			MX7D_PAD_I2C2_SCL__I2C2_SCL		0x4000007f
259		>;
260	};
261
262	pinctrl_i2c3: i2c3grp {
263		fsl,pins = <
264			MX7D_PAD_ENET1_RGMII_RD1__I2C3_SDA	0x4000007f
265			MX7D_PAD_ENET1_RGMII_RD0__I2C3_SCL	0x4000007f
266		>;
267	};
268
269	pinctrl_i2c4: i2c4grp {
270		fsl,pins = <
271			MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA		0x4000007f
272			MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL		0x4000007f
273		>;
274	};
275
276	pinctrl_lcdif: lcdifgrp {
277		fsl,pins = <
278			MX7D_PAD_LCD_DATA00__LCD_DATA0		0x79
279			MX7D_PAD_LCD_DATA01__LCD_DATA1		0x79
280			MX7D_PAD_LCD_DATA02__LCD_DATA2		0x79
281			MX7D_PAD_LCD_DATA03__LCD_DATA3		0x79
282			MX7D_PAD_LCD_DATA04__LCD_DATA4		0x79
283			MX7D_PAD_LCD_DATA05__LCD_DATA5		0x79
284			MX7D_PAD_LCD_DATA06__LCD_DATA6		0x79
285			MX7D_PAD_LCD_DATA07__LCD_DATA7		0x79
286			MX7D_PAD_LCD_DATA08__LCD_DATA8		0x79
287			MX7D_PAD_LCD_DATA09__LCD_DATA9		0x79
288			MX7D_PAD_LCD_DATA10__LCD_DATA10		0x79
289			MX7D_PAD_LCD_DATA11__LCD_DATA11		0x79
290			MX7D_PAD_LCD_DATA12__LCD_DATA12		0x79
291			MX7D_PAD_LCD_DATA13__LCD_DATA13		0x79
292			MX7D_PAD_LCD_DATA14__LCD_DATA14		0x79
293			MX7D_PAD_LCD_DATA15__LCD_DATA15		0x79
294			MX7D_PAD_LCD_DATA16__LCD_DATA16		0x79
295			MX7D_PAD_LCD_DATA17__LCD_DATA17		0x79
296			MX7D_PAD_LCD_DATA18__LCD_DATA18		0x79
297			MX7D_PAD_LCD_DATA19__LCD_DATA19		0x79
298			MX7D_PAD_LCD_DATA20__LCD_DATA20		0x79
299			MX7D_PAD_LCD_DATA21__LCD_DATA21		0x79
300			MX7D_PAD_LCD_DATA22__LCD_DATA22		0x79
301			MX7D_PAD_LCD_DATA23__LCD_DATA23		0x79
302			MX7D_PAD_LCD_CLK__LCD_CLK		0x79
303			MX7D_PAD_LCD_ENABLE__LCD_ENABLE		0x79
304			MX7D_PAD_LCD_VSYNC__LCD_VSYNC		0x79
305			MX7D_PAD_LCD_HSYNC__LCD_HSYNC		0x79
306			MX7D_PAD_LCD_RESET__LCD_RESET		0x79
307		>;
308	};
309
310	pinctrl_uart1: uart1grp {
311		fsl,pins = <
312			MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX	0x79
313			MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX	0x79
314		>;
315	};
316
317	pinctrl_uart3: uart3grp {
318		fsl,pins = <
319			MX7D_PAD_SD3_DATA4__UART3_DCE_RX	0x79
320			MX7D_PAD_SD3_DATA5__UART3_DCE_TX	0x79
321			MX7D_PAD_SD3_DATA6__UART3_DCE_RTS	0x79
322			MX7D_PAD_SD3_DATA7__UART3_DCE_CTS	0x79
323		>;
324	};
325
326	pinctrl_uart6: uart6grp {
327		fsl,pins = <
328			MX7D_PAD_SD1_CD_B__UART6_DCE_RX		0x79
329			MX7D_PAD_SD1_WP__UART6_DCE_TX		0x79
330		>;
331	};
332
333	pinctrl_uart7: uart7grp {
334		fsl,pins = <
335			MX7D_PAD_ECSPI2_SCLK__UART7_DTE_TX	0x79
336			MX7D_PAD_ECSPI2_MOSI__UART7_DTE_RX	0x79
337			MX7D_PAD_ECSPI2_MISO__UART7_DTE_CTS	0x79
338			MX7D_PAD_ECSPI2_SS0__UART7_DTE_RTS	0x79
339		>;
340	};
341
342	pinctrl_usdhc1: usdhc1grp {
343		fsl,pins = <
344			MX7D_PAD_SD1_CMD__SD1_CMD		0x59
345			MX7D_PAD_SD1_CLK__SD1_CLK		0x19
346			MX7D_PAD_SD1_DATA0__SD1_DATA0		0x59
347			MX7D_PAD_SD1_DATA1__SD1_DATA1		0x59
348			MX7D_PAD_SD1_DATA2__SD1_DATA2		0x59
349			MX7D_PAD_SD1_DATA3__SD1_DATA3		0x59
350		>;
351	};
352
353	pinctrl_usdhc3: usdhc3grp {
354		fsl,pins = <
355			MX7D_PAD_SD3_CMD__SD3_CMD		0x59
356			MX7D_PAD_SD3_CLK__SD3_CLK		0x0D
357			MX7D_PAD_SD3_DATA0__SD3_DATA0		0x59
358			MX7D_PAD_SD3_DATA1__SD3_DATA1		0x59
359			MX7D_PAD_SD3_DATA2__SD3_DATA2		0x59
360			MX7D_PAD_SD3_DATA3__SD3_DATA3		0x59
361		>;
362	};
363
364	pinctrl_wlan_irq: wlanirqgrp {
365		fsl,pins = <
366			MX7D_PAD_SAI1_TX_SYNC__GPIO6_IO14	0x19
367		>;
368	};
369
370	pinctrl_wlreg_on: wlregongrp {
371		fsl,pins = <
372			MX7D_PAD_SAI1_TX_DATA__GPIO6_IO15	0x19
373		>;
374	};
375};
376