linux/arch/arm/boot/dts/imx28-tx28.dts
Shawn Guo 352d318cc9 ARM: dts: imx: use generic node name for fixed regulator
The device tree specification recommends that generic name should be
used for nodes.  So instead of naming those fixed regulator nodes
arbitrarily, let's use the generic name 'regulator@num' for those nodes.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
2014-02-09 21:32:30 +08:00

663 lines
14 KiB
Plaintext

/*
* 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";
#address-cells = <1>;
#size-cells = <0>;
reg_usb0_vbus: regulator@0 {
compatible = "regulator-fixed";
reg = <0>;
regulator-name = "usb0_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio0 18 0>;
enable-active-high;
};
reg_usb1_vbus: regulator@1 {
compatible = "regulator-fixed";
reg = <1>;
regulator-name = "usb1_vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio3 27 0>;
enable-active-high;
};
reg_2p5v: regulator@2 {
compatible = "regulator-fixed";
reg = <2>;
regulator-name = "2P5V";
regulator-min-microvolt = <2500000>;
regulator-max-microvolt = <2500000>;
regulator-always-on;
};
reg_3p3v: regulator@3 {
compatible = "regulator-fixed";
reg = <3>;
regulator-name = "3P3V";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
reg_can_xcvr: regulator@4 {
compatible = "regulator-fixed";
reg = <4>;
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: regulator@5 {
compatible = "regulator-fixed";
reg = <5>;
regulator-name = "LCD POWER";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
gpio = <&gpio1 31 0>;
enable-active-high;
};
reg_lcd_reset: regulator@6 {
compatible = "regulator-fixed";
reg = <6>;
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 = <&reg_can_xcvr>;
status = "okay";
};
&can1 {
pinctrl-names = "default";
pinctrl-0 = <&can1_pins_a>;
xceiver-supply = <&reg_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 = <&reg_2p5v>;
VDDIO-supply = <&reg_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 = <&reg_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 = <&reg_usb0_vbus>;
disable-over-current;
dr_mode = "peripheral";
status = "okay";
};
&usb1 {
vbus-supply = <&reg_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";
};