Linux Audio

Check our new training course

Yocto distribution development and maintenance

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