123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653 |
- /*
- * Copyright 2012 Shawn Guo <shawn.guo@linaro.org>
- * Copyright 2013 Lothar Waßmann <LW@KARO-electronics.de>
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
- /dts-v1/;
- #include "imx28.dtsi"
- #include <dt-bindings/gpio/gpio.h>
- / {
- model = "Ka-Ro electronics TX28 module";
- compatible = "karo,tx28", "fsl,imx28";
- aliases {
- can0 = &can0;
- can1 = &can1;
- display = &display;
- ds1339 = &ds1339;
- gpio5 = &gpio5;
- lcdif = &lcdif;
- lcdif_23bit_pins = &tx28_lcdif_23bit_pins;
- lcdif_24bit_pins = &lcdif_24bit_pins_a;
- stk5led = &user_led;
- usbotg = &usb0;
- };
- memory {
- reg = <0 0>; /* will be filled in by U-Boot */
- };
- onewire {
- compatible = "w1-gpio";
- gpios = <&gpio2 7 0>;
- status = "disabled";
- };
- regulators {
- compatible = "simple-bus";
- reg_usb0_vbus: usb0_vbus {
- compatible = "regulator-fixed";
- regulator-name = "usb0_vbus";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- gpio = <&gpio0 18 0>;
- enable-active-high;
- };
- reg_usb1_vbus: usb1_vbus {
- compatible = "regulator-fixed";
- regulator-name = "usb1_vbus";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- gpio = <&gpio3 27 0>;
- enable-active-high;
- };
- reg_2p5v: 2p5v {
- compatible = "regulator-fixed";
- regulator-name = "2P5V";
- regulator-min-microvolt = <2500000>;
- regulator-max-microvolt = <2500000>;
- regulator-always-on;
- };
- reg_3p3v: 3p3v {
- compatible = "regulator-fixed";
- regulator-name = "3P3V";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- regulator-always-on;
- };
- reg_can_xcvr: can-xcvr {
- compatible = "regulator-fixed";
- regulator-name = "CAN XCVR";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- gpio = <&gpio1 0 0>;
- enable-active-low;
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_flexcan_xcvr_pins>;
- };
- reg_lcd: lcd-power {
- compatible = "regulator-fixed";
- regulator-name = "LCD POWER";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- gpio = <&gpio1 31 0>;
- enable-active-high;
- };
- reg_lcd_reset: lcd-reset {
- compatible = "regulator-fixed";
- regulator-name = "LCD RESET";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- gpio = <&gpio3 30 0>;
- startup-delay-us = <300000>;
- enable-active-high;
- regulator-always-on;
- regulator-boot-on;
- };
- };
- clocks {
- #address-cells = <1>;
- #size-cells = <0>;
- mclk: clock@0 {
- compatible = "fixed-clock";
- reg = <0>;
- #clock-cells = <0>;
- clock-frequency = <27000000>;
- };
- };
- sound {
- compatible = "fsl,imx28-tx28-sgtl5000",
- "fsl,mxs-audio-sgtl5000";
- model = "imx28-tx28-sgtl5000";
- saif-controllers = <&saif0 &saif1>;
- audio-codec = <&sgtl5000>;
- };
- leds {
- compatible = "gpio-leds";
- user_led: user {
- label = "Heartbeat";
- gpios = <&gpio4 10 0>;
- linux,default-trigger = "heartbeat";
- };
- };
- backlight {
- compatible = "pwm-backlight";
- pwms = <&pwm 0 500000>;
- /*
- * a silly way to create a 1:1 relationship between the
- * PWM value and the actual duty cycle
- */
- brightness-levels = < 0 1 2 3 4 5 6 7 8 9
- 10 11 12 13 14 15 16 17 18 19
- 20 21 22 23 24 25 26 27 28 29
- 30 31 32 33 34 35 36 37 38 39
- 40 41 42 43 44 45 46 47 48 49
- 50 51 52 53 54 55 56 57 58 59
- 60 61 62 63 64 65 66 67 68 69
- 70 71 72 73 74 75 76 77 78 79
- 80 81 82 83 84 85 86 87 88 89
- 90 91 92 93 94 95 96 97 98 99
- 100>;
- default-brightness-level = <50>;
- };
- matrix_keypad: matrix-keypad@0 {
- compatible = "gpio-matrix-keypad";
- col-gpios = <
- &gpio5 0 0
- &gpio5 1 0
- &gpio5 2 0
- &gpio5 3 0
- >;
- row-gpios = <
- &gpio5 4 0
- &gpio5 5 0
- &gpio5 6 0
- &gpio5 7 0
- >;
- /* sample keymap */
- linux,keymap = <
- 0x00000074 /* row 0, col 0, KEY_POWER */
- 0x00010052 /* row 0, col 1, KEY_KP0 */
- 0x0002004f /* row 0, col 2, KEY_KP1 */
- 0x00030050 /* row 0, col 3, KEY_KP2 */
- 0x01000051 /* row 1, col 0, KEY_KP3 */
- 0x0101004b /* row 1, col 1, KEY_KP4 */
- 0x0102004c /* row 1, col 2, KEY_KP5 */
- 0x0103004d /* row 1, col 3, KEY_KP6 */
- 0x02000047 /* row 2, col 0, KEY_KP7 */
- 0x02010048 /* row 2, col 1, KEY_KP8 */
- 0x02020049 /* row 2, col 2, KEY_KP9 */
- >;
- gpio-activelow;
- linux,wakeup;
- debounce-delay-ms = <100>;
- col-scan-delay-us = <5000>;
- linux,no-autorepeat;
- };
- };
- /* 2nd TX-Std UART - (A)UART1 */
- &auart1 {
- pinctrl-names = "default";
- pinctrl-0 = <&auart1_pins_a>;
- status = "okay";
- };
- /* 3rd TX-Std UART - (A)UART3 */
- &auart3 {
- pinctrl-names = "default";
- pinctrl-0 = <&auart3_pins_a>;
- status = "okay";
- };
- &can0 {
- pinctrl-names = "default";
- pinctrl-0 = <&can0_pins_a>;
- xceiver-supply = <®_can_xcvr>;
- status = "okay";
- };
- &can1 {
- pinctrl-names = "default";
- pinctrl-0 = <&can1_pins_a>;
- xceiver-supply = <®_can_xcvr>;
- status = "okay";
- };
- &digctl {
- status = "okay";
- };
- /* 1st TX-Std UART - (D)UART */
- &duart {
- pinctrl-names = "default";
- pinctrl-0 = <&duart_4pins_a>;
- status = "okay";
- };
- &gpmi {
- pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
- nand-on-flash-bbt;
- status = "okay";
- };
- &i2c0 {
- pinctrl-names = "default";
- pinctrl-0 = <&i2c0_pins_a>;
- clock-frequency = <400000>;
- status = "okay";
- sgtl5000: sgtl5000@0a {
- compatible = "fsl,sgtl5000";
- reg = <0x0a>;
- VDDA-supply = <®_2p5v>;
- VDDIO-supply = <®_3p3v>;
- clocks = <&mclk>;
- };
- gpio5: pca953x@20 {
- compatible = "nxp,pca9554";
- reg = <0x20>;
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_pca9554_pins>;
- interrupt-parent = <&gpio3>;
- interrupts = <28 0>;
- gpio-controller;
- #gpio-cells = <2>;
- interrupt-controller;
- #interrupt-cells = <2>;
- };
- polytouch: edt-ft5x06@38 {
- compatible = "edt,edt-ft5x06";
- reg = <0x38>;
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_edt_ft5x06_pins>;
- interrupt-parent = <&gpio2>;
- interrupts = <5 0>;
- reset-gpios = <&gpio2 6 1>;
- wake-gpios = <&gpio4 9 0>;
- };
- touchscreen: tsc2007@48 {
- compatible = "ti,tsc2007";
- reg = <0x48>;
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_tsc2007_pins>;
- interrupt-parent = <&gpio3>;
- interrupts = <20 0>;
- pendown-gpio = <&gpio3 20 1>;
- ti,x-plate-ohms = /bits/ 16 <660>;
- };
- ds1339: rtc@68 {
- compatible = "mxim,ds1339";
- reg = <0x68>;
- };
- };
- &lcdif {
- pinctrl-names = "default";
- pinctrl-0 = <&lcdif_24bit_pins_a &lcdif_sync_pins_a &tx28_lcdif_ctrl_pins>;
- lcd-supply = <®_lcd>;
- display = <&display>;
- status = "okay";
- display: display@0 {
- bits-per-pixel = <32>;
- bus-width = <24>;
- display-timings {
- native-mode = <&timing5>;
- timing0: timing0 {
- panel-name = "VGA";
- clock-frequency = <25175000>;
- hactive = <640>;
- vactive = <480>;
- hback-porch = <48>;
- hsync-len = <96>;
- hfront-porch = <16>;
- vback-porch = <33>;
- vsync-len = <2>;
- vfront-porch = <10>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- timing1: timing1 {
- panel-name = "ETV570";
- clock-frequency = <25175000>;
- hactive = <640>;
- vactive = <480>;
- hback-porch = <114>;
- hsync-len = <30>;
- hfront-porch = <16>;
- vback-porch = <32>;
- vsync-len = <3>;
- vfront-porch = <10>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- timing2: timing2 {
- panel-name = "ET0350";
- clock-frequency = <6500000>;
- hactive = <320>;
- vactive = <240>;
- hback-porch = <34>;
- hsync-len = <34>;
- hfront-porch = <20>;
- vback-porch = <15>;
- vsync-len = <3>;
- vfront-porch = <4>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- timing3: timing3 {
- panel-name = "ET0430";
- clock-frequency = <9000000>;
- hactive = <480>;
- vactive = <272>;
- hback-porch = <2>;
- hsync-len = <41>;
- hfront-porch = <2>;
- vback-porch = <2>;
- vsync-len = <10>;
- vfront-porch = <2>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- timing4: timing4 {
- panel-name = "ET0500", "ET0700";
- clock-frequency = <33260000>;
- hactive = <800>;
- vactive = <480>;
- hback-porch = <88>;
- hsync-len = <128>;
- hfront-porch = <40>;
- vback-porch = <33>;
- vsync-len = <2>;
- vfront-porch = <10>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- timing5: timing5 {
- panel-name = "ETQ570";
- clock-frequency = <6400000>;
- hactive = <320>;
- vactive = <240>;
- hback-porch = <38>;
- hsync-len = <30>;
- hfront-porch = <30>;
- vback-porch = <16>;
- vsync-len = <3>;
- vfront-porch = <4>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <1>;
- pixelclk-active = <1>;
- };
- };
- };
- };
- &lradc {
- fsl,lradc-touchscreen-wires = <4>;
- status = "okay";
- };
- &mac0 {
- phy-mode = "rmii";
- pinctrl-names = "default", "gpio_mode";
- pinctrl-0 = <&mac0_pins_a>;
- pinctrl-1 = <&tx28_mac0_pins_gpio>;
- status = "okay";
- };
- &mac1 {
- phy-mode = "rmii";
- pinctrl-names = "default";
- pinctrl-0 = <&mac1_pins_a>;
- /* not enabled by default */
- };
- &mxs_rtc {
- status = "okay";
- };
- &ocotp {
- status = "okay";
- };
- &pwm {
- pinctrl-names = "default";
- pinctrl-0 = <&pwm0_pins_a>;
- status = "okay";
- };
- &pinctrl {
- pinctrl-names = "default";
- pinctrl-0 = <&hog_pins_a>;
- hog_pins_a: hog@0 {
- reg = <0>;
- fsl,pinmux-ids = <
- MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins {
- fsl,pinmux-ids = <
- MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
- MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
- MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins {
- fsl,pinmux-ids = <
- MX28_PAD_LCD_D00__GPIO_1_0
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_lcdif_23bit_pins: tx28-lcdif-23bit {
- fsl,pinmux-ids = <
- /* LCD_D00 may be used as Flexcan Transceiver Enable on STK5-V5 */
- MX28_PAD_LCD_D01__LCD_D1
- MX28_PAD_LCD_D02__LCD_D2
- MX28_PAD_LCD_D03__LCD_D3
- MX28_PAD_LCD_D04__LCD_D4
- MX28_PAD_LCD_D05__LCD_D5
- MX28_PAD_LCD_D06__LCD_D6
- MX28_PAD_LCD_D07__LCD_D7
- MX28_PAD_LCD_D08__LCD_D8
- MX28_PAD_LCD_D09__LCD_D9
- MX28_PAD_LCD_D10__LCD_D10
- MX28_PAD_LCD_D11__LCD_D11
- MX28_PAD_LCD_D12__LCD_D12
- MX28_PAD_LCD_D13__LCD_D13
- MX28_PAD_LCD_D14__LCD_D14
- MX28_PAD_LCD_D15__LCD_D15
- MX28_PAD_LCD_D16__LCD_D16
- MX28_PAD_LCD_D17__LCD_D17
- MX28_PAD_LCD_D18__LCD_D18
- MX28_PAD_LCD_D19__LCD_D19
- MX28_PAD_LCD_D20__LCD_D20
- MX28_PAD_LCD_D21__LCD_D21
- MX28_PAD_LCD_D22__LCD_D22
- MX28_PAD_LCD_D23__LCD_D23
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl {
- fsl,pinmux-ids = <
- MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
- MX28_PAD_LCD_RESET__GPIO_3_30 /* Reset */
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_mac0_pins_gpio: tx28-mac0-gpio-pins {
- fsl,pinmux-ids = <
- MX28_PAD_ENET0_MDC__GPIO_4_0
- MX28_PAD_ENET0_MDIO__GPIO_4_1
- MX28_PAD_ENET0_RX_EN__GPIO_4_2
- MX28_PAD_ENET0_RXD0__GPIO_4_3
- MX28_PAD_ENET0_RXD1__GPIO_4_4
- MX28_PAD_ENET0_TX_EN__GPIO_4_6
- MX28_PAD_ENET0_TXD0__GPIO_4_7
- MX28_PAD_ENET0_TXD1__GPIO_4_8
- MX28_PAD_ENET_CLK__GPIO_4_16
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_pca9554_pins: tx28-pca9554-pins {
- fsl,pinmux-ids = <
- MX28_PAD_PWM3__GPIO_3_28
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_tsc2007_pins: tx28-tsc2007-pins {
- fsl,pinmux-ids = <
- MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
- >;
- fsl,drive-strength = <MXS_DRIVE_4mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_usbphy0_pins: tx28-usbphy0-pins {
- fsl,pinmux-ids = <
- MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
- MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
- >;
- fsl,drive-strength = <MXS_DRIVE_12mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- tx28_usbphy1_pins: tx28-usbphy1-pins {
- fsl,pinmux-ids = <
- MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
- MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
- >;
- fsl,drive-strength = <MXS_DRIVE_12mA>;
- fsl,voltage = <MXS_VOLTAGE_HIGH>;
- fsl,pull-up = <MXS_PULL_DISABLE>;
- };
- };
- &saif0 {
- pinctrl-names = "default";
- pinctrl-0 = <&saif0_pins_b>;
- fsl,saif-master;
- status = "okay";
- };
- &saif1 {
- pinctrl-names = "default";
- pinctrl-0 = <&saif1_pins_a>;
- status = "okay";
- };
- &ssp0 {
- compatible = "fsl,imx28-mmc";
- pinctrl-names = "default", "special";
- pinctrl-0 = <&mmc0_4bit_pins_a
- &mmc0_cd_cfg
- &mmc0_sck_cfg>;
- bus-width = <4>;
- status = "okay";
- };
- &ssp3 {
- compatible = "fsl,imx28-spi";
- pinctrl-names = "default";
- pinctrl-0 = <&spi3_pins_a>;
- clock-frequency = <57600000>;
- status = "okay";
- spidev0: spi@0 {
- compatible = "spidev";
- reg = <0>;
- spi-max-frequency = <57600000>;
- };
- spidev1: spi@1 {
- compatible = "spidev";
- reg = <1>;
- spi-max-frequency = <57600000>;
- };
- };
- &usb0 {
- vbus-supply = <®_usb0_vbus>;
- disable-over-current;
- dr_mode = "peripheral";
- status = "okay";
- };
- &usb1 {
- vbus-supply = <®_usb1_vbus>;
- disable-over-current;
- dr_mode = "host";
- status = "okay";
- };
- &usbphy0 {
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_usbphy0_pins>;
- phy_type = "utmi";
- status = "okay";
- };
- &usbphy1 {
- pinctrl-names = "default";
- pinctrl-0 = <&tx28_usbphy1_pins>;
- phy_type = "utmi";
- status = "okay";
- };
|