1/*
2 * GE B1x5v2 Patient Monitor
3 *
4 * Copyright 2018-2020 GE Inc.
5 * Copyright 2018-2020 Collabora Ltd.
6 *
7 * SPDX-License-Identifier:    GPL-2.0+
8 */
9
10/dts-v1/;
11
12#include "imx6dl.dtsi"
13#include <dt-bindings/gpio/gpio.h>
14
15/ {
16	compatible = "ge,imx6dl-b1x5v2", "congatec,qmx6", "fsl,imx6dl";
17
18	chosen {
19		bootargs = "console=ttymxc2,115200";
20		stdout-path = &uart3;
21	};
22
23	reg_3p3v: 3p3v {
24		compatible = "regulator-fixed";
25		regulator-name = "3P3V";
26		regulator-min-microvolt = <3300000>;
27		regulator-max-microvolt = <3300000>;
28		regulator-always-on;
29	};
30
31	reg_5v: regulator-5v {
32		compatible = "regulator-fixed";
33		regulator-name = "5V";
34		regulator-min-microvolt = <5000000>;
35		regulator-max-microvolt = <5000000>;
36		regulator-always-on;
37	};
38
39	reg_5v0_audio: regulator-5v0-audio {
40		compatible = "regulator-fixed";
41		regulator-name = "5V0_AUDIO";
42		regulator-min-microvolt = <5000000>;
43		regulator-max-microvolt = <5000000>;
44		vin-supply = <&reg_5v>;
45
46		gpio = <&tca6424a 16 GPIO_ACTIVE_HIGH>;
47		enable-active-high;
48
49		/*
50		 * This must be always-on for da7212, which has some not properly
51		 * documented dependencies for it's speaker supply pin. The issue
52		 * manifests as speaker volume being very low.
53		 */
54		regulator-always-on;
55		regulator-boot-on;
56	};
57
58	reg_lcd: regulator-lcd {
59		compatible = "regulator-fixed";
60		regulator-name = "LED_VCC";
61		regulator-min-microvolt = <12000000>;
62		regulator-max-microvolt = <12000000>;
63
64		pinctrl-0 = <&pinctrl_q7_lcd_power>;
65		pinctrl-names = "default";
66		gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>; // LCDPWR
67		enable-active-high;
68	};
69
70	usb_power: regulator-usb-power {
71		compatible = "regulator-fixed";
72		regulator-name = "USB POWER";
73		regulator-min-microvolt = <5000000>;
74		regulator-max-microvolt = <5000000>;
75		vin-supply = <&reg_5v>;
76	};
77
78	backlight: backlight {
79		compatible = "pwm-backlight";
80		pinctrl-names = "default";
81		pinctrl-0 = <&pinctrl_q7_backlight_enable>;
82		power-supply = <&reg_lcd>;
83		pwms = <&pwm4 0 5000000>;
84		brightness-levels = <0 4 8 16 32 64 128 255>;
85		default-brightness-level = <7>;
86		enable-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
87	};
88
89	panel {
90		compatible = "simple-panel";
91		backlight = <&backlight>;
92
93		port {
94			panel_in: endpoint {
95				remote-endpoint = <&lvds0_out>;
96			};
97		};
98	};
99
100	bootcount {
101		compatible = "u-boot,bootcount-spi-flash";
102		spi-flash = <&flash>;
103		offset = <0x01003fe>;
104	};
105
106	leds {
107		compatible = "gpio-leds";
108		pinctrl-names = "default";
109		pinctrl-0 = <&pinctrl_q7_gpio1 &pinctrl_q7_gpio3 &pinctrl_q7_gpio5>;
110
111		alarm1 {
112			label = "alarm:red";
113			gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
114		};
115
116		alarm2 {
117			label = "alarm:yellow";
118			gpios = <&gpio4 27 GPIO_ACTIVE_HIGH>;
119		};
120
121		alarm3 {
122			label = "alarm:blue";
123			gpios = <&gpio4 15 GPIO_ACTIVE_HIGH>;
124		};
125	};
126
127	poweroff {
128		compatible = "gpio-poweroff";
129		pinctrl-names = "default";
130		pinctrl-0 = <&pinctrl_q7_spi_cs1>;
131		gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;
132		active-delay-ms = <1000>;
133		inactive-delay-ms = <0>;
134		timeout-ms = <5000>;
135	};
136
137	i2cmux {
138		compatible = "i2c-mux-gpio";
139		#address-cells = <1>;
140		#size-cells = <0>;
141		pinctrl-names = "default";
142		pinctrl-0 = <&pinctrl_i2cmux>;
143		mux-gpios = <&gpio6 9 GPIO_ACTIVE_HIGH>;
144		i2c-parent = <&i2c2>;
145		idle-state = <1>;
146
147		i2c5: i2c@0 {
148			reg = <0>;
149			#address-cells = <1>;
150			#size-cells = <0>;
151
152			tmp112: temperature-sensor@48 {
153				compatible = "ti,tmp112";
154				reg = <0x48>;
155				interrupt-parent = <&tca6424a>;
156				interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
157			};
158
159			tca6424a: gpio-controller@22 {
160				compatible = "ti,tca6424";
161				reg = <0x22>;
162				gpio-controller;
163				#gpio-cells = <2>;
164
165				interrupt-parent = <&gpio7>;
166				interrupts = <11 IRQ_TYPE_EDGE_RISING>;
167				pinctrl-names = "default";
168				pinctrl-0 = <&pinctrl_q7_gpio6>;
169				interrupt-controller;
170				#interrupt-cells = <2>;
171
172				gpio-line-names = "GPIO_ROTOR#", "", "TMP_SENSOR_IRQ", "ACM_GPIO1", "ACM_GPIO2", "BATT_T", "", "",
173						  "ACM_GPIO3", "ACM_GPIO4", "USB1_POWER_EN", "EGPIO_CC_CTL0", "EGPIO_CC_CTL1", "12V_OEMNBP_EN", "CP2105_RST", "",
174						  "SPEAKER_PA_EN", "ARM7_UPI_RESET", "ARM7_PWR_RST", "NURSE_CALL", "MARKER_EN", "EGPIO_TOUCH_RST", "", "";
175			};
176		};
177
178		i2c6: i2c@1 {
179			reg = <1>;
180			#address-cells = <1>;
181			#size-cells = <0>;
182
183			pmic: pmic@08 {
184				compatible = "fsl,pfuze100";
185				reg = <0x08>;
186			};
187		};
188	};
189};
190
191&usbh1 {
192	/* Connected to USB-Hub SMSC USB2514, provides P0, P2, P3, P4 on Qseven connector */
193	vbus-supply = <&reg_5v>;
194	status = "okay";
195};
196
197&usbotg {
198	pinctrl-names = "default";
199	pinctrl-0 = <&pinctrl_usbotg>;
200	vbus-supply = <&usb_power>;
201	disable-over-current;
202	dr_mode = "host";
203	status = "okay";
204};
205
206&pmic {
207	regulators {
208		sw1a_reg: sw1ab {
209			regulator-min-microvolt = <300000>;
210			regulator-max-microvolt = <1875000>;
211			regulator-boot-on;
212			regulator-always-on;
213			regulator-ramp-delay = <6250>;
214		};
215
216		sw1c_reg: sw1c {
217			regulator-min-microvolt = <300000>;
218			regulator-max-microvolt = <1875000>;
219			regulator-boot-on;
220			regulator-always-on;
221			regulator-ramp-delay = <6250>;
222		};
223
224		sw2_reg: sw2 {
225			regulator-min-microvolt = <800000>;
226			regulator-max-microvolt = <3300000>;
227			regulator-boot-on;
228			regulator-always-on;
229		};
230
231		sw3a_reg: sw3a {
232			regulator-min-microvolt = <400000>;
233			regulator-max-microvolt = <1975000>;
234			regulator-boot-on;
235			regulator-always-on;
236		};
237
238		sw3b_reg: sw3b {
239			regulator-min-microvolt = <400000>;
240			regulator-max-microvolt = <1975000>;
241			regulator-boot-on;
242			regulator-always-on;
243		};
244
245		sw4_reg: sw4 {
246			regulator-min-microvolt = <675000>;
247			regulator-max-microvolt = <3300000>;
248			regulator-boot-on;
249			regulator-always-on;
250		};
251
252		swbst_reg: swbst {
253			regulator-min-microvolt = <5000000>;
254			regulator-max-microvolt = <5150000>;
255		};
256
257		snvs_reg: vsnvs {
258			regulator-min-microvolt = <1000000>;
259			regulator-max-microvolt = <3000000>;
260			regulator-boot-on;
261			regulator-always-on;
262		};
263
264		vref_reg: vrefddr {
265			regulator-boot-on;
266			regulator-always-on;
267		};
268
269		/* keep VGEN3, VGEN4 and VGEN5 enabled in order to maintain backward compatibility with hw-rev. A.0 */
270		vgen3_reg: vgen3 {
271			regulator-min-microvolt = <1800000>;
272			regulator-max-microvolt = <3300000>;
273			regulator-always-on;
274		};
275
276		vgen4_reg: vgen4 {
277			regulator-min-microvolt = <2500000>;
278			regulator-max-microvolt = <2500000>;
279			regulator-always-on;
280		};
281
282		vgen5_reg: vgen5 {
283			regulator-min-microvolt = <1800000>;
284			regulator-max-microvolt = <3300000>;
285			regulator-always-on;
286		};
287
288		/* supply voltage for eMMC */
289		vgen6_reg: vgen6 {
290			regulator-min-microvolt = <1800000>;
291			regulator-max-microvolt = <1800000>;
292			regulator-boot-on;
293			regulator-always-on;
294		};
295	};
296};
297
298&uart2 {
299	pinctrl-names = "default";
300	pinctrl-0 = <&pinctrl_uart2>;
301	status = "okay";
302};
303
304&uart3 {
305	pinctrl-names = "default";
306	pinctrl-0 = <&pinctrl_uart3>;
307	status = "okay";
308};
309
310&usdhc2 {
311	/* MicroSD card slot */
312	pinctrl-names = "default";
313	pinctrl-0 = <&pinctrl_usdhc2>;
314	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
315	no-1-8-v;
316	keep-power-in-suspend;
317	wakeup-source;
318	vmmc-supply = <&reg_3p3v>;
319	status = "okay";
320};
321
322&usdhc3 {
323	/* eMMC module */
324	pinctrl-names = "default";
325	pinctrl-0 = <&pinctrl_usdhc3>;
326	non-removable;
327	bus-width = <8>;
328	no-1-8-v;
329	keep-power-in-suspend;
330	wakeup-source;
331	vmmc-supply = <&reg_3p3v>;
332	status = "okay";
333};
334
335&i2c1 {
336	status = "okay";
337	pinctrl-names = "default", "gpio";
338	pinctrl-0 = <&pinctrl_i2c1>;
339	pinctrl-1 = <&pinctrl_i2c1_gpio>;
340	scl-gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
341	sda-gpios = <&gpio3 28 GPIO_ACTIVE_HIGH>;
342
343	clock-frequency = <100000>;
344};
345
346&i2c2 {
347	status = "okay";
348	pinctrl-names = "default", "gpio";
349	pinctrl-0 = <&pinctrl_i2c2>;
350	pinctrl-1 = <&pinctrl_i2c2_gpio>;
351	scl-gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;
352	sda-gpios = <&gpio4 13 GPIO_ACTIVE_HIGH>;
353
354	clock-frequency = <100000>;
355};
356
357&i2c3 {
358	status = "okay";
359	pinctrl-names = "default", "gpio";
360	pinctrl-0 = <&pinctrl_i2c3>;
361	pinctrl-1 = <&pinctrl_i2c3_gpio>;
362	scl-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
363	sda-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
364
365	clock-frequency = <100000>;
366
367	rtc: m41t62@68 {
368		compatible = "st,m41t62";
369		reg = <0x68>;
370	};
371};
372
373&ldb {
374	status = "okay";
375
376	lvds0: lvds-channel@0 {
377		status = "okay";
378		fsl,data-mapping = "spwg";
379		fsl,data-width = <24>;
380
381		port@4 {
382			reg = <4>;
383			lvds0_out: endpoint {
384				remote-endpoint = <&panel_in>;
385			};
386		};
387	};
388};
389
390&hdmi {
391	status = "okay";
392};
393
394&fec {
395	pinctrl-names = "default";
396	pinctrl-0 = <&pinctrl_enet &pinctrl_phy_reset>;
397	phy-mode = "rgmii-id";
398	phy-handle = <&phy>;
399	status = "okay";
400
401	fsl,magic-packet;
402
403	mdio {
404		#address-cells = <1>;
405		#size-cells = <0>;
406
407		phy: ethernet-phy@6 {
408			compatible = "ethernet-phy-ieee802.3-c22";
409			reg = <6>;
410			qca,clk-out-frequency = <125000000>;
411			reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
412			reset-assert-us = <2000>;
413		};
414	};
415};
416
417&ecspi1 {
418	pinctrl-names = "default";
419	pinctrl-0 = <&pinctrl_ecspi1>;
420	status = "okay";
421
422	num-cs = <1>;
423	cs-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
424
425	flash: m25p80@0 {
426		#address-cells = <1>;
427		#size-cells = <1>;
428		compatible = "st,sst25vf032b", "jedec,spi-nor";
429		spi-max-frequency = <20000000>;
430		reg = <0>;
431
432		partition@0 {
433			label = "bootloader";
434			reg = <0x0000000 0x100000>;
435		};
436
437		partition@100000 {
438			label = "user";
439			reg = <0x0100000 0x2fc000>;
440		};
441
442		partition@3fc000 {
443			label = "reserved";
444			reg = <0x03fc000 0x4000>;
445			read-only;
446		};
447	};
448};
449
450&pwm4 {
451	pinctrl-names = "default";
452	pinctrl-0 = <&pinctrl_pwm4>;
453	status = "okay";
454};
455
456&wdog1 {
457	pinctrl-names = "default";
458	pinctrl-0 = <&pinctrl_wdog>;
459	fsl,ext-reset-output;
460};
461
462&iomuxc {
463	imx6qdl-congatec-qmx6 {
464		pinctrl_uart2: uart2grp {
465			fsl,pins = <
466				MX6QDL_PAD_EIM_D26__UART2_TX_DATA	0x1b0b1
467				MX6QDL_PAD_EIM_D27__UART2_RX_DATA	0x1b0b1
468			>;
469		};
470
471		pinctrl_uart3: uart3grp {
472			fsl,pins = <
473				MX6QDL_PAD_EIM_D25__UART3_RX_DATA	0x1b0b1
474				MX6QDL_PAD_EIM_D24__UART3_TX_DATA	0x1b0b1
475			>;
476		};
477
478		pinctrl_wdog: wdoggrp {
479			fsl,pins = <
480				MX6QDL_PAD_DISP0_DAT8__WDOG1_B		0x1b0b0
481			>;
482		};
483
484		pinctrl_usdhc2: usdhc2grp {
485			fsl,pins = <
486				MX6QDL_PAD_SD2_CMD__SD2_CMD		0x17059
487				MX6QDL_PAD_SD2_CLK__SD2_CLK		0x10059
488				MX6QDL_PAD_SD2_DAT0__SD2_DATA0		0x17059
489				MX6QDL_PAD_SD2_DAT1__SD2_DATA1		0x17059
490				MX6QDL_PAD_SD2_DAT2__SD2_DATA2		0x17059
491				MX6QDL_PAD_SD2_DAT3__SD2_DATA3		0x17059
492			>;
493		};
494
495		pinctrl_usdhc2_cd: sd2cdgrp {
496			fsl,pins = <
497				MX6QDL_PAD_GPIO_4__GPIO1_IO04		0x1b0b0
498			>;
499		};
500
501		pinctrl_usdhc3: usdhc4grp {
502			fsl,pins = <
503				MX6QDL_PAD_SD3_CMD__SD3_CMD		0x17059
504				MX6QDL_PAD_SD3_CLK__SD3_CLK		0x10059
505				MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
506				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
507				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
508				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
509				MX6QDL_PAD_SD3_DAT4__SD3_DATA4		0x17059
510				MX6QDL_PAD_SD3_DAT5__SD3_DATA5		0x17059
511				MX6QDL_PAD_SD3_DAT6__SD3_DATA6		0x17059
512				MX6QDL_PAD_SD3_DAT7__SD3_DATA7		0x17059
513			>;
514		};
515
516		pinctrl_i2c1: i2c1grp {
517			fsl,pins = <
518				MX6QDL_PAD_EIM_D21__I2C1_SCL		0x4001b8b1
519				MX6QDL_PAD_EIM_D28__I2C1_SDA		0x4001b8b1
520			>;
521		};
522
523		pinctrl_i2c1_gpio: i2c1gpiogrp {
524			fsl,pins = <
525				MX6QDL_PAD_EIM_D21__GPIO3_IO21		0x1b0b0
526				MX6QDL_PAD_EIM_D28__GPIO3_IO28		0x1b0b0
527			>;
528		};
529
530		pinctrl_i2c2: i2c2grp {
531			fsl,pins = <
532				MX6QDL_PAD_KEY_COL3__I2C2_SCL		0x4001b8b1
533				MX6QDL_PAD_KEY_ROW3__I2C2_SDA		0x4001b8b1
534			>;
535		};
536
537		pinctrl_i2c2_gpio: i2c2gpiogrp {
538			fsl,pins = <
539				MX6QDL_PAD_KEY_COL3__GPIO4_IO12		0x1b0b0
540				MX6QDL_PAD_KEY_ROW3__GPIO4_IO13		0x1b0b0
541			>;
542		};
543
544		pinctrl_i2c3: i2c3grp {
545			fsl,pins = <
546				MX6QDL_PAD_GPIO_3__I2C3_SCL		0x4001b8b1
547				MX6QDL_PAD_GPIO_6__I2C3_SDA		0x4001b8b1
548			>;
549		};
550
551		pinctrl_i2c3_gpio: i2c3gpiogrp {
552			fsl,pins = <
553				MX6QDL_PAD_GPIO_3__GPIO1_IO03		0x1b0b0
554				MX6QDL_PAD_GPIO_6__GPIO1_IO06		0x1b0b0
555			>;
556		};
557
558		pinctrl_ecspi1: ecspi1grp {
559			fsl,pins = <
560				MX6QDL_PAD_EIM_D16__ECSPI1_SCLK		0x100b1
561				MX6QDL_PAD_EIM_D17__ECSPI1_MISO		0x100b1
562				MX6QDL_PAD_EIM_D18__ECSPI1_MOSI		0x100b1
563				MX6QDL_PAD_EIM_D19__GPIO3_IO19          0x1b0b0
564			>;
565		};
566
567		pinctrl_enet: enetgrp {
568			fsl,pins = <
569				MX6QDL_PAD_ENET_MDIO__ENET_MDIO		0x1b0b0
570				MX6QDL_PAD_ENET_MDC__ENET_MDC		0x1b0b0
571				MX6QDL_PAD_RGMII_TXC__RGMII_TXC		0x1b030
572				MX6QDL_PAD_RGMII_TD0__RGMII_TD0		0x1b030
573				MX6QDL_PAD_RGMII_TD1__RGMII_TD1		0x1b030
574				MX6QDL_PAD_RGMII_TD2__RGMII_TD2		0x1b030
575				MX6QDL_PAD_RGMII_TD3__RGMII_TD3		0x1b030
576				MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL	0x1b030
577				MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK	0x1b0b0
578				MX6QDL_PAD_RGMII_RXC__RGMII_RXC		0x1b030
579				MX6QDL_PAD_RGMII_RD0__RGMII_RD0		0x1b030
580				MX6QDL_PAD_RGMII_RD1__RGMII_RD1		0x1b030
581				MX6QDL_PAD_RGMII_RD2__RGMII_RD2		0x1b030
582				MX6QDL_PAD_RGMII_RD3__RGMII_RD3		0x1b030
583				MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL	0x1b030
584				MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN	0x1b0b0
585			>;
586		};
587
588		pinctrl_phy_reset: phyrstgrp {
589			fsl,pins = <
590				MX6QDL_PAD_EIM_D23__GPIO3_IO23		0x4001b0b0	/* RGMII Phy Reset */
591			>;
592		};
593
594		pinctrl_pwm4: pwm4grp {
595			fsl,pins = <
596				MX6QDL_PAD_SD1_CMD__PWM4_OUT		0x1b0b1		/* Q7[123] LVDS_BLT_CTRL */
597			>;
598		};
599
600		pinctrl_q7_lcd_power: lcdpwrgrp {
601			fsl,pins = <
602				MX6QDL_PAD_GPIO_7__GPIO1_IO07		0x4001b0b0	/* Q7[111] LVDS_PPEN */
603			>;
604		};
605
606		pinctrl_q7_backlight_enable: blengrp {
607			fsl,pins = <
608				MX6QDL_PAD_GPIO_9__GPIO1_IO09		0x4001b0b0	/* Q7[112] LVDS_BLEN */
609			>;
610		};
611
612		pinctrl_q7_gpio1: q7gpio1grp {
613			fsl,pins = <
614				MX6QDL_PAD_GPIO_8__GPIO1_IO08		0x4001b0b0	/* Q7[186] GPIO1 */
615			>;
616		};
617
618		pinctrl_q7_gpio3: q7gpio3grp {
619			fsl,pins = <
620				MX6QDL_PAD_DISP0_DAT6__GPIO4_IO27	0x4001b0b0	/* Q7[188] GPIO3 */
621			>;
622		};
623
624		pinctrl_q7_gpio5: q7gpio5grp {
625			fsl,pins = <
626				MX6QDL_PAD_KEY_ROW4__GPIO4_IO15		0x4001b0b0	/* Q7[190] GPIO5 */
627			>;
628		};
629
630		pinctrl_q7_gpio6: q7gpio6grp {
631			fsl,pins = <
632				MX6QDL_PAD_GPIO_16__GPIO7_IO11		0x1b0b0		/* Q7[191] GPIO6 */
633			>;
634		};
635
636		pinctrl_q7_spi_cs1: spics1grp {
637			fsl,pins = <
638				MX6QDL_PAD_DISP0_DAT4__GPIO4_IO25	0x4001b0b0	/* Q7[202] SPI_CS1# */
639			>;
640		};
641
642		pinctrl_i2cmux: i2cmuxgrp {
643			fsl,pins = <
644				MX6QDL_PAD_NANDF_WP_B__GPIO6_IO09	0x4001b0b0
645			>;
646		};
647
648		pinctrl_usbotg: usbotggrp {
649			fsl,pins = <
650				MX6QDL_PAD_GPIO_1__USB_OTG_ID		0x17059		/* Q7[92] USB_ID */
651			>;
652		};
653	};
654};
655