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