Linux Audio

Check our new training course

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