Merge branch 'mxs/dt-for-3.6' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/dt
From Shawn Guo <shawn.guo@linaro.org>: * 'mxs/dt-for-3.6' of git://git.linaro.org/people/shawnguo/linux-2.6: (26 commits) ARM: dts: imx28-evk: add flexan devices ARM: mx23: Add initial support for olinuxino board ARM: dts: mx23: add gpmi nand support ARM: dts: mxs: add lcd support for imx23-evk and imx28-evk ARM: dts: mxs: add pwm-backlight for imx23-evk and imx28-evk ARM: dts: mxs: enable rtc for imx23 and imx28 ARM: dts: imx28-evk: add heartbeat gpio-leds ARM: dts: imx28-evk: add missing properties for fec ARM: dts: imx28-evk: add vmmc-supply for mmc device ARM: dts: imx23-evk: add auart device ARM: dts: imx23-evk: updates for mmc device ARM: dts: mxs: add hog-gpios for imx23-evk and imx28-evk ARM: dts: mxs: add comments for pinmux-ids ARM: mxs: use auxdata to attach mxsfb_platform_data video: mxsfb: add simple device tree probe video: mxsfb: move mxsfb.h into include/linux rtc: stmp3xxx: Add simple binding for the stmp3xxx-rtc ARM: mxs: enable flexcan on imx28 ARM: dts: cfa10036: Add Power LED to the CFA-10036 board ARM: mxs: Add Crystalfontz CFA-10036 DTS ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Коммит
059eab4563
|
@ -0,0 +1,6 @@
|
|||
Olimex i.MX Platforms Device Tree Bindings
|
||||
------------------------------------------
|
||||
|
||||
i.MX23 Olinuxino Low Cost Board
|
||||
Required root node properties:
|
||||
- compatible = "olimex,imx23-olinuxino", "fsl,imx23";
|
|
@ -0,0 +1,19 @@
|
|||
* Freescale MXS LCD Interface (LCDIF)
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "fsl,<chip>-lcdif". Supported chips include
|
||||
imx23 and imx28.
|
||||
- reg: Address and length of the register set for lcdif
|
||||
- interrupts: Should contain lcdif interrupts
|
||||
|
||||
Optional properties:
|
||||
- panel-enable-gpios : Should specify the gpio for panel enable
|
||||
|
||||
Examples:
|
||||
|
||||
lcdif@80030000 {
|
||||
compatible = "fsl,imx28-lcdif";
|
||||
reg = <0x80030000 2000>;
|
||||
interrupts = <38 86>;
|
||||
panel-enable-gpios = <&gpio3 30 0>;
|
||||
};
|
|
@ -0,0 +1,16 @@
|
|||
* STMP3xxx/i.MX28 Time Clock controller
|
||||
|
||||
Required properties:
|
||||
- compatible: should be one of the following.
|
||||
* "fsl,stmp3xxx-rtc"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: rtc alarm interrupt
|
||||
|
||||
Example:
|
||||
|
||||
rtc@80056000 {
|
||||
compatible = "fsl,imx28-rtc", "fsl,stmp3xxx-rtc";
|
||||
reg = <0x80056000 2000>;
|
||||
interrupts = <29>;
|
||||
};
|
|
@ -0,0 +1,27 @@
|
|||
* Freescale MXS Application UART (AUART)
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "fsl,<soc>-auart". The supported SoCs include
|
||||
imx23 and imx28.
|
||||
- reg : Address and length of the register set for the device
|
||||
- interrupts : Should contain the auart interrupt numbers
|
||||
|
||||
Example:
|
||||
auart0: serial@8006a000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x8006a000 0x2000>;
|
||||
interrupts = <112 70 71>;
|
||||
};
|
||||
|
||||
Note: Each auart port should have an alias correctly numbered in "aliases"
|
||||
node.
|
||||
|
||||
Example:
|
||||
|
||||
aliases {
|
||||
serial0 = &auart0;
|
||||
serial1 = &auart1;
|
||||
serial2 = &auart2;
|
||||
serial3 = &auart3;
|
||||
serial4 = &auart4;
|
||||
};
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright 2012 Free Electrons
|
||||
*
|
||||
* 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 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "imx28.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Crystalfontz CFA-10036 Board";
|
||||
compatible = "crystalfontz,cfa10036", "fsl,imx28";
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x08000000>;
|
||||
};
|
||||
|
||||
apb@80000000 {
|
||||
apbh@80000000 {
|
||||
ssp0: ssp@80010000 {
|
||||
compatible = "fsl,imx28-mmc";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_4bit_pins_a
|
||||
&mmc0_cd_cfg &mmc0_sck_cfg>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
apbx@80040000 {
|
||||
duart: serial@80074000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&duart_pins_b>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
power {
|
||||
gpios = <&gpio3 4 1>;
|
||||
default-state = "on";
|
||||
};
|
||||
};
|
||||
};
|
|
@ -22,17 +22,60 @@
|
|||
|
||||
apb@80000000 {
|
||||
apbh@80000000 {
|
||||
gpmi-nand@8000c000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gpmi_pins_a &gpmi_pins_fixup>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ssp0: ssp@80010000 {
|
||||
compatible = "fsl,imx23-mmc";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_8bit_pins_a &mmc0_pins_fixup>;
|
||||
bus-width = <8>;
|
||||
pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>;
|
||||
bus-width = <4>;
|
||||
wp-gpios = <&gpio1 30 0>;
|
||||
vmmc-supply = <®_vddio_sd0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pinctrl@80018000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hog_pins_a>;
|
||||
|
||||
hog_pins_a: hog-gpios@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x1123 /* MX23_PAD_LCD_RESET__GPIO_1_18 */
|
||||
0x11d3 /* MX23_PAD_PWM3__GPIO_1_29 */
|
||||
0x11e3 /* MX23_PAD_PWM4__GPIO_1_30 */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
lcdif@80030000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lcdif_24bit_pins_a>;
|
||||
panel-enable-gpios = <&gpio1 18 0>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
apbx@80040000 {
|
||||
pwm: pwm@80064000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm2_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
auart0: serial@8006c000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&auart0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
duart: serial@80070000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&duart_pins_a>;
|
||||
|
@ -40,4 +83,23 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
|
||||
reg_vddio_sd0: vddio-sd0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vddio-sd0";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio1 29 0>;
|
||||
};
|
||||
};
|
||||
|
||||
backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 2 5000000>;
|
||||
brightness-levels = <0 4 8 16 32 64 128 255>;
|
||||
default-brightness-level = <6>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright 2012 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* Author: Fabio Estevam <fabio.estevam@freescale.com>
|
||||
*
|
||||
* 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 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "imx23.dtsi"
|
||||
|
||||
/ {
|
||||
model = "i.MX23 Olinuxino Low Cost Board";
|
||||
compatible = "olimex,imx23-olinuxino", "fsl,imx23";
|
||||
|
||||
memory {
|
||||
reg = <0x40000000 0x04000000>;
|
||||
};
|
||||
|
||||
apb@80000000 {
|
||||
apbh@80000000 {
|
||||
ssp0: ssp@80010000 {
|
||||
compatible = "fsl,imx23-mmc";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>;
|
||||
bus-width = <4>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
apbx@80040000 {
|
||||
duart: serial@80070000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&duart_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -18,6 +18,8 @@
|
|||
gpio0 = &gpio0;
|
||||
gpio1 = &gpio1;
|
||||
gpio2 = &gpio2;
|
||||
serial0 = &auart0;
|
||||
serial1 = &auart1;
|
||||
};
|
||||
|
||||
cpus {
|
||||
|
@ -57,13 +59,15 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
bch@8000a000 {
|
||||
reg = <0x8000a000 2000>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpmi@8000c000 {
|
||||
reg = <0x8000c000 2000>;
|
||||
gpmi-nand@8000c000 {
|
||||
compatible = "fsl,imx23-gpmi-nand";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x8000c000 2000>, <0x8000a000 2000>;
|
||||
reg-names = "gpmi-nand", "bch";
|
||||
interrupts = <13>, <56>;
|
||||
interrupt-names = "gpmi-dma", "bch";
|
||||
fsl,gpmi-dma-channel = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -114,24 +118,151 @@
|
|||
|
||||
duart_pins_a: duart@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x11a2 0x11b2>;
|
||||
fsl,pinmux-ids = <
|
||||
0x11a2 /* MX23_PAD_PWM0__DUART_RX */
|
||||
0x11b2 /* MX23_PAD_PWM1__DUART_TX */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
auart0_pins_a: auart0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x01c0 /* MX23_PAD_AUART1_RX__AUART1_RX */
|
||||
0x01d0 /* MX23_PAD_AUART1_TX__AUART1_TX */
|
||||
0x01a0 /* MX23_PAD_AUART1_CTS__AUART1_CTS */
|
||||
0x01b0 /* MX23_PAD_AUART1_RTS__AUART1_RTS */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
gpmi_pins_a: gpmi-nand@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x0000 /* MX23_PAD_GPMI_D00__GPMI_D00 */
|
||||
0x0010 /* MX23_PAD_GPMI_D01__GPMI_D01 */
|
||||
0x0020 /* MX23_PAD_GPMI_D02__GPMI_D02 */
|
||||
0x0030 /* MX23_PAD_GPMI_D03__GPMI_D03 */
|
||||
0x0040 /* MX23_PAD_GPMI_D04__GPMI_D04 */
|
||||
0x0050 /* MX23_PAD_GPMI_D05__GPMI_D05 */
|
||||
0x0060 /* MX23_PAD_GPMI_D06__GPMI_D06 */
|
||||
0x0070 /* MX23_PAD_GPMI_D07__GPMI_D07 */
|
||||
0x0100 /* MX23_PAD_GPMI_CLE__GPMI_CLE */
|
||||
0x0110 /* MX23_PAD_GPMI_ALE__GPMI_ALE */
|
||||
0x0130 /* MX23_PAD_GPMI_RDY0__GPMI_RDY0 */
|
||||
0x0140 /* MX23_PAD_GPMI_RDY1__GPMI_RDY1 */
|
||||
0x0170 /* MX23_PAD_GPMI_WPN__GPMI_WPN */
|
||||
0x0180 /* MX23_PAD_GPMI_WRN__GPMI_WRN */
|
||||
0x0190 /* MX23_PAD_GPMI_RDN__GPMI_RDN */
|
||||
0x21b0 /* MX23_PAD_GPMI_CE1N__GPMI_CE1N */
|
||||
0x21c0 /* MX23_PAD_GPMI_CE0N__GPMI_CE0N */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
gpmi_pins_fixup: gpmi-pins-fixup {
|
||||
fsl,pinmux-ids = <
|
||||
0x0170 /* MX23_PAD_GPMI_WPN__GPMI_WPN */
|
||||
0x0180 /* MX23_PAD_GPMI_WRN__GPMI_WRN */
|
||||
0x0190 /* MX23_PAD_GPMI_RDN__GPMI_RDN */
|
||||
>;
|
||||
fsl,drive-strength = <2>;
|
||||
};
|
||||
|
||||
mmc0_4bit_pins_a: mmc0-4bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2020 /* MX23_PAD_SSP1_DATA0__SSP1_DATA0 */
|
||||
0x2030 /* MX23_PAD_SSP1_DATA1__SSP1_DATA1 */
|
||||
0x2040 /* MX23_PAD_SSP1_DATA2__SSP1_DATA2 */
|
||||
0x2050 /* MX23_PAD_SSP1_DATA3__SSP1_DATA3 */
|
||||
0x2000 /* MX23_PAD_SSP1_CMD__SSP1_CMD */
|
||||
0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
|
||||
0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
};
|
||||
|
||||
mmc0_8bit_pins_a: mmc0-8bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x2020 0x2030 0x2040
|
||||
0x2050 0x0082 0x0092 0x00a2
|
||||
0x00b2 0x2000 0x2010 0x2060>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2020 /* MX23_PAD_SSP1_DATA0__SSP1_DATA0 */
|
||||
0x2030 /* MX23_PAD_SSP1_DATA1__SSP1_DATA1 */
|
||||
0x2040 /* MX23_PAD_SSP1_DATA2__SSP1_DATA2 */
|
||||
0x2050 /* MX23_PAD_SSP1_DATA3__SSP1_DATA3 */
|
||||
0x0082 /* MX23_PAD_GPMI_D08__SSP1_DATA4 */
|
||||
0x0092 /* MX23_PAD_GPMI_D09__SSP1_DATA5 */
|
||||
0x00a2 /* MX23_PAD_GPMI_D10__SSP1_DATA6 */
|
||||
0x00b2 /* MX23_PAD_GPMI_D11__SSP1_DATA7 */
|
||||
0x2000 /* MX23_PAD_SSP1_CMD__SSP1_CMD */
|
||||
0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
|
||||
0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
};
|
||||
|
||||
mmc0_pins_fixup: mmc0-pins-fixup {
|
||||
fsl,pinmux-ids = <0x2010 0x2060>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
|
||||
0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
|
||||
>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
pwm2_pins_a: pwm2@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x11c0 /* MX23_PAD_PWM2__PWM2 */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
lcdif_24bit_pins_a: lcdif-24bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x1000 /* MX23_PAD_LCD_D00__LCD_D0 */
|
||||
0x1010 /* MX23_PAD_LCD_D01__LCD_D1 */
|
||||
0x1020 /* MX23_PAD_LCD_D02__LCD_D2 */
|
||||
0x1030 /* MX23_PAD_LCD_D03__LCD_D3 */
|
||||
0x1040 /* MX23_PAD_LCD_D04__LCD_D4 */
|
||||
0x1050 /* MX23_PAD_LCD_D05__LCD_D5 */
|
||||
0x1060 /* MX23_PAD_LCD_D06__LCD_D6 */
|
||||
0x1070 /* MX23_PAD_LCD_D07__LCD_D7 */
|
||||
0x1080 /* MX23_PAD_LCD_D08__LCD_D8 */
|
||||
0x1090 /* MX23_PAD_LCD_D09__LCD_D9 */
|
||||
0x10a0 /* MX23_PAD_LCD_D10__LCD_D10 */
|
||||
0x10b0 /* MX23_PAD_LCD_D11__LCD_D11 */
|
||||
0x10c0 /* MX23_PAD_LCD_D12__LCD_D12 */
|
||||
0x10d0 /* MX23_PAD_LCD_D13__LCD_D13 */
|
||||
0x10e0 /* MX23_PAD_LCD_D14__LCD_D14 */
|
||||
0x10f0 /* MX23_PAD_LCD_D15__LCD_D15 */
|
||||
0x1100 /* MX23_PAD_LCD_D16__LCD_D16 */
|
||||
0x1110 /* MX23_PAD_LCD_D17__LCD_D17 */
|
||||
0x0081 /* MX23_PAD_GPMI_D08__LCD_D18 */
|
||||
0x0091 /* MX23_PAD_GPMI_D09__LCD_D19 */
|
||||
0x00a1 /* MX23_PAD_GPMI_D10__LCD_D20 */
|
||||
0x00b1 /* MX23_PAD_GPMI_D11__LCD_D21 */
|
||||
0x00c1 /* MX23_PAD_GPMI_D12__LCD_D22 */
|
||||
0x00d1 /* MX23_PAD_GPMI_D13__LCD_D23 */
|
||||
0x1160 /* MX23_PAD_LCD_DOTCK__LCD_DOTCK */
|
||||
0x1170 /* MX23_PAD_LCD_ENABLE__LCD_ENABLE */
|
||||
0x1180 /* MX23_PAD_LCD_HSYNC__LCD_HSYNC */
|
||||
0x1190 /* MX23_PAD_LCD_VSYNC__LCD_VSYNC */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
};
|
||||
|
@ -172,7 +303,9 @@
|
|||
};
|
||||
|
||||
lcdif@80030000 {
|
||||
compatible = "fsl,imx23-lcdif";
|
||||
reg = <0x80030000 2000>;
|
||||
interrupts = <46 45>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -242,12 +375,16 @@
|
|||
};
|
||||
|
||||
rtc@8005c000 {
|
||||
compatible = "fsl,imx23-rtc", "fsl,stmp3xxx-rtc";
|
||||
reg = <0x8005c000 2000>;
|
||||
status = "disabled";
|
||||
interrupts = <22>;
|
||||
};
|
||||
|
||||
pwm@80064000 {
|
||||
pwm: pwm@80064000 {
|
||||
compatible = "fsl,imx23-pwm";
|
||||
reg = <0x80064000 2000>;
|
||||
#pwm-cells = <2>;
|
||||
fsl,pwm-number = <5>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -257,12 +394,16 @@
|
|||
};
|
||||
|
||||
auart0: serial@8006c000 {
|
||||
compatible = "fsl,imx23-auart";
|
||||
reg = <0x8006c000 0x2000>;
|
||||
interrupts = <24 25 23>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
auart1: serial@8006e000 {
|
||||
compatible = "fsl,imx23-auart";
|
||||
reg = <0x8006e000 0x2000>;
|
||||
interrupts = <59 60 58>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
|
|
@ -22,6 +22,12 @@
|
|||
|
||||
apb@80000000 {
|
||||
apbh@80000000 {
|
||||
gpmi-nand@8000c000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
ssp0: ssp@80010000 {
|
||||
compatible = "fsl,imx28-mmc";
|
||||
pinctrl-names = "default";
|
||||
|
@ -29,6 +35,7 @@
|
|||
&mmc0_cd_cfg &mmc0_sck_cfg>;
|
||||
bus-width = <8>;
|
||||
wp-gpios = <&gpio2 12 0>;
|
||||
vmmc-supply = <®_vddio_sd0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -36,6 +43,45 @@
|
|||
compatible = "fsl,imx28-mmc";
|
||||
bus-width = <8>;
|
||||
wp-gpios = <&gpio0 28 0>;
|
||||
};
|
||||
|
||||
pinctrl@80018000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hog_pins_a>;
|
||||
|
||||
hog_pins_a: hog-gpios@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x20d3 /* MX28_PAD_SSP1_CMD__GPIO_2_13 */
|
||||
0x20f3 /* MX28_PAD_SSP1_DATA3__GPIO_2_15 */
|
||||
0x40d3 /* MX28_PAD_ENET0_RX_CLK__GPIO_4_13 */
|
||||
0x20c3 /* MX28_PAD_SSP1_SCK__GPIO_2_12 */
|
||||
0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */
|
||||
0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
|
||||
0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
lcdif@80030000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&lcdif_24bit_pins_a>;
|
||||
panel-enable-gpios = <&gpio3 30 0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
can0: can@80032000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&can0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
can1: can@80034000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&can1_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
@ -68,11 +114,29 @@
|
|||
};
|
||||
};
|
||||
|
||||
pwm: pwm@80064000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm2_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
duart: serial@80074000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&duart_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
auart0: serial@8006a000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&auart0_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
auart3: serial@80070000 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&auart3_pins_a>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -81,6 +145,9 @@
|
|||
phy-mode = "rmii";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&mac0_pins_a>;
|
||||
phy-supply = <®_fec_3v3>;
|
||||
phy-reset-gpios = <&gpio4 13 0>;
|
||||
phy-reset-duration = <100>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
@ -102,6 +169,22 @@
|
|||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vddio_sd0: vddio-sd0 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vddio-sd0";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio3 28 0>;
|
||||
};
|
||||
|
||||
reg_fec_3v3: fec-3v3 {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fec-3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio2 15 0>;
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
|
@ -111,4 +194,21 @@
|
|||
saif-controllers = <&saif0 &saif1>;
|
||||
audio-codec = <&sgtl5000>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
user {
|
||||
label = "Heartbeat";
|
||||
gpios = <&gpio3 5 0>;
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
backlight {
|
||||
compatible = "pwm-backlight";
|
||||
pwms = <&pwm 2 5000000>;
|
||||
brightness-levels = <0 4 8 16 32 64 128 255>;
|
||||
default-brightness-level = <6>;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -22,6 +22,11 @@
|
|||
gpio4 = &gpio4;
|
||||
saif0 = &saif0;
|
||||
saif1 = &saif1;
|
||||
serial0 = &auart0;
|
||||
serial1 = &auart1;
|
||||
serial2 = &auart2;
|
||||
serial3 = &auart3;
|
||||
serial4 = &auart4;
|
||||
};
|
||||
|
||||
cpus {
|
||||
|
@ -68,15 +73,15 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
bch@8000a000 {
|
||||
reg = <0x8000a000 2000>;
|
||||
interrupts = <41>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
gpmi@8000c000 {
|
||||
reg = <0x8000c000 2000>;
|
||||
interrupts = <42 88>;
|
||||
gpmi-nand@8000c000 {
|
||||
compatible = "fsl,imx28-gpmi-nand";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0x8000c000 2000>, <0x8000a000 2000>;
|
||||
reg-names = "gpmi-nand", "bch";
|
||||
interrupts = <88>, <41>;
|
||||
interrupt-names = "gpmi-dma", "bch";
|
||||
fsl,gpmi-dma-channel = <4>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -161,7 +166,82 @@
|
|||
|
||||
duart_pins_a: duart@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x3102 0x3112>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3102 /* MX28_PAD_PWM0__DUART_RX */
|
||||
0x3112 /* MX28_PAD_PWM1__DUART_TX */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
duart_pins_b: duart@1 {
|
||||
reg = <1>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3022 /* MX28_PAD_AUART0_CTS__DUART_RX */
|
||||
0x3032 /* MX28_PAD_AUART0_RTS__DUART_TX */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
gpmi_pins_a: gpmi-nand@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x0000 /* MX28_PAD_GPMI_D00__GPMI_D0 */
|
||||
0x0010 /* MX28_PAD_GPMI_D01__GPMI_D1 */
|
||||
0x0020 /* MX28_PAD_GPMI_D02__GPMI_D2 */
|
||||
0x0030 /* MX28_PAD_GPMI_D03__GPMI_D3 */
|
||||
0x0040 /* MX28_PAD_GPMI_D04__GPMI_D4 */
|
||||
0x0050 /* MX28_PAD_GPMI_D05__GPMI_D5 */
|
||||
0x0060 /* MX28_PAD_GPMI_D06__GPMI_D6 */
|
||||
0x0070 /* MX28_PAD_GPMI_D07__GPMI_D7 */
|
||||
0x0100 /* MX28_PAD_GPMI_CE0N__GPMI_CE0N */
|
||||
0x0110 /* MX28_PAD_GPMI_CE1N__GPMI_CE1N */
|
||||
0x0140 /* MX28_PAD_GPMI_RDY0__GPMI_READY0 */
|
||||
0x0150 /* MX28_PAD_GPMI_RDY1__GPMI_READY1 */
|
||||
0x0180 /* MX28_PAD_GPMI_RDN__GPMI_RDN */
|
||||
0x0190 /* MX28_PAD_GPMI_WRN__GPMI_WRN */
|
||||
0x01a0 /* MX28_PAD_GPMI_ALE__GPMI_ALE */
|
||||
0x01b0 /* MX28_PAD_GPMI_CLE__GPMI_CLE */
|
||||
0x01c0 /* MX28_PAD_GPMI_RESETN__GPMI_RESETN */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
gpmi_status_cfg: gpmi-status-cfg {
|
||||
fsl,pinmux-ids = <
|
||||
0x0180 /* MX28_PAD_GPMI_RDN__GPMI_RDN */
|
||||
0x0190 /* MX28_PAD_GPMI_WRN__GPMI_WRN */
|
||||
0x01c0 /* MX28_PAD_GPMI_RESETN__GPMI_RESETN */
|
||||
>;
|
||||
fsl,drive-strength = <2>;
|
||||
};
|
||||
|
||||
auart0_pins_a: auart0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3000 /* MX28_PAD_AUART0_RX__AUART0_RX */
|
||||
0x3010 /* MX28_PAD_AUART0_TX__AUART0_TX */
|
||||
0x3020 /* MX28_PAD_AUART0_CTS__AUART0_CTS */
|
||||
0x3030 /* MX28_PAD_AUART0_RTS__AUART0_RTS */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
auart3_pins_a: auart3@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x30c0 /* MX28_PAD_AUART3_RX__AUART3_RX */
|
||||
0x30d0 /* MX28_PAD_AUART3_TX__AUART3_TX */
|
||||
0x30e0 /* MX28_PAD_AUART3_CTS__AUART3_CTS */
|
||||
0x30f0 /* MX28_PAD_AUART3_RTS__AUART3_RTS */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
|
@ -169,9 +249,17 @@
|
|||
|
||||
mac0_pins_a: mac0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x4000 0x4010 0x4020
|
||||
0x4030 0x4040 0x4060 0x4070
|
||||
0x4080 0x4100>;
|
||||
fsl,pinmux-ids = <
|
||||
0x4000 /* MX28_PAD_ENET0_MDC__ENET0_MDC */
|
||||
0x4010 /* MX28_PAD_ENET0_MDIO__ENET0_MDIO */
|
||||
0x4020 /* MX28_PAD_ENET0_RX_EN__ENET0_RX_EN */
|
||||
0x4030 /* MX28_PAD_ENET0_RXD0__ENET0_RXD0 */
|
||||
0x4040 /* MX28_PAD_ENET0_RXD1__ENET0_RXD1 */
|
||||
0x4060 /* MX28_PAD_ENET0_TX_EN__ENET0_TX_EN */
|
||||
0x4070 /* MX28_PAD_ENET0_TXD0__ENET0_TXD0 */
|
||||
0x4080 /* MX28_PAD_ENET0_TXD1__ENET0_TXD1 */
|
||||
0x4100 /* MX28_PAD_ENET_CLK__CLKCTRL_ENET */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
|
@ -179,8 +267,14 @@
|
|||
|
||||
mac1_pins_a: mac1@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x40f1 0x4091 0x40a1
|
||||
0x40e1 0x40b1 0x40c1>;
|
||||
fsl,pinmux-ids = <
|
||||
0x40f1 /* MX28_PAD_ENET0_CRS__ENET1_RX_EN */
|
||||
0x4091 /* MX28_PAD_ENET0_RXD2__ENET1_RXD0 */
|
||||
0x40a1 /* MX28_PAD_ENET0_RXD3__ENET1_RXD1 */
|
||||
0x40e1 /* MX28_PAD_ENET0_COL__ENET1_TX_EN */
|
||||
0x40b1 /* MX28_PAD_ENET0_TXD2__ENET1_TXD0 */
|
||||
0x40c1 /* MX28_PAD_ENET0_TXD3__ENET1_TXD1 */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
|
@ -188,28 +282,61 @@
|
|||
|
||||
mmc0_8bit_pins_a: mmc0-8bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x2000 0x2010 0x2020
|
||||
0x2030 0x2040 0x2050 0x2060
|
||||
0x2070 0x2080 0x2090 0x20a0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2000 /* MX28_PAD_SSP0_DATA0__SSP0_D0 */
|
||||
0x2010 /* MX28_PAD_SSP0_DATA1__SSP0_D1 */
|
||||
0x2020 /* MX28_PAD_SSP0_DATA2__SSP0_D2 */
|
||||
0x2030 /* MX28_PAD_SSP0_DATA3__SSP0_D3 */
|
||||
0x2040 /* MX28_PAD_SSP0_DATA4__SSP0_D4 */
|
||||
0x2050 /* MX28_PAD_SSP0_DATA5__SSP0_D5 */
|
||||
0x2060 /* MX28_PAD_SSP0_DATA6__SSP0_D6 */
|
||||
0x2070 /* MX28_PAD_SSP0_DATA7__SSP0_D7 */
|
||||
0x2080 /* MX28_PAD_SSP0_CMD__SSP0_CMD */
|
||||
0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
|
||||
0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
};
|
||||
|
||||
mmc0_4bit_pins_a: mmc0-4bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2000 /* MX28_PAD_SSP0_DATA0__SSP0_D0 */
|
||||
0x2010 /* MX28_PAD_SSP0_DATA1__SSP0_D1 */
|
||||
0x2020 /* MX28_PAD_SSP0_DATA2__SSP0_D2 */
|
||||
0x2030 /* MX28_PAD_SSP0_DATA3__SSP0_D3 */
|
||||
0x2080 /* MX28_PAD_SSP0_CMD__SSP0_CMD */
|
||||
0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
|
||||
0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
};
|
||||
|
||||
mmc0_cd_cfg: mmc0-cd-cfg {
|
||||
fsl,pinmux-ids = <0x2090>;
|
||||
fsl,pinmux-ids = <
|
||||
0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
|
||||
>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
mmc0_sck_cfg: mmc0-sck-cfg {
|
||||
fsl,pinmux-ids = <0x20a0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
|
||||
>;
|
||||
fsl,drive-strength = <2>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
i2c0_pins_a: i2c0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x3180 0x3190>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3180 /* MX28_PAD_I2C0_SCL__I2C0_SCL */
|
||||
0x3190 /* MX28_PAD_I2C0_SDA__I2C0_SDA */
|
||||
>;
|
||||
fsl,drive-strength = <1>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
|
@ -217,8 +344,12 @@
|
|||
|
||||
saif0_pins_a: saif0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids =
|
||||
<0x3140 0x3150 0x3160 0x3170>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3140 /* MX28_PAD_SAIF0_MCLK__SAIF0_MCLK */
|
||||
0x3150 /* MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK */
|
||||
0x3160 /* MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK */
|
||||
0x3170 /* MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 */
|
||||
>;
|
||||
fsl,drive-strength = <2>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
|
@ -226,11 +357,82 @@
|
|||
|
||||
saif1_pins_a: saif1@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <0x31a0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x31a0 /* MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 */
|
||||
>;
|
||||
fsl,drive-strength = <2>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <1>;
|
||||
};
|
||||
|
||||
pwm2_pins_a: pwm2@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x3120 /* MX28_PAD_PWM2__PWM_2 */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
lcdif_24bit_pins_a: lcdif-24bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
|
||||
0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
|
||||
0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
|
||||
0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
|
||||
0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
|
||||
0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
|
||||
0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
|
||||
0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
|
||||
0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
|
||||
0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
|
||||
0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
|
||||
0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
|
||||
0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
|
||||
0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
|
||||
0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
|
||||
0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
|
||||
0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */
|
||||
0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */
|
||||
0x1120 /* MX28_PAD_LCD_D18__LCD_D18 */
|
||||
0x1130 /* MX28_PAD_LCD_D19__LCD_D19 */
|
||||
0x1140 /* MX28_PAD_LCD_D20__LCD_D20 */
|
||||
0x1150 /* MX28_PAD_LCD_D21__LCD_D21 */
|
||||
0x1160 /* MX28_PAD_LCD_D22__LCD_D22 */
|
||||
0x1170 /* MX28_PAD_LCD_D23__LCD_D23 */
|
||||
0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
|
||||
0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
|
||||
0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
|
||||
0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
can0_pins_a: can0@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x0161 /* MX28_PAD_GPMI_RDY2__CAN0_TX */
|
||||
0x0171 /* MX28_PAD_GPMI_RDY3__CAN0_RX */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
|
||||
can1_pins_a: can1@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
0x0121 /* MX28_PAD_GPMI_CE2N__CAN1_TX */
|
||||
0x0131 /* MX28_PAD_GPMI_CE3N__CAN1_RX */
|
||||
>;
|
||||
fsl,drive-strength = <0>;
|
||||
fsl,voltage = <1>;
|
||||
fsl,pull-up = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
digctl@8001c000 {
|
||||
|
@ -272,18 +474,21 @@
|
|||
};
|
||||
|
||||
lcdif@80030000 {
|
||||
compatible = "fsl,imx28-lcdif";
|
||||
reg = <0x80030000 2000>;
|
||||
interrupts = <38 86>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can0: can@80032000 {
|
||||
compatible = "fsl,imx28-flexcan", "fsl,p1010-flexcan";
|
||||
reg = <0x80032000 2000>;
|
||||
interrupts = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can1: can@80034000 {
|
||||
compatible = "fsl,imx28-flexcan", "fsl,p1010-flexcan";
|
||||
reg = <0x80034000 2000>;
|
||||
interrupts = <9>;
|
||||
status = "disabled";
|
||||
|
@ -370,9 +575,9 @@
|
|||
};
|
||||
|
||||
rtc@80056000 {
|
||||
compatible = "fsl,imx28-rtc", "fsl,stmp3xxx-rtc";
|
||||
reg = <0x80056000 2000>;
|
||||
interrupts = <28 29>;
|
||||
status = "disabled";
|
||||
interrupts = <29>;
|
||||
};
|
||||
|
||||
i2c0: i2c@80058000 {
|
||||
|
@ -393,8 +598,11 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
pwm@80064000 {
|
||||
pwm: pwm@80064000 {
|
||||
compatible = "fsl,imx28-pwm", "fsl,imx23-pwm";
|
||||
reg = <0x80064000 2000>;
|
||||
#pwm-cells = <2>;
|
||||
fsl,pwm-number = <8>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -404,30 +612,35 @@
|
|||
};
|
||||
|
||||
auart0: serial@8006a000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x8006a000 0x2000>;
|
||||
interrupts = <112 70 71>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
auart1: serial@8006c000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x8006c000 0x2000>;
|
||||
interrupts = <113 72 73>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
auart2: serial@8006e000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x8006e000 0x2000>;
|
||||
interrupts = <114 74 75>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
auart3: serial@80070000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x80070000 0x2000>;
|
||||
interrupts = <115 76 77>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
auart4: serial@80072000 {
|
||||
compatible = "fsl,imx28-auart", "fsl,imx23-auart";
|
||||
reg = <0x80072000 0x2000>;
|
||||
interrupts = <116 78 79>;
|
||||
status = "disabled";
|
||||
|
|
|
@ -16,6 +16,7 @@ config SOC_IMX28
|
|||
bool
|
||||
select ARM_AMBA
|
||||
select CPU_ARM926T
|
||||
select HAVE_CAN_FLEXCAN if CAN
|
||||
select HAVE_PWM
|
||||
select PINCTRL_IMX28
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
#include <mach/mx23.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <mach/mxsfb.h>
|
||||
#include <linux/mxsfb.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
static inline int mx23_add_duart(void)
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
*/
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <mach/mxsfb.h>
|
||||
#include <linux/mxsfb.h>
|
||||
#include <linux/amba/bus.h>
|
||||
|
||||
static inline int mx28_add_duart(void)
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include <mach/mx23.h>
|
||||
#include <mach/mx28.h>
|
||||
#include <mach/devices-common.h>
|
||||
#include <mach/mxsfb.h>
|
||||
#include <linux/mxsfb.h>
|
||||
|
||||
#ifdef CONFIG_SOC_IMX23
|
||||
struct platform_device *__init mx23_add_mxsfb(
|
||||
|
|
|
@ -16,12 +16,57 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/mxsfb.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <mach/common.h>
|
||||
|
||||
static struct fb_videomode mx23evk_video_modes[] = {
|
||||
{
|
||||
.name = "Samsung-LMS430HF02",
|
||||
.refresh = 60,
|
||||
.xres = 480,
|
||||
.yres = 272,
|
||||
.pixclock = 108096, /* picosecond (9.2 MHz) */
|
||||
.left_margin = 15,
|
||||
.right_margin = 8,
|
||||
.upper_margin = 12,
|
||||
.lower_margin = 4,
|
||||
.hsync_len = 1,
|
||||
.vsync_len = 1,
|
||||
.sync = FB_SYNC_DATA_ENABLE_HIGH_ACT |
|
||||
FB_SYNC_DOTCLK_FAILING_ACT,
|
||||
},
|
||||
};
|
||||
|
||||
static struct fb_videomode mx28evk_video_modes[] = {
|
||||
{
|
||||
.name = "Seiko-43WVF1G",
|
||||
.refresh = 60,
|
||||
.xres = 800,
|
||||
.yres = 480,
|
||||
.pixclock = 29851, /* picosecond (33.5 MHz) */
|
||||
.left_margin = 89,
|
||||
.right_margin = 164,
|
||||
.upper_margin = 23,
|
||||
.lower_margin = 10,
|
||||
.hsync_len = 10,
|
||||
.vsync_len = 10,
|
||||
.sync = FB_SYNC_DATA_ENABLE_HIGH_ACT |
|
||||
FB_SYNC_DOTCLK_FAILING_ACT,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mxsfb_platform_data mxsfb_pdata __initdata;
|
||||
|
||||
static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = {
|
||||
OF_DEV_AUXDATA("fsl,imx23-lcdif", 0x80030000, NULL, &mxsfb_pdata),
|
||||
OF_DEV_AUXDATA("fsl,imx28-lcdif", 0x80030000, NULL, &mxsfb_pdata),
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static int __init mxs_icoll_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
|
@ -71,6 +116,76 @@ static struct sys_timer imx28_timer = {
|
|||
.init = imx28_timer_init,
|
||||
};
|
||||
|
||||
enum mac_oui {
|
||||
OUI_FSL,
|
||||
OUI_DENX,
|
||||
};
|
||||
|
||||
static void __init update_fec_mac_prop(enum mac_oui oui)
|
||||
{
|
||||
struct device_node *np, *from = NULL;
|
||||
struct property *oldmac, *newmac;
|
||||
const u32 *ocotp = mxs_get_ocotp();
|
||||
u8 *macaddr;
|
||||
u32 val;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
np = of_find_compatible_node(from, NULL, "fsl,imx28-fec");
|
||||
if (!np)
|
||||
return;
|
||||
from = np;
|
||||
|
||||
newmac = kzalloc(sizeof(*newmac) + 6, GFP_KERNEL);
|
||||
if (!newmac)
|
||||
return;
|
||||
newmac->value = newmac + 1;
|
||||
newmac->length = 6;
|
||||
|
||||
newmac->name = kstrdup("local-mac-address", GFP_KERNEL);
|
||||
if (!newmac->name) {
|
||||
kfree(newmac);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* OCOTP only stores the last 4 octets for each mac address,
|
||||
* so hard-code OUI here.
|
||||
*/
|
||||
macaddr = newmac->value;
|
||||
switch (oui) {
|
||||
case OUI_FSL:
|
||||
macaddr[0] = 0x00;
|
||||
macaddr[1] = 0x04;
|
||||
macaddr[2] = 0x9f;
|
||||
break;
|
||||
case OUI_DENX:
|
||||
macaddr[0] = 0xc0;
|
||||
macaddr[1] = 0xe5;
|
||||
macaddr[2] = 0x4e;
|
||||
break;
|
||||
}
|
||||
val = ocotp[i];
|
||||
macaddr[3] = (val >> 16) & 0xff;
|
||||
macaddr[4] = (val >> 8) & 0xff;
|
||||
macaddr[5] = (val >> 0) & 0xff;
|
||||
|
||||
oldmac = of_find_property(np, newmac->name, NULL);
|
||||
if (oldmac)
|
||||
prom_update_property(np, newmac, oldmac);
|
||||
else
|
||||
prom_add_property(np, newmac);
|
||||
}
|
||||
}
|
||||
|
||||
static void __init imx23_evk_init(void)
|
||||
{
|
||||
mxsfb_pdata.mode_list = mx23evk_video_modes;
|
||||
mxsfb_pdata.mode_count = ARRAY_SIZE(mx23evk_video_modes);
|
||||
mxsfb_pdata.default_bpp = 32;
|
||||
mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
|
||||
}
|
||||
|
||||
static void __init imx28_evk_init(void)
|
||||
{
|
||||
struct clk *clk;
|
||||
|
@ -79,24 +194,35 @@ static void __init imx28_evk_init(void)
|
|||
clk = clk_get_sys("enet_out", NULL);
|
||||
if (!IS_ERR(clk))
|
||||
clk_prepare_enable(clk);
|
||||
|
||||
update_fec_mac_prop(OUI_FSL);
|
||||
|
||||
mxsfb_pdata.mode_list = mx28evk_video_modes;
|
||||
mxsfb_pdata.mode_count = ARRAY_SIZE(mx28evk_video_modes);
|
||||
mxsfb_pdata.default_bpp = 32;
|
||||
mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
|
||||
}
|
||||
|
||||
static void __init mxs_machine_init(void)
|
||||
{
|
||||
if (of_machine_is_compatible("fsl,imx28-evk"))
|
||||
imx28_evk_init();
|
||||
else if (of_machine_is_compatible("fsl,imx23-evk"))
|
||||
imx23_evk_init();
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table,
|
||||
NULL, NULL);
|
||||
mxs_auxdata_lookup, NULL);
|
||||
}
|
||||
|
||||
static const char *imx23_dt_compat[] __initdata = {
|
||||
"fsl,imx23-evk",
|
||||
"olimex,imx23-olinuxino",
|
||||
"fsl,imx23",
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const char *imx28_dt_compat[] __initdata = {
|
||||
"crystalfontz,cfa10036",
|
||||
"fsl,imx28-evk",
|
||||
"fsl,imx28",
|
||||
NULL,
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#include <mach/common.h>
|
||||
|
||||
|
@ -265,6 +266,12 @@ static int stmp3xxx_rtc_resume(struct platform_device *dev)
|
|||
#define stmp3xxx_rtc_resume NULL
|
||||
#endif
|
||||
|
||||
static const struct of_device_id rtc_dt_ids[] = {
|
||||
{ .compatible = "fsl,stmp3xxx-rtc", },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rtc_dt_ids);
|
||||
|
||||
static struct platform_driver stmp3xxx_rtcdrv = {
|
||||
.probe = stmp3xxx_rtc_probe,
|
||||
.remove = stmp3xxx_rtc_remove,
|
||||
|
@ -273,6 +280,7 @@ static struct platform_driver stmp3xxx_rtcdrv = {
|
|||
.driver = {
|
||||
.name = "stmp3xxx-rtc",
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = rtc_dt_ids,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/of_device.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
|
@ -675,6 +676,30 @@ static struct uart_driver auart_driver = {
|
|||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* This function returns 1 if pdev isn't a device instatiated by dt, 0 if it
|
||||
* could successfully get all information from dt or a negative errno.
|
||||
*/
|
||||
static int serial_mxs_probe_dt(struct mxs_auart_port *s,
|
||||
struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
int ret;
|
||||
|
||||
if (!np)
|
||||
/* no device tree device */
|
||||
return 1;
|
||||
|
||||
ret = of_alias_get_id(np, "serial");
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "failed to get alias id: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
s->port.line = ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __devinit mxs_auart_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct mxs_auart_port *s;
|
||||
|
@ -689,6 +714,12 @@ static int __devinit mxs_auart_probe(struct platform_device *pdev)
|
|||
goto out;
|
||||
}
|
||||
|
||||
ret = serial_mxs_probe_dt(s, pdev);
|
||||
if (ret > 0)
|
||||
s->port.line = pdev->id < 0 ? 0 : pdev->id;
|
||||
else if (ret < 0)
|
||||
goto out_free;
|
||||
|
||||
pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
|
||||
if (IS_ERR(pinctrl)) {
|
||||
ret = PTR_ERR(pinctrl);
|
||||
|
@ -711,7 +742,6 @@ static int __devinit mxs_auart_probe(struct platform_device *pdev)
|
|||
s->port.membase = ioremap(r->start, resource_size(r));
|
||||
s->port.ops = &mxs_auart_ops;
|
||||
s->port.iotype = UPIO_MEM;
|
||||
s->port.line = pdev->id < 0 ? 0 : pdev->id;
|
||||
s->port.fifosize = 16;
|
||||
s->port.uartclk = clk_get_rate(s->clk);
|
||||
s->port.type = PORT_IMX;
|
||||
|
@ -728,7 +758,7 @@ static int __devinit mxs_auart_probe(struct platform_device *pdev)
|
|||
|
||||
platform_set_drvdata(pdev, s);
|
||||
|
||||
auart_port[pdev->id] = s;
|
||||
auart_port[s->port.line] = s;
|
||||
|
||||
mxs_auart_reset(&s->port);
|
||||
|
||||
|
@ -769,12 +799,19 @@ static int __devexit mxs_auart_remove(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct of_device_id mxs_auart_dt_ids[] = {
|
||||
{ .compatible = "fsl,imx23-auart", },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, mxs_auart_dt_ids);
|
||||
|
||||
static struct platform_driver mxs_auart_driver = {
|
||||
.probe = mxs_auart_probe,
|
||||
.remove = __devexit_p(mxs_auart_remove),
|
||||
.driver = {
|
||||
.name = "mxs-auart",
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = mxs_auart_dt_ids,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -807,3 +844,4 @@ module_init(mxs_auart_init);
|
|||
module_exit(mxs_auart_exit);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("Freescale MXS application uart driver");
|
||||
MODULE_ALIAS("platform:mxs-auart");
|
||||
|
|
|
@ -41,12 +41,14 @@
|
|||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <mach/mxsfb.h>
|
||||
#include <linux/mxsfb.h>
|
||||
|
||||
#define REG_SET 4
|
||||
#define REG_CLR 8
|
||||
|
@ -750,16 +752,43 @@ static void __devexit mxsfb_free_videomem(struct mxsfb_info *host)
|
|||
}
|
||||
}
|
||||
|
||||
static struct platform_device_id mxsfb_devtype[] = {
|
||||
{
|
||||
.name = "imx23-fb",
|
||||
.driver_data = MXSFB_V3,
|
||||
}, {
|
||||
.name = "imx28-fb",
|
||||
.driver_data = MXSFB_V4,
|
||||
}, {
|
||||
/* sentinel */
|
||||
}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, mxsfb_devtype);
|
||||
|
||||
static const struct of_device_id mxsfb_dt_ids[] = {
|
||||
{ .compatible = "fsl,imx23-lcdif", .data = &mxsfb_devtype[0], },
|
||||
{ .compatible = "fsl,imx28-lcdif", .data = &mxsfb_devtype[1], },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, mxsfb_dt_ids);
|
||||
|
||||
static int __devinit mxsfb_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct of_device_id *of_id =
|
||||
of_match_device(mxsfb_dt_ids, &pdev->dev);
|
||||
struct mxsfb_platform_data *pdata = pdev->dev.platform_data;
|
||||
struct resource *res;
|
||||
struct mxsfb_info *host;
|
||||
struct fb_info *fb_info;
|
||||
struct fb_modelist *modelist;
|
||||
struct pinctrl *pinctrl;
|
||||
int panel_enable;
|
||||
enum of_gpio_flags flags;
|
||||
int i, ret;
|
||||
|
||||
if (of_id)
|
||||
pdev->id_entry = of_id->data;
|
||||
|
||||
if (!pdata) {
|
||||
dev_err(&pdev->dev, "No platformdata. Giving up\n");
|
||||
return -ENODEV;
|
||||
|
@ -807,6 +836,22 @@ static int __devinit mxsfb_probe(struct platform_device *pdev)
|
|||
goto error_getclock;
|
||||
}
|
||||
|
||||
panel_enable = of_get_named_gpio_flags(pdev->dev.of_node,
|
||||
"panel-enable-gpios", 0, &flags);
|
||||
if (gpio_is_valid(panel_enable)) {
|
||||
unsigned long f = GPIOF_OUT_INIT_HIGH;
|
||||
if (flags == OF_GPIO_ACTIVE_LOW)
|
||||
f = GPIOF_OUT_INIT_LOW;
|
||||
ret = devm_gpio_request_one(&pdev->dev, panel_enable,
|
||||
f, "panel-enable");
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
"failed to request gpio %d: %d\n",
|
||||
panel_enable, ret);
|
||||
goto error_panel_enable;
|
||||
}
|
||||
}
|
||||
|
||||
fb_info->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL);
|
||||
if (!fb_info->pseudo_palette) {
|
||||
ret = -ENOMEM;
|
||||
|
@ -854,6 +899,7 @@ error_register:
|
|||
error_init_fb:
|
||||
kfree(fb_info->pseudo_palette);
|
||||
error_pseudo_pallette:
|
||||
error_panel_enable:
|
||||
clk_put(host->clk);
|
||||
error_getclock:
|
||||
error_getpin:
|
||||
|
@ -901,19 +947,6 @@ static void mxsfb_shutdown(struct platform_device *pdev)
|
|||
writel(CTRL_RUN, host->base + LCDC_CTRL + REG_CLR);
|
||||
}
|
||||
|
||||
static struct platform_device_id mxsfb_devtype[] = {
|
||||
{
|
||||
.name = "imx23-fb",
|
||||
.driver_data = MXSFB_V3,
|
||||
}, {
|
||||
.name = "imx28-fb",
|
||||
.driver_data = MXSFB_V4,
|
||||
}, {
|
||||
/* sentinel */
|
||||
}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, mxsfb_devtype);
|
||||
|
||||
static struct platform_driver mxsfb_driver = {
|
||||
.probe = mxsfb_probe,
|
||||
.remove = __devexit_p(mxsfb_remove),
|
||||
|
@ -921,6 +954,7 @@ static struct platform_driver mxsfb_driver = {
|
|||
.id_table = mxsfb_devtype,
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
.of_match_table = mxsfb_dt_ids,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
* MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __MACH_FB_H
|
||||
#define __MACH_FB_H
|
||||
#ifndef __LINUX_MXSFB_H
|
||||
#define __LINUX_MXSFB_H
|
||||
|
||||
#include <linux/fb.h>
|
||||
|
||||
|
@ -46,4 +46,4 @@ struct mxsfb_platform_data {
|
|||
*/
|
||||
};
|
||||
|
||||
#endif /* __MACH_FB_H */
|
||||
#endif /* __LINUX_MXSFB_H */
|
Загрузка…
Ссылка в новой задаче