1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (C) 2018 BTicino
4 * Copyright (C) 2018 Amarula Solutions B.V.
5 */
6
7/dts-v1/;
8
9#include <dt-bindings/gpio/gpio.h>
10#include "imx6dl.dtsi"
11
12/ {
13	model = "BTicino i.MX6DL Mamoj board";
14	compatible = "bticino,imx6dl-mamoj", "fsl,imx6dl";
15
16	/* Will be filled by the bootloader */
17	memory@10000000 {
18		device_type = "memory";
19		reg = <0x10000000 0>;
20	};
21
22	backlight_lcd: backlight-lcd {
23		compatible = "pwm-backlight";
24		pwms = <&pwm3 0 25000>; /* 25000ns -> 40kHz */
25		brightness-levels = <0 4 8 16 32 64 128 160 192 224 255>;
26		default-brightness-level = <7>;
27	};
28
29	display: disp0 {
30		compatible = "fsl,imx-parallel-display";
31		#address-cells = <1>;
32		#size-cells = <0>;
33		interface-pix-fmt = "rgb24";
34		pinctrl-names = "default";
35		pinctrl-0 = <&pinctrl_ipu1_lcdif>;
36		status = "okay";
37
38		port@0 {
39			reg = <0>;
40
41			lcd_display_in: endpoint {
42				remote-endpoint = <&ipu1_di0_disp0>;
43			};
44		};
45
46		port@1 {
47			reg = <1>;
48
49			lcd_display_out: endpoint {
50				remote-endpoint = <&lcd_panel_in>;
51			};
52		};
53	};
54
55	panel-lcd {
56		compatible = "rocktech,rk070er9427";
57		backlight = <&backlight_lcd>;
58		power-supply = <&reg_lcd_lr>;
59		pinctrl-names = "default";
60		pinctrl-0 = <&pinctrl_ipu1_lcdif_pwr>;
61
62		port {
63			lcd_panel_in: endpoint {
64				remote-endpoint = <&lcd_display_out>;
65			};
66		};
67	};
68
69	reg_lcd_3v3: regulator-lcd-dvdd {
70		compatible = "regulator-fixed";
71		regulator-name = "lcd-dvdd";
72		regulator-min-microvolt = <3300000>;
73		regulator-max-microvolt = <3300000>;
74		gpio = <&gpio3 1 0>;
75		enable-active-high;
76		startup-delay-us = <21000>;
77	};
78
79	reg_lcd_power: regulator-lcd-power {
80		compatible = "regulator-fixed";
81		regulator-name = "lcd-enable";
82		regulator-min-microvolt = <3300000>;
83		regulator-max-microvolt = <3300000>;
84		gpio = <&gpio3 6 0>;
85		enable-active-high;
86		vin-supply = <&reg_lcd_3v3>;
87	};
88
89	reg_lcd_vgl: regulator-lcd-vgl {
90		compatible = "regulator-fixed";
91		regulator-name = "lcd-vgl";
92		regulator-min-microvolt = <3300000>;
93		regulator-max-microvolt = <3300000>;
94		gpio = <&gpio2 20 GPIO_ACTIVE_HIGH>;
95		startup-delay-us = <6000>;
96		enable-active-high;
97		vin-supply = <&reg_lcd_power>;
98	};
99
100	reg_lcd_vgh: regulator-lcd-vgh {
101		compatible = "regulator-fixed";
102		regulator-name = "lcd-vgh";
103		regulator-min-microvolt = <3300000>;
104		regulator-max-microvolt = <3300000>;
105		gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
106		startup-delay-us = <6000>;
107		enable-active-high;
108		vin-supply = <&reg_lcd_avdd>;
109	};
110
111	reg_lcd_vcom: regulator-lcd-vcom {
112		compatible = "regulator-fixed";
113		regulator-name = "lcd-vcom";
114		regulator-min-microvolt = <3300000>;
115		regulator-max-microvolt = <3300000>;
116		gpio = <&gpio4 14 GPIO_ACTIVE_HIGH>;
117		startup-delay-us = <11000>;
118		enable-active-high;
119		vin-supply = <&reg_lcd_vgh>;
120	};
121
122	reg_lcd_lr: regulator-lcd-lr {
123		compatible = "regulator-fixed";
124		regulator-name = "lcd-lr";
125		regulator-min-microvolt = <3300000>;
126		regulator-max-microvolt = <3300000>;
127		gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
128		enable-active-high;
129		vin-supply = <&reg_lcd_vcom>;
130	};
131
132	reg_lcd_avdd: regulator-lcd-avdd {
133		compatible = "regulator-fixed";
134		regulator-name = "lcd-avdd";
135		regulator-min-microvolt = <10280000>;
136		regulator-max-microvolt = <10280000>;
137		gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
138		startup-delay-us = <6000>;
139		enable-active-high;
140		vin-supply = <&reg_lcd_vgl>;
141	};
142
143	reg_usb_host: regulator-usb-vbus {
144		compatible = "regulator-fixed";
145		regulator-name = "usbhost-vbus";
146		pinctrl-names = "default";
147		pinctrl-0 = <&pinctrl_usbhost>;
148		regulator-min-microvolt = <50000000>;
149		regulator-max-microvolt = <50000000>;
150		gpio = <&gpio6 6 GPIO_ACTIVE_HIGH>;
151		enable-active-high;
152	};
153
154	reg_wl18xx_vmmc:  regulator-wl18xx-vmcc {
155		compatible = "regulator-fixed";
156		regulator-name = "vwl1807";
157		pinctrl-names = "default";
158		pinctrl-0 = <&pinctrl_wlan>;
159		regulator-min-microvolt = <1800000>;
160		regulator-max-microvolt = <1800000>;
161		gpio = <&gpio6 21 GPIO_ACTIVE_HIGH>;
162		startup-delay-us = <70000>;
163		enable-active-high;
164	};
165};
166
167&fec {
168	pinctrl-names = "default";
169	pinctrl-0 = <&pinctrl_enet>;
170	phy-mode = "mii";
171	status = "okay";
172};
173
174&i2c3 {
175	clock-frequency = <400000>;
176	pinctrl-names = "default";
177	pinctrl-0 = <&pinctrl_i2c3>;
178	status = "okay";
179};
180
181&i2c4 {
182	clock-frequency = <100000>;
183	pinctrl-names = "default";
184	pinctrl-0 = <&pinctrl_i2c4>;
185	status = "okay";
186
187	pfuze100: pmic@8 {
188		compatible = "fsl,pfuze100";
189		reg = <0x08>;
190
191		regulators {
192			/* CPU vdd_arm core */
193			sw1a_reg: sw1ab {
194				regulator-min-microvolt = <300000>;
195				regulator-max-microvolt = <1875000>;
196				regulator-boot-on;
197				regulator-always-on;
198				regulator-ramp-delay = <6250>;
199			};
200
201			/* SOC vdd_soc */
202			sw1c_reg: sw1c {
203				regulator-min-microvolt = <300000>;
204				regulator-max-microvolt = <1875000>;
205				regulator-boot-on;
206				regulator-always-on;
207				regulator-ramp-delay = <6250>;
208			};
209
210			/* I/O power GEN_3V3 */
211			sw2_reg: sw2 {
212				regulator-min-microvolt = <800000>;
213				regulator-max-microvolt = <3300000>;
214				regulator-boot-on;
215				regulator-always-on;
216			};
217
218			/* DDR memory */
219			sw3a_reg: sw3a {
220				regulator-min-microvolt = <400000>;
221				regulator-max-microvolt = <1975000>;
222				regulator-boot-on;
223				regulator-always-on;
224			};
225
226			/* DDR memory */
227			sw3b_reg: sw3b {
228				regulator-min-microvolt = <400000>;
229				regulator-max-microvolt = <1975000>;
230				regulator-boot-on;
231				regulator-always-on;
232			};
233
234			/* not used */
235			sw4_reg: sw4 {
236				regulator-min-microvolt = <800000>;
237				regulator-max-microvolt = <3300000>;
238			};
239
240			/* not used */
241			swbst_reg: swbst {
242				regulator-min-microvolt = <5000000>;
243				regulator-max-microvolt = <5150000>;
244			};
245
246			/* PMIC vsnvs. EX boot mode */
247			snvs_reg: vsnvs {
248				regulator-min-microvolt = <1000000>;
249				regulator-max-microvolt = <3000000>;
250				regulator-boot-on;
251				regulator-always-on;
252			};
253
254			vref_reg: vrefddr {
255				regulator-boot-on;
256				regulator-always-on;
257			};
258
259			/* not used */
260			vgen1_reg: vgen1 {
261				regulator-min-microvolt = <800000>;
262				regulator-max-microvolt = <1550000>;
263			};
264
265			/* not used */
266			vgen2_reg: vgen2 {
267				regulator-min-microvolt = <800000>;
268				regulator-max-microvolt = <1550000>;
269			};
270
271			/* not used */
272			vgen3_reg: vgen3 {
273				regulator-min-microvolt = <1800000>;
274				regulator-max-microvolt = <3300000>;
275			};
276
277			/* 1v8 general power */
278			vgen4_reg: vgen4 {
279				regulator-min-microvolt = <1800000>;
280				regulator-max-microvolt = <3300000>;
281				regulator-always-on;
282			};
283
284			/* 2v8 general power IMX6 */
285			vgen5_reg: vgen5 {
286				regulator-min-microvolt = <1800000>;
287				regulator-max-microvolt = <3300000>;
288				regulator-always-on;
289			};
290
291			/* 3v3 Ethernet */
292			vgen6_reg: vgen6 {
293				regulator-min-microvolt = <1800000>;
294				regulator-max-microvolt = <3300000>;
295				regulator-always-on;
296			};
297		};
298	};
299};
300
301&ipu1_di0_disp0 {
302	remote-endpoint = <&lcd_display_in>;
303};
304
305&pwm3 {
306	#pwm-cells = <2>;
307	pinctrl-names = "default";
308	pinctrl-0 = <&pinctrl_pwm3>;
309	status = "okay";
310};
311
312&uart3 {
313	pinctrl-names = "default";
314	pinctrl-0 = <&pinctrl_uart3>;
315	status = "okay";
316};
317
318&usbh1 {
319	vbus-supply = <&reg_usb_host>;
320	status = "okay";
321};
322
323&usbotg {
324	dr_mode = "peripheral";
325	status = "okay";
326};
327
328&usdhc1 {
329	pinctrl-names = "default";
330	pinctrl-0 = <&pinctrl_usdhc1>;
331	bus-width = <4>;
332	vmmc-supply = <&reg_wl18xx_vmmc>;
333	no-1-8-v;
334	non-removable;
335	wakeup-source;
336	keep-power-in-suspend;
337	cap-power-off-card;
338	max-frequency = <25000000>;
339	#address-cells = <1>;
340	#size-cells = <0>;
341	status = "okay";
342
343	wlcore: wlcore@2 {
344		compatible = "ti,wl1837";
345		reg = <2>;
346		interrupt-parent = <&gpio6>;
347		interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
348		tcxo-clock-frequency = <26000000>;
349	};
350};
351
352&usdhc3 {
353	pinctrl-names = "default";
354	pinctrl-0 = <&pinctrl_usdhc3>;
355	bus-width = <8>;
356	non-removable;
357	keep-power-in-suspend;
358	status = "okay";
359};
360
361&iomuxc {
362	pinctrl_enet: enetgrp {
363		fsl,pins = <
364			MX6QDL_PAD_ENET_MDIO__ENET_MDIO		0x1b0b0
365			MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
366			MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b1
367			MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0	0x1b0b0
368			MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1	0x1b0b0
369			MX6QDL_PAD_KEY_ROW2__ENET_TX_DATA2	0x1b0b0
370			MX6QDL_PAD_KEY_ROW0__ENET_TX_DATA3	0x1b0b0
371			MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN	0x1b0b0
372			MX6QDL_PAD_GPIO_19__ENET_TX_ER		0x1b0b0
373			MX6QDL_PAD_GPIO_18__ENET_RX_CLK		0x1b0b1
374			MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0	0x1b0b0
375			MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1	0x1b0b0
376			MX6QDL_PAD_KEY_COL2__ENET_RX_DATA2	0x1b0b0
377			MX6QDL_PAD_KEY_COL0__ENET_RX_DATA3      0x1b0b0
378			MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN	0x1b0b0
379			MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER	0x1b0b0
380			MX6QDL_PAD_KEY_COL3__ENET_CRS		0x1b0b0
381			MX6QDL_PAD_KEY_ROW1__ENET_COL		0x1b0b0
382		>;
383	};
384
385	pinctrl_i2c3: i2c3grp {
386		fsl,pins = <
387			MX6QDL_PAD_GPIO_3__I2C3_SCL     0x4001b8b1
388			MX6QDL_PAD_GPIO_6__I2C3_SDA     0x4001b8b1
389		>;
390	};
391
392	pinctrl_i2c4: i2c4grp {
393		fsl,pins = <
394			MX6QDL_PAD_GPIO_7__I2C4_SCL	0x4001b8b1
395			MX6QDL_PAD_GPIO_8__I2C4_SDA	0x4001b8b1
396		>;
397	};
398
399	pinctrl_ipu1_lcdif: pinctrlipu1lcdif { /* parallel port 24-bit */
400		fsl,pins = <
401			MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10 /* VDOUT_PCLK */
402			MX6QDL_PAD_DI0_PIN15__IPU1_DI0_PIN15       0x10
403			MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02        0x10 /* VDOUT_HSYNC */
404			MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03        0x10 /* VDOUT_VSYNC */
405			MX6QDL_PAD_DI0_PIN4__IPU1_DI0_PIN04	   0x10 /* VDOUT_RESET */
406			MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00   0x10
407			MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01   0x10
408			MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02   0x10
409			MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03   0x10
410			MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04   0x10
411			MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05   0x10
412			MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06   0x10
413			MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07   0x10
414			MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08   0x10
415			MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09   0x10
416			MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10  0x10
417			MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11  0x10
418			MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12  0x10
419			MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13  0x10
420			MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14  0x10
421			MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15  0x10
422			MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16  0x10
423			MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17  0x10
424			MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18  0x10
425			MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19  0x10
426			MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20  0x10
427			MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21  0x10
428			MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22  0x10
429			MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23  0x10
430		>;
431	};
432
433	pinctrl_ipu1_lcdif_pwr: ipu1lcdifpwrgrp {
434		fsl,pins = <
435			MX6QDL_PAD_EIM_DA1__GPIO3_IO01		0x40013058 /* EN_LCD33V */
436			MX6QDL_PAD_SD4_DAT5__GPIO2_IO13		0x4001b0b0 /* EN_AVDD */
437			MX6QDL_PAD_EIM_D31__GPIO3_IO31		0x40013058 /* ENVGH */
438			MX6QDL_PAD_EIM_A18__GPIO2_IO20		0x40013058 /* ENVGL */
439			MX6QDL_PAD_EIM_DA6__GPIO3_IO06		0x40013058 /* LCD_POWER */
440			MX6QDL_PAD_KEY_COL4__GPIO4_IO14		0x40013058 /* EN_VCOM_LCD */
441			MX6QDL_PAD_KEY_ROW4__GPIO4_IO15		0x40013058 /* LCD_L_R */
442			MX6QDL_PAD_EIM_DA2__GPIO3_IO02		0x40013058 /* LCD_U_D */
443		>;
444	};
445
446	pinctrl_pwm3: pwm3grp {
447		fsl,pins = <
448			MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
449		>;
450	};
451
452	pinctrl_uart3: uart3grp {
453		fsl,pins = <
454			MX6QDL_PAD_EIM_D24__UART3_TX_DATA	0x1b0b1
455			MX6QDL_PAD_EIM_D25__UART3_RX_DATA	0x1b0b1
456		>;
457	};
458
459	pinctrl_usbhost: usbhostgrp {
460		fsl,pins = <
461			MX6QDL_PAD_EIM_A23__GPIO6_IO06		0x4001b0b0
462		>;
463	};
464
465	pinctrl_usdhc1: usdhc1grp {
466		fsl,pins = <
467			MX6QDL_PAD_SD1_CMD__SD1_CMD    0x17069
468			MX6QDL_PAD_SD1_CLK__SD1_CLK    0x10079
469			MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17069
470			MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17069
471			MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17069
472			MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17069
473		>;
474	};
475
476	pinctrl_usdhc3: usdhc3grp {
477		fsl,pins = <
478			MX6QDL_PAD_SD3_CMD__SD3_CMD	0x17059
479			MX6QDL_PAD_SD3_CLK__SD3_CLK	0x10059
480			MX6QDL_PAD_SD3_DAT0__SD3_DATA0	0x17059
481			MX6QDL_PAD_SD3_DAT1__SD3_DATA1	0x17059
482			MX6QDL_PAD_SD3_DAT2__SD3_DATA2	0x17059
483			MX6QDL_PAD_SD3_DAT3__SD3_DATA3	0x17059
484			MX6QDL_PAD_SD3_DAT4__SD3_DATA4	0x17059
485			MX6QDL_PAD_SD3_DAT5__SD3_DATA5	0x17059
486			MX6QDL_PAD_SD3_DAT6__SD3_DATA6	0x17059
487			MX6QDL_PAD_SD3_DAT7__SD3_DATA7	0x17059
488		>;
489	};
490
491	pinctrl_wlan: wlangrp {
492		fsl,pins = <
493			MX6QDL_PAD_RGMII_TD1__GPIO6_IO21	0x4001b0b0
494		>;
495	};
496};
497