1/*
2 * Copyright 2012 Shawn Guo <shawn.guo@linaro.org>
3 * Copyright 2013-2017 Lothar Waßmann <LW@KARO-electronics.de>
4 *
5 * This file is dual-licensed: you can use it either under the terms
6 * of the GPL or the X11 license, at your option. Note that this dual
7 * licensing only applies to this file, and not this project as a
8 * whole.
9 *
10 *  a) This file is free software; you can redistribute it and/or
11 *     modify it under the terms of the GNU General Public License
12 *     version 2 as published by the Free Software Foundation.
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#include "imx28.dtsi"
45#include <dt-bindings/gpio/gpio.h>
46#include <dt-bindings/interrupt-controller/irq.h>
47
48/ {
49	model = "Ka-Ro electronics TX28 module";
50	compatible = "karo,tx28", "fsl,imx28";
51
52	aliases {
53		can0 = &can0;
54		can1 = &can1;
55		display = &display0;
56		ds1339 = &ds1339;
57		gpio5 = &gpio5;
58		lcdif = &lcdif;
59		lcdif_23bit_pins = &tx28_lcdif_23bit_pins;
60		lcdif_24bit_pins = &lcdif_24bit_pins_a;
61		reg_can_xcvr = &reg_can_xcvr;
62		spi_gpio = &spi_gpio;
63		spi_mxs = &ssp3;
64		stk5led = &user_led;
65		usbotg = &usb0;
66	};
67
68	memory@40000000 {
69		device_type = "memory";
70		reg = <0x40000000 0>; /* will be filled in by U-Boot */
71	};
72
73	onewire {
74		compatible = "w1-gpio";
75		gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
76		status = "disabled";
77	};
78
79	reg_usb0_vbus: regulator-usb0-vbus {
80		compatible = "regulator-fixed";
81		regulator-name = "usb0_vbus";
82		regulator-min-microvolt = <5000000>;
83		regulator-max-microvolt = <5000000>;
84		gpio = <&gpio0 18 GPIO_ACTIVE_HIGH>;
85		enable-active-high;
86	};
87
88	reg_usb1_vbus: regulator-usb1-vbus {
89		compatible = "regulator-fixed";
90		regulator-name = "usb1_vbus";
91		regulator-min-microvolt = <5000000>;
92		regulator-max-microvolt = <5000000>;
93		gpio = <&gpio3 27 GPIO_ACTIVE_HIGH>;
94		enable-active-high;
95	};
96
97	reg_2p5v: regulator-2p5v {
98		compatible = "regulator-fixed";
99		regulator-name = "2P5V";
100		regulator-min-microvolt = <2500000>;
101		regulator-max-microvolt = <2500000>;
102		regulator-always-on;
103	};
104
105	reg_3p3v: regulator-3p3v {
106		compatible = "regulator-fixed";
107		regulator-name = "3P3V";
108		regulator-min-microvolt = <3300000>;
109		regulator-max-microvolt = <3300000>;
110		regulator-always-on;
111	};
112
113	reg_can_xcvr: regulator-can-xcvr {
114		compatible = "regulator-fixed";
115		regulator-name = "CAN XCVR";
116		regulator-min-microvolt = <3300000>;
117		regulator-max-microvolt = <3300000>;
118		gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
119		pinctrl-names = "default";
120		pinctrl-0 = <&tx28_flexcan_xcvr_pins>;
121	};
122
123	reg_lcd: regulator-lcd-power {
124		compatible = "regulator-fixed";
125		regulator-name = "LCD POWER";
126		regulator-min-microvolt = <3300000>;
127		regulator-max-microvolt = <3300000>;
128		gpio = <&gpio1 31 GPIO_ACTIVE_HIGH>;
129		enable-active-high;
130	};
131
132	reg_lcd_reset: regulator-lcd-reset {
133		compatible = "regulator-fixed";
134		regulator-name = "LCD RESET";
135		regulator-min-microvolt = <3300000>;
136		regulator-max-microvolt = <3300000>;
137		gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
138		startup-delay-us = <300000>;
139		enable-active-high;
140		regulator-always-on;
141		regulator-boot-on;
142	};
143
144	mclk: clock-mclk {
145		compatible = "fixed-clock";
146		#clock-cells = <0>;
147		clock-frequency = <26000000>;
148	};
149
150	sound {
151		compatible = "fsl,imx28-tx28-sgtl5000",
152			     "fsl,mxs-audio-sgtl5000";
153		model = "imx28-tx28-sgtl5000";
154		saif-controllers = <&saif0 &saif1>;
155		audio-codec = <&sgtl5000>;
156	};
157
158	leds {
159		compatible = "gpio-leds";
160
161		user_led: user {
162			label = "Heartbeat";
163			gpios = <&gpio4 10 GPIO_ACTIVE_HIGH>;
164			linux,default-trigger = "heartbeat";
165		};
166	};
167
168	backlight {
169		compatible = "pwm-backlight";
170		pwms = <&pwm 0 500000>;
171		/*
172		 * a silly way to create a 1:1 relationship between the
173		 * PWM value and the actual duty cycle
174		 */
175		brightness-levels = < 0  1  2  3  4  5  6  7  8  9
176				     10 11 12 13 14 15 16 17 18 19
177				     20 21 22 23 24 25 26 27 28 29
178				     30 31 32 33 34 35 36 37 38 39
179				     40 41 42 43 44 45 46 47 48 49
180				     50 51 52 53 54 55 56 57 58 59
181				     60 61 62 63 64 65 66 67 68 69
182				     70 71 72 73 74 75 76 77 78 79
183				     80 81 82 83 84 85 86 87 88 89
184				     90 91 92 93 94 95 96 97 98 99
185				    100>;
186		default-brightness-level = <50>;
187	};
188
189	matrix_keypad: matrix-keypad {
190		compatible = "gpio-matrix-keypad";
191		col-gpios = <
192			&gpio5 0 GPIO_ACTIVE_HIGH
193			&gpio5 1 GPIO_ACTIVE_HIGH
194			&gpio5 2 GPIO_ACTIVE_HIGH
195			&gpio5 3 GPIO_ACTIVE_HIGH
196		>;
197		row-gpios = <
198			&gpio5 4 GPIO_ACTIVE_HIGH
199			&gpio5 5 GPIO_ACTIVE_HIGH
200			&gpio5 6 GPIO_ACTIVE_HIGH
201			&gpio5 7 GPIO_ACTIVE_HIGH
202		>;
203		/* sample keymap */
204		linux,keymap = <
205			0x00000074 /* row 0, col 0, KEY_POWER */
206			0x00010052 /* row 0, col 1, KEY_KP0 */
207			0x0002004f /* row 0, col 2, KEY_KP1 */
208			0x00030050 /* row 0, col 3, KEY_KP2 */
209			0x01000051 /* row 1, col 0, KEY_KP3 */
210			0x0101004b /* row 1, col 1, KEY_KP4 */
211			0x0102004c /* row 1, col 2, KEY_KP5 */
212			0x0103004d /* row 1, col 3, KEY_KP6 */
213			0x02000047 /* row 2, col 0, KEY_KP7 */
214			0x02010048 /* row 2, col 1, KEY_KP8 */
215			0x02020049 /* row 2, col 2, KEY_KP9 */
216		>;
217		gpio-activelow;
218		wakeup-source;
219		debounce-delay-ms = <100>;
220		col-scan-delay-us = <5000>;
221		linux,no-autorepeat;
222	};
223
224	spi_gpio: spi-gpio {
225		compatible = "spi-gpio";
226		#address-cells = <1>;
227		#size-cells = <0>;
228		pinctrl-names = "default";
229		pinctrl-0 = <&tx28_spi_gpio_pins>;
230
231		gpio-sck = <&gpio2 24 GPIO_ACTIVE_HIGH>;
232		gpio-mosi = <&gpio2 25 GPIO_ACTIVE_HIGH>;
233		gpio-miso = <&gpio2 26 GPIO_ACTIVE_HIGH>;
234		num-chipselects = <3>;
235		cs-gpios = <
236			&gpio2 27 GPIO_ACTIVE_LOW
237			&gpio3 8 GPIO_ACTIVE_LOW
238			&gpio3 9 GPIO_ACTIVE_LOW
239		>;
240		/* enable this and disable ssp3 below, if you need full duplex SPI transfer */
241		status = "disabled";
242
243		spi@0 {
244			compatible = "spidev";
245			reg = <0>;
246			spi-max-frequency = <57600000>;
247		};
248
249		spi@1 {
250			compatible = "spidev";
251			reg = <1>;
252			spi-max-frequency = <57600000>;
253		};
254
255		spi@2 {
256			compatible = "spidev";
257			reg = <2>;
258			spi-max-frequency = <57600000>;
259		};
260	};
261};
262
263/* 2nd TX-Std UART - (A)UART1  */
264&auart1 {
265	pinctrl-names = "default";
266	pinctrl-0 = <&auart1_pins_a>;
267	status = "okay";
268};
269
270/* 3rd TX-Std UART - (A)UART3  */
271&auart3 {
272	pinctrl-names = "default";
273	pinctrl-0 = <&auart3_pins_a>;
274	status = "okay";
275};
276
277&can0 {
278	pinctrl-names = "default";
279	pinctrl-0 = <&can0_pins_a>;
280	xceiver-supply = <&reg_can_xcvr>;
281	status = "okay";
282};
283
284&can1 {
285	pinctrl-names = "default";
286	pinctrl-0 = <&can1_pins_a>;
287	xceiver-supply = <&reg_can_xcvr>;
288	status = "okay";
289};
290
291&digctl {
292	status = "okay";
293};
294
295/* 1st TX-Std UART - (D)UART */
296&duart {
297	pinctrl-names = "default";
298	pinctrl-0 = <&duart_4pins_a>;
299	status = "okay";
300};
301
302&gpmi {
303	pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
304	nand-on-flash-bbt;
305	status = "okay";
306};
307
308&i2c0 {
309	pinctrl-names = "default";
310	pinctrl-0 = <&i2c0_pins_a>;
311	clock-frequency = <400000>;
312	status = "okay";
313
314	sgtl5000: sgtl5000@a {
315		compatible = "fsl,sgtl5000";
316		reg = <0x0a>;
317		VDDA-supply = <&reg_2p5v>;
318		VDDIO-supply = <&reg_3p3v>;
319		clocks = <&mclk>;
320	};
321
322	gpio5: pca953x@20 {
323		compatible = "nxp,pca9554";
324		reg = <0x20>;
325		pinctrl-names = "default";
326		pinctrl-0 = <&tx28_pca9554_pins>;
327		interrupt-parent = <&gpio3>;
328		interrupts = <28 IRQ_TYPE_NONE>;
329		gpio-controller;
330		#gpio-cells = <2>;
331		interrupt-controller;
332		#interrupt-cells = <2>;
333	};
334
335	polytouch: edt-ft5x06@38 {
336		compatible = "edt,edt-ft5x06";
337		reg = <0x38>;
338		pinctrl-names = "default";
339		pinctrl-0 = <&tx28_edt_ft5x06_pins>;
340		interrupt-parent = <&gpio2>;
341		interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
342		reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
343		wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
344		wakeup-source;
345	};
346
347	touchscreen: tsc2007@48 {
348		compatible = "ti,tsc2007";
349		reg = <0x48>;
350		pinctrl-names = "default";
351		pinctrl-0 = <&tx28_tsc2007_pins>;
352		interrupt-parent = <&gpio3>;
353		interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
354		pendown-gpio = <&gpio3 20 GPIO_ACTIVE_LOW>;
355		ti,x-plate-ohms = /bits/ 16 <660>;
356	};
357
358	ds1339: rtc@68 {
359		compatible = "mxim,ds1339";
360		reg = <0x68>;
361		trickle-resistor-ohms = <250>;
362		trickle-diode-disable;
363	};
364};
365
366&lcdif {
367	pinctrl-names = "default";
368	pinctrl-0 = <&lcdif_24bit_pins_a &lcdif_sync_pins_a &tx28_lcdif_ctrl_pins>;
369	lcd-supply = <&reg_lcd>;
370	display = <&display0>;
371	status = "okay";
372
373	display0: display0 {
374		bits-per-pixel = <32>;
375		bus-width = <24>;
376		display-timings {
377			native-mode = <&timing5>;
378			timing0: timing0 {
379				panel-name = "VGA";
380				clock-frequency = <25175000>;
381				hactive = <640>;
382				vactive = <480>;
383				hback-porch = <48>;
384				hsync-len = <96>;
385				hfront-porch = <16>;
386				vback-porch = <33>;
387				vsync-len = <2>;
388				vfront-porch = <10>;
389				hsync-active = <0>;
390				vsync-active = <0>;
391				de-active = <1>;
392				pixelclk-active = <1>;
393			};
394
395			timing1: timing1 {
396				panel-name = "ETV570";
397				clock-frequency = <25175000>;
398				hactive = <640>;
399				vactive = <480>;
400				hback-porch = <114>;
401				hsync-len = <30>;
402				hfront-porch = <16>;
403				vback-porch = <32>;
404				vsync-len = <3>;
405				vfront-porch = <10>;
406				hsync-active = <0>;
407				vsync-active = <0>;
408				de-active = <1>;
409				pixelclk-active = <1>;
410			};
411
412			timing2: timing2 {
413				panel-name = "ET0350";
414				clock-frequency = <6500000>;
415				hactive = <320>;
416				vactive = <240>;
417				hback-porch = <34>;
418				hsync-len = <34>;
419				hfront-porch = <20>;
420				vback-porch = <15>;
421				vsync-len = <3>;
422				vfront-porch = <4>;
423				hsync-active = <0>;
424				vsync-active = <0>;
425				de-active = <1>;
426				pixelclk-active = <1>;
427			};
428
429			timing3: timing3 {
430				panel-name = "ET0430";
431				clock-frequency = <9000000>;
432				hactive = <480>;
433				vactive = <272>;
434				hback-porch = <2>;
435				hsync-len = <41>;
436				hfront-porch = <2>;
437				vback-porch = <2>;
438				vsync-len = <10>;
439				vfront-porch = <2>;
440				hsync-active = <0>;
441				vsync-active = <0>;
442				de-active = <1>;
443				pixelclk-active = <1>;
444			};
445
446			timing4: timing4 {
447				panel-name = "ET0500", "ET0700";
448				clock-frequency = <33260000>;
449				hactive = <800>;
450				vactive = <480>;
451				hback-porch = <88>;
452				hsync-len = <128>;
453				hfront-porch = <40>;
454				vback-porch = <33>;
455				vsync-len = <2>;
456				vfront-porch = <10>;
457				hsync-active = <0>;
458				vsync-active = <0>;
459				de-active = <1>;
460				pixelclk-active = <1>;
461			};
462
463			timing5: timing5 {
464				panel-name = "ETQ570";
465				clock-frequency = <6400000>;
466				hactive = <320>;
467				vactive = <240>;
468				hback-porch = <38>;
469				hsync-len = <30>;
470				hfront-porch = <30>;
471				vback-porch = <16>;
472				vsync-len = <3>;
473				vfront-porch = <4>;
474				hsync-active = <0>;
475				vsync-active = <0>;
476				de-active = <1>;
477				pixelclk-active = <1>;
478			};
479		};
480	};
481};
482
483&lradc {
484	fsl,lradc-touchscreen-wires = <4>;
485	status = "okay";
486};
487
488&mac0 {
489	phy-mode = "rmii";
490	pinctrl-names = "default", "gpio_mode";
491	pinctrl-0 = <&mac0_pins_a>;
492	pinctrl-1 = <&tx28_mac0_pins_gpio>;
493	status = "okay";
494};
495
496&mac1 {
497	phy-mode = "rmii";
498	pinctrl-names = "default";
499	pinctrl-0 = <&mac1_pins_a>;
500	/* not enabled by default */
501};
502
503&mxs_rtc {
504	status = "okay";
505};
506
507&ocotp {
508	status = "okay";
509};
510
511&pwm {
512	pinctrl-names = "default";
513	pinctrl-0 = <&pwm0_pins_a>;
514	status = "okay";
515};
516
517&pinctrl {
518	pinctrl-names = "default";
519	pinctrl-0 = <&hog_pins_a>;
520
521	hog_pins_a: hog@0 {
522		reg = <0>;
523		fsl,pinmux-ids = <
524			MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
525		>;
526		fsl,drive-strength = <MXS_DRIVE_4mA>;
527		fsl,voltage = <MXS_VOLTAGE_HIGH>;
528		fsl,pull-up = <MXS_PULL_DISABLE>;
529	};
530
531	tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins@0 {
532		reg = <0>;
533		fsl,pinmux-ids = <
534			MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
535			MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
536			MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
537		>;
538		fsl,drive-strength = <MXS_DRIVE_4mA>;
539		fsl,voltage = <MXS_VOLTAGE_HIGH>;
540		fsl,pull-up = <MXS_PULL_DISABLE>;
541	};
542
543	tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins@0 {
544		reg = <0>;
545		fsl,pinmux-ids = <
546			MX28_PAD_LCD_D00__GPIO_1_0
547		>;
548		fsl,drive-strength = <MXS_DRIVE_4mA>;
549		fsl,voltage = <MXS_VOLTAGE_HIGH>;
550		fsl,pull-up = <MXS_PULL_DISABLE>;
551	};
552
553	tx28_lcdif_23bit_pins: tx28-lcdif-23bit@0 {
554		reg = <0>;
555		fsl,pinmux-ids = <
556			/* LCD_D00 may be used as Flexcan Transceiver Enable on STK5-V5 */
557			MX28_PAD_LCD_D01__LCD_D1
558			MX28_PAD_LCD_D02__LCD_D2
559			MX28_PAD_LCD_D03__LCD_D3
560			MX28_PAD_LCD_D04__LCD_D4
561			MX28_PAD_LCD_D05__LCD_D5
562			MX28_PAD_LCD_D06__LCD_D6
563			MX28_PAD_LCD_D07__LCD_D7
564			MX28_PAD_LCD_D08__LCD_D8
565			MX28_PAD_LCD_D09__LCD_D9
566			MX28_PAD_LCD_D10__LCD_D10
567			MX28_PAD_LCD_D11__LCD_D11
568			MX28_PAD_LCD_D12__LCD_D12
569			MX28_PAD_LCD_D13__LCD_D13
570			MX28_PAD_LCD_D14__LCD_D14
571			MX28_PAD_LCD_D15__LCD_D15
572			MX28_PAD_LCD_D16__LCD_D16
573			MX28_PAD_LCD_D17__LCD_D17
574			MX28_PAD_LCD_D18__LCD_D18
575			MX28_PAD_LCD_D19__LCD_D19
576			MX28_PAD_LCD_D20__LCD_D20
577			MX28_PAD_LCD_D21__LCD_D21
578			MX28_PAD_LCD_D22__LCD_D22
579			MX28_PAD_LCD_D23__LCD_D23
580		>;
581		fsl,drive-strength = <MXS_DRIVE_4mA>;
582		fsl,voltage = <MXS_VOLTAGE_HIGH>;
583		fsl,pull-up = <MXS_PULL_DISABLE>;
584	};
585
586	tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl@0 {
587		reg = <0>;
588		fsl,pinmux-ids = <
589			MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
590			MX28_PAD_LCD_RESET__GPIO_3_30  /* Reset */
591		>;
592		fsl,drive-strength = <MXS_DRIVE_4mA>;
593		fsl,voltage = <MXS_VOLTAGE_HIGH>;
594		fsl,pull-up = <MXS_PULL_DISABLE>;
595	};
596
597	tx28_mac0_pins_gpio: tx28-mac0-gpio-pins@0 {
598		reg = <0>;
599		fsl,pinmux-ids = <
600			MX28_PAD_ENET0_MDC__GPIO_4_0
601			MX28_PAD_ENET0_MDIO__GPIO_4_1
602			MX28_PAD_ENET0_RX_EN__GPIO_4_2
603			MX28_PAD_ENET0_RXD0__GPIO_4_3
604			MX28_PAD_ENET0_RXD1__GPIO_4_4
605			MX28_PAD_ENET0_TX_EN__GPIO_4_6
606			MX28_PAD_ENET0_TXD0__GPIO_4_7
607			MX28_PAD_ENET0_TXD1__GPIO_4_8
608			MX28_PAD_ENET_CLK__GPIO_4_16
609		>;
610		fsl,drive-strength = <MXS_DRIVE_4mA>;
611		fsl,voltage = <MXS_VOLTAGE_HIGH>;
612		fsl,pull-up = <MXS_PULL_DISABLE>;
613	};
614
615	tx28_pca9554_pins: tx28-pca9554-pins@0 {
616		reg = <0>;
617		fsl,pinmux-ids = <
618			MX28_PAD_PWM3__GPIO_3_28
619		>;
620		fsl,drive-strength = <MXS_DRIVE_4mA>;
621		fsl,voltage = <MXS_VOLTAGE_HIGH>;
622		fsl,pull-up = <MXS_PULL_DISABLE>;
623	};
624
625	tx28_spi_gpio_pins: spi-gpiogrp@0 {
626		reg = <0>;
627		fsl,pinmux-ids = <
628			MX28_PAD_AUART2_RX__GPIO_3_8
629			MX28_PAD_AUART2_TX__GPIO_3_9
630			MX28_PAD_SSP3_SCK__GPIO_2_24
631			MX28_PAD_SSP3_MOSI__GPIO_2_25
632			MX28_PAD_SSP3_MISO__GPIO_2_26
633			MX28_PAD_SSP3_SS0__GPIO_2_27
634		>;
635		fsl,drive-strength = <MXS_DRIVE_8mA>;
636		fsl,voltage = <MXS_VOLTAGE_HIGH>;
637		fsl,pull-up = <MXS_PULL_DISABLE>;
638	};
639
640	tx28_tsc2007_pins: tx28-tsc2007-pins@0 {
641		reg = <0>;
642		fsl,pinmux-ids = <
643			MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
644		>;
645		fsl,drive-strength = <MXS_DRIVE_4mA>;
646		fsl,voltage = <MXS_VOLTAGE_HIGH>;
647		fsl,pull-up = <MXS_PULL_DISABLE>;
648	};
649
650
651	tx28_usbphy0_pins: tx28-usbphy0-pins@0 {
652		reg = <0>;
653		fsl,pinmux-ids = <
654			MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
655			MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
656		>;
657		fsl,drive-strength = <MXS_DRIVE_12mA>;
658		fsl,voltage = <MXS_VOLTAGE_HIGH>;
659		fsl,pull-up = <MXS_PULL_DISABLE>;
660	};
661
662	tx28_usbphy1_pins: tx28-usbphy1-pins@0 {
663		reg = <0>;
664		fsl,pinmux-ids = <
665			MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
666			MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
667		>;
668		fsl,drive-strength = <MXS_DRIVE_12mA>;
669		fsl,voltage = <MXS_VOLTAGE_HIGH>;
670		fsl,pull-up = <MXS_PULL_DISABLE>;
671	};
672};
673
674&saif0 {
675	pinctrl-names = "default";
676	pinctrl-0 = <&saif0_pins_b>;
677	fsl,saif-master;
678	status = "okay";
679};
680
681&saif1 {
682	pinctrl-names = "default";
683	pinctrl-0 = <&saif1_pins_a>;
684	status = "okay";
685};
686
687&ssp0 {
688	compatible = "fsl,imx28-mmc";
689	pinctrl-names = "default", "special";
690	pinctrl-0 = <&mmc0_4bit_pins_a
691		     &mmc0_cd_cfg
692		     &mmc0_sck_cfg>;
693	bus-width = <4>;
694	status = "okay";
695};
696
697&ssp3 {
698	compatible = "fsl,imx28-spi";
699	pinctrl-names = "default";
700	pinctrl-0 = <&spi3_pins_a>;
701	clock-frequency = <57600000>;
702	status = "okay";
703
704	spi@0 {
705		compatible = "spidev";
706		reg = <0>;
707		spi-max-frequency = <57600000>;
708	};
709
710	spi@1 {
711		compatible = "spidev";
712		reg = <1>;
713		spi-max-frequency = <57600000>;
714	};
715
716	spi@2 {
717		compatible = "spidev";
718		reg = <2>;
719		spi-max-frequency = <57600000>;
720	};
721};
722
723&usb0 {
724	vbus-supply = <&reg_usb0_vbus>;
725	disable-over-current;
726	dr_mode = "peripheral";
727	status = "okay";
728};
729
730&usb1 {
731	vbus-supply = <&reg_usb1_vbus>;
732	disable-over-current;
733	dr_mode = "host";
734	status = "okay";
735};
736
737&usbphy0 {
738	pinctrl-names = "default";
739	pinctrl-0 = <&tx28_usbphy0_pins>;
740	phy_type = "utmi";
741	status = "okay";
742};
743
744&usbphy1 {
745	pinctrl-names = "default";
746	pinctrl-0 = <&tx28_usbphy1_pins>;
747	phy_type = "utmi";
748	status = "okay";
749};
750