diff options
author | Shawn Guo <shawn.guo@freescale.com> | 2011-10-16 20:42:16 -0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2011-10-18 06:42:57 -0400 |
commit | 73d2b4cdfc09a7a858b3ea1f32f6218b21439b96 (patch) | |
tree | d17b0b7514f39b11fd1e0e7d3719f58736e5fb00 | |
parent | 976d167615b64e14bc1491ca51d424e2ba9a5e84 (diff) |
arm/mx5: add device tree support for imx53 boards
It adds device tree support for imx53 boards.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | Documentation/devicetree/bindings/arm/fsl.txt | 15 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx53-ard.dts | 113 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx53-evk.dts | 120 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx53-qsb.dts | 125 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx53-smd.dts | 169 | ||||
-rw-r--r-- | arch/arm/boot/dts/imx53.dtsi | 301 | ||||
-rw-r--r-- | arch/arm/mach-mx5/Kconfig | 12 | ||||
-rw-r--r-- | arch/arm/mach-mx5/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx53_ard.c | 12 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx53_evk.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx53_loco.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx53_smd.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-mx5/clock-mx51-mx53.c | 31 | ||||
-rw-r--r-- | arch/arm/mach-mx5/imx53-dt.c | 126 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/common.h | 6 |
15 files changed, 1049 insertions, 10 deletions
diff --git a/Documentation/devicetree/bindings/arm/fsl.txt b/Documentation/devicetree/bindings/arm/fsl.txt new file mode 100644 index 000000000000..d1e8d6f797ef --- /dev/null +++ b/Documentation/devicetree/bindings/arm/fsl.txt | |||
@@ -0,0 +1,15 @@ | |||
1 | i.MX53 Automotive Reference Design Board | ||
2 | Required root node properties: | ||
3 | - compatible = "fsl,imx53-ard", "fsl,imx53"; | ||
4 | |||
5 | i.MX53 Evaluation Kit | ||
6 | Required root node properties: | ||
7 | - compatible = "fsl,imx53-evk", "fsl,imx53"; | ||
8 | |||
9 | i.MX53 Quick Start Board | ||
10 | Required root node properties: | ||
11 | - compatible = "fsl,imx53-qsb", "fsl,imx53"; | ||
12 | |||
13 | i.MX53 Smart Mobile Reference Design Board | ||
14 | Required root node properties: | ||
15 | - compatible = "fsl,imx53-smd", "fsl,imx53"; | ||
diff --git a/arch/arm/boot/dts/imx53-ard.dts b/arch/arm/boot/dts/imx53-ard.dts new file mode 100644 index 000000000000..2ab7f80a0a35 --- /dev/null +++ b/arch/arm/boot/dts/imx53-ard.dts | |||
@@ -0,0 +1,113 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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/ "imx53.dtsi" | ||
15 | |||
16 | / { | ||
17 | model = "Freescale i.MX53 Automotive Reference Design Board"; | ||
18 | compatible = "fsl,imx53-ard", "fsl,imx53"; | ||
19 | |||
20 | chosen { | ||
21 | bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait"; | ||
22 | }; | ||
23 | |||
24 | memory { | ||
25 | reg = <0x70000000 0x40000000>; | ||
26 | }; | ||
27 | |||
28 | soc { | ||
29 | aips@50000000 { /* AIPS1 */ | ||
30 | spba@50000000 { | ||
31 | esdhc@50004000 { /* ESDHC1 */ | ||
32 | cd-gpios = <&gpio0 1 0>; /* GPIO1_1 */ | ||
33 | wp-gpios = <&gpio0 9 0>; /* GPIO1_9 */ | ||
34 | status = "okay"; | ||
35 | }; | ||
36 | }; | ||
37 | |||
38 | wdog@53f98000 { /* WDOG1 */ | ||
39 | status = "okay"; | ||
40 | }; | ||
41 | |||
42 | iomuxc@53fa8000 { | ||
43 | compatible = "fsl,imx53-iomuxc-ard"; | ||
44 | reg = <0x53fa8000 0x4000>; | ||
45 | }; | ||
46 | |||
47 | uart0: uart@53fbc000 { /* UART1 */ | ||
48 | status = "okay"; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | aips@60000000 { /* AIPS2 */ | ||
53 | sdma@63fb0000 { | ||
54 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; | ||
55 | }; | ||
56 | }; | ||
57 | }; | ||
58 | |||
59 | eim-cs1@f4000000 { | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <1>; | ||
62 | compatible = "fsl,eim-bus", "simple-bus"; | ||
63 | reg = <0xf4000000 0x3ff0000>; | ||
64 | ranges; | ||
65 | |||
66 | lan9220@f4000000 { | ||
67 | compatible = "smsc,lan9220", "smsc,lan9115"; | ||
68 | reg = <0xf4000000 0x2000000>; | ||
69 | phy-mode = "mii"; | ||
70 | interrupt-parent = <&gpio1>; | ||
71 | interrupts = <31>; | ||
72 | reg-io-width = <4>; | ||
73 | smsc,irq-push-pull; | ||
74 | }; | ||
75 | }; | ||
76 | |||
77 | gpio-keys { | ||
78 | compatible = "gpio-keys"; | ||
79 | |||
80 | home { | ||
81 | label = "Home"; | ||
82 | gpios = <&gpio4 10 0>; /* GPIO5_10 */ | ||
83 | linux,code = <102>; /* KEY_HOME */ | ||
84 | gpio-key,wakeup; | ||
85 | }; | ||
86 | |||
87 | back { | ||
88 | label = "Back"; | ||
89 | gpios = <&gpio4 11 0>; /* GPIO5_11 */ | ||
90 | linux,code = <158>; /* KEY_BACK */ | ||
91 | gpio-key,wakeup; | ||
92 | }; | ||
93 | |||
94 | program { | ||
95 | label = "Program"; | ||
96 | gpios = <&gpio4 12 0>; /* GPIO5_12 */ | ||
97 | linux,code = <362>; /* KEY_PROGRAM */ | ||
98 | gpio-key,wakeup; | ||
99 | }; | ||
100 | |||
101 | volume-up { | ||
102 | label = "Volume Up"; | ||
103 | gpios = <&gpio4 13 0>; /* GPIO5_13 */ | ||
104 | linux,code = <115>; /* KEY_VOLUMEUP */ | ||
105 | }; | ||
106 | |||
107 | volume-down { | ||
108 | label = "Volume Down"; | ||
109 | gpios = <&gpio3 0 0>; /* GPIO4_0 */ | ||
110 | linux,code = <114>; /* KEY_VOLUMEDOWN */ | ||
111 | }; | ||
112 | }; | ||
113 | }; | ||
diff --git a/arch/arm/boot/dts/imx53-evk.dts b/arch/arm/boot/dts/imx53-evk.dts new file mode 100644 index 000000000000..3f3a88185ff8 --- /dev/null +++ b/arch/arm/boot/dts/imx53-evk.dts | |||
@@ -0,0 +1,120 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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/ "imx53.dtsi" | ||
15 | |||
16 | / { | ||
17 | model = "Freescale i.MX53 Evaluation Kit"; | ||
18 | compatible = "fsl,imx53-evk", "fsl,imx53"; | ||
19 | |||
20 | chosen { | ||
21 | bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait"; | ||
22 | }; | ||
23 | |||
24 | memory { | ||
25 | reg = <0x70000000 0x80000000>; | ||
26 | }; | ||
27 | |||
28 | soc { | ||
29 | aips@50000000 { /* AIPS1 */ | ||
30 | spba@50000000 { | ||
31 | esdhc@50004000 { /* ESDHC1 */ | ||
32 | cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ | ||
33 | wp-gpios = <&gpio2 14 0>; /* GPIO3_14 */ | ||
34 | status = "okay"; | ||
35 | }; | ||
36 | |||
37 | ecspi@50010000 { /* ECSPI1 */ | ||
38 | fsl,spi-num-chipselects = <2>; | ||
39 | cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */ | ||
40 | <&gpio2 19 0>; /* GPIO3_19 */ | ||
41 | status = "okay"; | ||
42 | |||
43 | flash: at45db321d@1 { | ||
44 | #address-cells = <1>; | ||
45 | #size-cells = <1>; | ||
46 | compatible = "atmel,at45db321d", "atmel,at45", "atmel,dataflash"; | ||
47 | spi-max-frequency = <25000000>; | ||
48 | reg = <1>; | ||
49 | |||
50 | partition@0 { | ||
51 | label = "U-Boot"; | ||
52 | reg = <0x0 0x40000>; | ||
53 | read-only; | ||
54 | }; | ||
55 | |||
56 | partition@40000 { | ||
57 | label = "Kernel"; | ||
58 | reg = <0x40000 0x3c0000>; | ||
59 | }; | ||
60 | }; | ||
61 | }; | ||
62 | |||
63 | esdhc@50020000 { /* ESDHC3 */ | ||
64 | cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */ | ||
65 | wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */ | ||
66 | status = "okay"; | ||
67 | }; | ||
68 | }; | ||
69 | |||
70 | wdog@53f98000 { /* WDOG1 */ | ||
71 | status = "okay"; | ||
72 | }; | ||
73 | |||
74 | iomuxc@53fa8000 { | ||
75 | compatible = "fsl,imx53-iomuxc-evk"; | ||
76 | reg = <0x53fa8000 0x4000>; | ||
77 | }; | ||
78 | |||
79 | uart0: uart@53fbc000 { /* UART1 */ | ||
80 | status = "okay"; | ||
81 | }; | ||
82 | }; | ||
83 | |||
84 | aips@60000000 { /* AIPS2 */ | ||
85 | sdma@63fb0000 { | ||
86 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; | ||
87 | }; | ||
88 | |||
89 | i2c@63fc4000 { /* I2C2 */ | ||
90 | status = "okay"; | ||
91 | |||
92 | pmic: mc13892@08 { | ||
93 | compatible = "fsl,mc13892", "fsl,mc13xxx"; | ||
94 | reg = <0x08>; | ||
95 | }; | ||
96 | |||
97 | codec: sgtl5000@0a { | ||
98 | compatible = "fsl,sgtl5000"; | ||
99 | reg = <0x0a>; | ||
100 | }; | ||
101 | }; | ||
102 | |||
103 | fec@63fec000 { | ||
104 | phy-mode = "rmii"; | ||
105 | phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ | ||
106 | status = "okay"; | ||
107 | }; | ||
108 | }; | ||
109 | }; | ||
110 | |||
111 | leds { | ||
112 | compatible = "gpio-leds"; | ||
113 | |||
114 | green { | ||
115 | label = "Heartbeat"; | ||
116 | gpios = <&gpio6 7 0>; /* GPIO7_7 */ | ||
117 | linux,default-trigger = "heartbeat"; | ||
118 | }; | ||
119 | }; | ||
120 | }; | ||
diff --git a/arch/arm/boot/dts/imx53-qsb.dts b/arch/arm/boot/dts/imx53-qsb.dts new file mode 100644 index 000000000000..ae6de6d0c3f1 --- /dev/null +++ b/arch/arm/boot/dts/imx53-qsb.dts | |||
@@ -0,0 +1,125 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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/ "imx53.dtsi" | ||
15 | |||
16 | / { | ||
17 | model = "Freescale i.MX53 Quick Start Board"; | ||
18 | compatible = "fsl,imx53-qsb", "fsl,imx53"; | ||
19 | |||
20 | chosen { | ||
21 | bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait"; | ||
22 | }; | ||
23 | |||
24 | memory { | ||
25 | reg = <0x70000000 0x40000000>; | ||
26 | }; | ||
27 | |||
28 | soc { | ||
29 | aips@50000000 { /* AIPS1 */ | ||
30 | spba@50000000 { | ||
31 | esdhc@50004000 { /* ESDHC1 */ | ||
32 | cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ | ||
33 | status = "okay"; | ||
34 | }; | ||
35 | |||
36 | esdhc@50020000 { /* ESDHC3 */ | ||
37 | cd-gpios = <&gpio2 11 0>; /* GPIO3_11 */ | ||
38 | wp-gpios = <&gpio2 12 0>; /* GPIO3_12 */ | ||
39 | status = "okay"; | ||
40 | }; | ||
41 | }; | ||
42 | |||
43 | wdog@53f98000 { /* WDOG1 */ | ||
44 | status = "okay"; | ||
45 | }; | ||
46 | |||
47 | iomuxc@53fa8000 { | ||
48 | compatible = "fsl,imx53-iomuxc-qsb"; | ||
49 | reg = <0x53fa8000 0x4000>; | ||
50 | }; | ||
51 | |||
52 | uart0: uart@53fbc000 { /* UART1 */ | ||
53 | status = "okay"; | ||
54 | }; | ||
55 | }; | ||
56 | |||
57 | aips@60000000 { /* AIPS2 */ | ||
58 | sdma@63fb0000 { | ||
59 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; | ||
60 | }; | ||
61 | |||
62 | i2c@63fc4000 { /* I2C2 */ | ||
63 | status = "okay"; | ||
64 | |||
65 | codec: sgtl5000@0a { | ||
66 | compatible = "fsl,sgtl5000"; | ||
67 | reg = <0x0a>; | ||
68 | }; | ||
69 | }; | ||
70 | |||
71 | i2c@63fc8000 { /* I2C1 */ | ||
72 | status = "okay"; | ||
73 | |||
74 | accelerometer: mma8450@1c { | ||
75 | compatible = "fsl,mma8450"; | ||
76 | reg = <0x1c>; | ||
77 | }; | ||
78 | |||
79 | pmic: dialog@48 { | ||
80 | compatible = "dialog,da9053", "dialog,da9052"; | ||
81 | reg = <0x48>; | ||
82 | }; | ||
83 | }; | ||
84 | |||
85 | fec@63fec000 { | ||
86 | phy-mode = "rmii"; | ||
87 | phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ | ||
88 | status = "okay"; | ||
89 | }; | ||
90 | }; | ||
91 | }; | ||
92 | |||
93 | gpio-keys { | ||
94 | compatible = "gpio-keys"; | ||
95 | |||
96 | power { | ||
97 | label = "Power Button"; | ||
98 | gpios = <&gpio0 8 0>; /* GPIO1_8 */ | ||
99 | linux,code = <116>; /* KEY_POWER */ | ||
100 | gpio-key,wakeup; | ||
101 | }; | ||
102 | |||
103 | volume-up { | ||
104 | label = "Volume Up"; | ||
105 | gpios = <&gpio1 14 0>; /* GPIO2_14 */ | ||
106 | linux,code = <115>; /* KEY_VOLUMEUP */ | ||
107 | }; | ||
108 | |||
109 | volume-down { | ||
110 | label = "Volume Down"; | ||
111 | gpios = <&gpio1 15 0>; /* GPIO2_15 */ | ||
112 | linux,code = <114>; /* KEY_VOLUMEDOWN */ | ||
113 | }; | ||
114 | }; | ||
115 | |||
116 | leds { | ||
117 | compatible = "gpio-leds"; | ||
118 | |||
119 | user { | ||
120 | label = "Heartbeat"; | ||
121 | gpios = <&gpio6 7 0>; /* GPIO7_7 */ | ||
122 | linux,default-trigger = "heartbeat"; | ||
123 | }; | ||
124 | }; | ||
125 | }; | ||
diff --git a/arch/arm/boot/dts/imx53-smd.dts b/arch/arm/boot/dts/imx53-smd.dts new file mode 100644 index 000000000000..b1c062eea715 --- /dev/null +++ b/arch/arm/boot/dts/imx53-smd.dts | |||
@@ -0,0 +1,169 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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/ "imx53.dtsi" | ||
15 | |||
16 | / { | ||
17 | model = "Freescale i.MX53 Smart Mobile Reference Design Board"; | ||
18 | compatible = "fsl,imx53-smd", "fsl,imx53"; | ||
19 | |||
20 | chosen { | ||
21 | bootargs = "console=ttymxc0,115200 root=/dev/mmcblk0p3 rootwait"; | ||
22 | }; | ||
23 | |||
24 | memory { | ||
25 | reg = <0x70000000 0x40000000>; | ||
26 | }; | ||
27 | |||
28 | soc { | ||
29 | aips@50000000 { /* AIPS1 */ | ||
30 | spba@50000000 { | ||
31 | esdhc@50004000 { /* ESDHC1 */ | ||
32 | cd-gpios = <&gpio2 13 0>; /* GPIO3_13 */ | ||
33 | wp-gpios = <&gpio3 11 0>; /* GPIO4_11 */ | ||
34 | status = "okay"; | ||
35 | }; | ||
36 | |||
37 | esdhc@50008000 { /* ESDHC2 */ | ||
38 | fsl,card-wired; | ||
39 | status = "okay"; | ||
40 | }; | ||
41 | |||
42 | uart2: uart@5000c000 { /* UART3 */ | ||
43 | fsl,uart-has-rtscts; | ||
44 | status = "okay"; | ||
45 | }; | ||
46 | |||
47 | ecspi@50010000 { /* ECSPI1 */ | ||
48 | fsl,spi-num-chipselects = <2>; | ||
49 | cs-gpios = <&gpio1 30 0>, /* GPIO2_30 */ | ||
50 | <&gpio2 19 0>; /* GPIO3_19 */ | ||
51 | status = "okay"; | ||
52 | |||
53 | zigbee: mc1323@0 { | ||
54 | compatible = "fsl,mc1323"; | ||
55 | spi-max-frequency = <8000000>; | ||
56 | reg = <0>; | ||
57 | }; | ||
58 | |||
59 | flash: m25p32@1 { | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <1>; | ||
62 | compatible = "st,m25p32", "st,m25p"; | ||
63 | spi-max-frequency = <20000000>; | ||
64 | reg = <1>; | ||
65 | |||
66 | partition@0 { | ||
67 | label = "U-Boot"; | ||
68 | reg = <0x0 0x40000>; | ||
69 | read-only; | ||
70 | }; | ||
71 | |||
72 | partition@40000 { | ||
73 | label = "Kernel"; | ||
74 | reg = <0x40000 0x3c0000>; | ||
75 | }; | ||
76 | }; | ||
77 | }; | ||
78 | |||
79 | esdhc@50020000 { /* ESDHC3 */ | ||
80 | fsl,card-wired; | ||
81 | status = "okay"; | ||
82 | }; | ||
83 | }; | ||
84 | |||
85 | wdog@53f98000 { /* WDOG1 */ | ||
86 | status = "okay"; | ||
87 | }; | ||
88 | |||
89 | iomuxc@53fa8000 { | ||
90 | compatible = "fsl,imx53-iomuxc-smd"; | ||
91 | reg = <0x53fa8000 0x4000>; | ||
92 | }; | ||
93 | |||
94 | uart0: uart@53fbc000 { /* UART1 */ | ||
95 | status = "okay"; | ||
96 | }; | ||
97 | |||
98 | uart1: uart@53fc0000 { /* UART2 */ | ||
99 | status = "okay"; | ||
100 | }; | ||
101 | }; | ||
102 | |||
103 | aips@60000000 { /* AIPS2 */ | ||
104 | sdma@63fb0000 { | ||
105 | fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin"; | ||
106 | }; | ||
107 | |||
108 | i2c@63fc4000 { /* I2C2 */ | ||
109 | status = "okay"; | ||
110 | |||
111 | codec: sgtl5000@0a { | ||
112 | compatible = "fsl,sgtl5000"; | ||
113 | reg = <0x0a>; | ||
114 | }; | ||
115 | |||
116 | magnetometer: mag3110@0e { | ||
117 | compatible = "fsl,mag3110"; | ||
118 | reg = <0x0e>; | ||
119 | }; | ||
120 | |||
121 | touchkey: mpr121@5a { | ||
122 | compatible = "fsl,mpr121"; | ||
123 | reg = <0x5a>; | ||
124 | }; | ||
125 | }; | ||
126 | |||
127 | i2c@63fc8000 { /* I2C1 */ | ||
128 | status = "okay"; | ||
129 | |||
130 | accelerometer: mma8450@1c { | ||
131 | compatible = "fsl,mma8450"; | ||
132 | reg = <0x1c>; | ||
133 | }; | ||
134 | |||
135 | camera: ov5642@3c { | ||
136 | compatible = "ovti,ov5642"; | ||
137 | reg = <0x3c>; | ||
138 | }; | ||
139 | |||
140 | pmic: dialog@48 { | ||
141 | compatible = "dialog,da9053", "dialog,da9052"; | ||
142 | reg = <0x48>; | ||
143 | }; | ||
144 | }; | ||
145 | |||
146 | fec@63fec000 { | ||
147 | phy-mode = "rmii"; | ||
148 | phy-reset-gpios = <&gpio6 6 0>; /* GPIO7_6 */ | ||
149 | status = "okay"; | ||
150 | }; | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | gpio-keys { | ||
155 | compatible = "gpio-keys"; | ||
156 | |||
157 | volume-up { | ||
158 | label = "Volume Up"; | ||
159 | gpios = <&gpio1 14 0>; /* GPIO2_14 */ | ||
160 | linux,code = <115>; /* KEY_VOLUMEUP */ | ||
161 | }; | ||
162 | |||
163 | volume-down { | ||
164 | label = "Volume Down"; | ||
165 | gpios = <&gpio1 15 0>; /* GPIO2_15 */ | ||
166 | linux,code = <114>; /* KEY_VOLUMEDOWN */ | ||
167 | }; | ||
168 | }; | ||
169 | }; | ||
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi new file mode 100644 index 000000000000..099cd84ee372 --- /dev/null +++ b/arch/arm/boot/dts/imx53.dtsi | |||
@@ -0,0 +1,301 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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 | /include/ "skeleton.dtsi" | ||
14 | |||
15 | / { | ||
16 | aliases { | ||
17 | serial0 = &uart0; | ||
18 | serial1 = &uart1; | ||
19 | serial2 = &uart2; | ||
20 | serial3 = &uart3; | ||
21 | serial4 = &uart4; | ||
22 | }; | ||
23 | |||
24 | tzic: tz-interrupt-controller@0fffc000 { | ||
25 | compatible = "fsl,imx53-tzic", "fsl,tzic"; | ||
26 | interrupt-controller; | ||
27 | #interrupt-cells = <1>; | ||
28 | reg = <0x0fffc000 0x4000>; | ||
29 | }; | ||
30 | |||
31 | clocks { | ||
32 | #address-cells = <1>; | ||
33 | #size-cells = <0>; | ||
34 | |||
35 | ckil { | ||
36 | compatible = "fsl,imx-ckil", "fixed-clock"; | ||
37 | clock-frequency = <32768>; | ||
38 | }; | ||
39 | |||
40 | ckih1 { | ||
41 | compatible = "fsl,imx-ckih1", "fixed-clock"; | ||
42 | clock-frequency = <22579200>; | ||
43 | }; | ||
44 | |||
45 | ckih2 { | ||
46 | compatible = "fsl,imx-ckih2", "fixed-clock"; | ||
47 | clock-frequency = <0>; | ||
48 | }; | ||
49 | |||
50 | osc { | ||
51 | compatible = "fsl,imx-osc", "fixed-clock"; | ||
52 | clock-frequency = <24000000>; | ||
53 | }; | ||
54 | }; | ||
55 | |||
56 | soc { | ||
57 | #address-cells = <1>; | ||
58 | #size-cells = <1>; | ||
59 | compatible = "simple-bus"; | ||
60 | interrupt-parent = <&tzic>; | ||
61 | ranges; | ||
62 | |||
63 | aips@50000000 { /* AIPS1 */ | ||
64 | compatible = "fsl,aips-bus", "simple-bus"; | ||
65 | #address-cells = <1>; | ||
66 | #size-cells = <1>; | ||
67 | reg = <0x50000000 0x10000000>; | ||
68 | ranges; | ||
69 | |||
70 | spba@50000000 { | ||
71 | compatible = "fsl,spba-bus", "simple-bus"; | ||
72 | #address-cells = <1>; | ||
73 | #size-cells = <1>; | ||
74 | reg = <0x50000000 0x40000>; | ||
75 | ranges; | ||
76 | |||
77 | esdhc@50004000 { /* ESDHC1 */ | ||
78 | compatible = "fsl,imx53-esdhc"; | ||
79 | reg = <0x50004000 0x4000>; | ||
80 | interrupts = <1>; | ||
81 | status = "disabled"; | ||
82 | }; | ||
83 | |||
84 | esdhc@50008000 { /* ESDHC2 */ | ||
85 | compatible = "fsl,imx53-esdhc"; | ||
86 | reg = <0x50008000 0x4000>; | ||
87 | interrupts = <2>; | ||
88 | status = "disabled"; | ||
89 | }; | ||
90 | |||
91 | uart2: uart@5000c000 { /* UART3 */ | ||
92 | compatible = "fsl,imx53-uart", "fsl,imx21-uart"; | ||
93 | reg = <0x5000c000 0x4000>; | ||
94 | interrupts = <33>; | ||
95 | status = "disabled"; | ||
96 | }; | ||
97 | |||
98 | ecspi@50010000 { /* ECSPI1 */ | ||
99 | #address-cells = <1>; | ||
100 | #size-cells = <0>; | ||
101 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; | ||
102 | reg = <0x50010000 0x4000>; | ||
103 | interrupts = <36>; | ||
104 | status = "disabled"; | ||
105 | }; | ||
106 | |||
107 | esdhc@50020000 { /* ESDHC3 */ | ||
108 | compatible = "fsl,imx53-esdhc"; | ||
109 | reg = <0x50020000 0x4000>; | ||
110 | interrupts = <3>; | ||
111 | status = "disabled"; | ||
112 | }; | ||
113 | |||
114 | esdhc@50024000 { /* ESDHC4 */ | ||
115 | compatible = "fsl,imx53-esdhc"; | ||
116 | reg = <0x50024000 0x4000>; | ||
117 | interrupts = <4>; | ||
118 | status = "disabled"; | ||
119 | }; | ||
120 | }; | ||
121 | |||
122 | gpio0: gpio@53f84000 { /* GPIO1 */ | ||
123 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
124 | reg = <0x53f84000 0x4000>; | ||
125 | interrupts = <50 51>; | ||
126 | gpio-controller; | ||
127 | #gpio-cells = <2>; | ||
128 | interrupt-controller; | ||
129 | #interrupt-cells = <1>; | ||
130 | }; | ||
131 | |||
132 | gpio1: gpio@53f88000 { /* GPIO2 */ | ||
133 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
134 | reg = <0x53f88000 0x4000>; | ||
135 | interrupts = <52 53>; | ||
136 | gpio-controller; | ||
137 | #gpio-cells = <2>; | ||
138 | interrupt-controller; | ||
139 | #interrupt-cells = <1>; | ||
140 | }; | ||
141 | |||
142 | gpio2: gpio@53f8c000 { /* GPIO3 */ | ||
143 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
144 | reg = <0x53f8c000 0x4000>; | ||
145 | interrupts = <54 55>; | ||
146 | gpio-controller; | ||
147 | #gpio-cells = <2>; | ||
148 | interrupt-controller; | ||
149 | #interrupt-cells = <1>; | ||
150 | }; | ||
151 | |||
152 | gpio3: gpio@53f90000 { /* GPIO4 */ | ||
153 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
154 | reg = <0x53f90000 0x4000>; | ||
155 | interrupts = <56 57>; | ||
156 | gpio-controller; | ||
157 | #gpio-cells = <2>; | ||
158 | interrupt-controller; | ||
159 | #interrupt-cells = <1>; | ||
160 | }; | ||
161 | |||
162 | wdog@53f98000 { /* WDOG1 */ | ||
163 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; | ||
164 | reg = <0x53f98000 0x4000>; | ||
165 | interrupts = <58>; | ||
166 | status = "disabled"; | ||
167 | }; | ||
168 | |||
169 | wdog@53f9c000 { /* WDOG2 */ | ||
170 | compatible = "fsl,imx53-wdt", "fsl,imx21-wdt"; | ||
171 | reg = <0x53f9c000 0x4000>; | ||
172 | interrupts = <59>; | ||
173 | status = "disabled"; | ||
174 | }; | ||
175 | |||
176 | uart0: uart@53fbc000 { /* UART1 */ | ||
177 | compatible = "fsl,imx53-uart", "fsl,imx21-uart"; | ||
178 | reg = <0x53fbc000 0x4000>; | ||
179 | interrupts = <31>; | ||
180 | status = "disabled"; | ||
181 | }; | ||
182 | |||
183 | uart1: uart@53fc0000 { /* UART2 */ | ||
184 | compatible = "fsl,imx53-uart", "fsl,imx21-uart"; | ||
185 | reg = <0x53fc0000 0x4000>; | ||
186 | interrupts = <32>; | ||
187 | status = "disabled"; | ||
188 | }; | ||
189 | |||
190 | gpio4: gpio@53fdc000 { /* GPIO5 */ | ||
191 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
192 | reg = <0x53fdc000 0x4000>; | ||
193 | interrupts = <103 104>; | ||
194 | gpio-controller; | ||
195 | #gpio-cells = <2>; | ||
196 | interrupt-controller; | ||
197 | #interrupt-cells = <1>; | ||
198 | }; | ||
199 | |||
200 | gpio5: gpio@53fe0000 { /* GPIO6 */ | ||
201 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
202 | reg = <0x53fe0000 0x4000>; | ||
203 | interrupts = <105 106>; | ||
204 | gpio-controller; | ||
205 | #gpio-cells = <2>; | ||
206 | interrupt-controller; | ||
207 | #interrupt-cells = <1>; | ||
208 | }; | ||
209 | |||
210 | gpio6: gpio@53fe4000 { /* GPIO7 */ | ||
211 | compatible = "fsl,imx53-gpio", "fsl,imx31-gpio"; | ||
212 | reg = <0x53fe4000 0x4000>; | ||
213 | interrupts = <107 108>; | ||
214 | gpio-controller; | ||
215 | #gpio-cells = <2>; | ||
216 | interrupt-controller; | ||
217 | #interrupt-cells = <1>; | ||
218 | }; | ||
219 | |||
220 | i2c@53fec000 { /* I2C3 */ | ||
221 | #address-cells = <1>; | ||
222 | #size-cells = <0>; | ||
223 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | ||
224 | reg = <0x53fec000 0x4000>; | ||
225 | interrupts = <64>; | ||
226 | status = "disabled"; | ||
227 | }; | ||
228 | |||
229 | uart3: uart@53ff0000 { /* UART4 */ | ||
230 | compatible = "fsl,imx53-uart", "fsl,imx21-uart"; | ||
231 | reg = <0x53ff0000 0x4000>; | ||
232 | interrupts = <13>; | ||
233 | status = "disabled"; | ||
234 | }; | ||
235 | }; | ||
236 | |||
237 | aips@60000000 { /* AIPS2 */ | ||
238 | compatible = "fsl,aips-bus", "simple-bus"; | ||
239 | #address-cells = <1>; | ||
240 | #size-cells = <1>; | ||
241 | reg = <0x60000000 0x10000000>; | ||
242 | ranges; | ||
243 | |||
244 | uart4: uart@63f90000 { /* UART5 */ | ||
245 | compatible = "fsl,imx53-uart", "fsl,imx21-uart"; | ||
246 | reg = <0x63f90000 0x4000>; | ||
247 | interrupts = <86>; | ||
248 | status = "disabled"; | ||
249 | }; | ||
250 | |||
251 | ecspi@63fac000 { /* ECSPI2 */ | ||
252 | #address-cells = <1>; | ||
253 | #size-cells = <0>; | ||
254 | compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi"; | ||
255 | reg = <0x63fac000 0x4000>; | ||
256 | interrupts = <37>; | ||
257 | status = "disabled"; | ||
258 | }; | ||
259 | |||
260 | sdma@63fb0000 { | ||
261 | compatible = "fsl,imx53-sdma", "fsl,imx35-sdma"; | ||
262 | reg = <0x63fb0000 0x4000>; | ||
263 | interrupts = <6>; | ||
264 | }; | ||
265 | |||
266 | cspi@63fc0000 { | ||
267 | #address-cells = <1>; | ||
268 | #size-cells = <0>; | ||
269 | compatible = "fsl,imx53-cspi", "fsl,imx35-cspi"; | ||
270 | reg = <0x63fc0000 0x4000>; | ||
271 | interrupts = <38>; | ||
272 | status = "disabled"; | ||
273 | }; | ||
274 | |||
275 | i2c@63fc4000 { /* I2C2 */ | ||
276 | #address-cells = <1>; | ||
277 | #size-cells = <0>; | ||
278 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | ||
279 | reg = <0x63fc4000 0x4000>; | ||
280 | interrupts = <63>; | ||
281 | status = "disabled"; | ||
282 | }; | ||
283 | |||
284 | i2c@63fc8000 { /* I2C1 */ | ||
285 | #address-cells = <1>; | ||
286 | #size-cells = <0>; | ||
287 | compatible = "fsl,imx53-i2c", "fsl,imx1-i2c"; | ||
288 | reg = <0x63fc8000 0x4000>; | ||
289 | interrupts = <62>; | ||
290 | status = "disabled"; | ||
291 | }; | ||
292 | |||
293 | fec@63fec000 { | ||
294 | compatible = "fsl,imx53-fec", "fsl,imx25-fec"; | ||
295 | reg = <0x63fec000 0x4000>; | ||
296 | interrupts = <87>; | ||
297 | status = "disabled"; | ||
298 | }; | ||
299 | }; | ||
300 | }; | ||
301 | }; | ||
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig index b4e7c58bbb38..0ac676c5256d 100644 --- a/arch/arm/mach-mx5/Kconfig +++ b/arch/arm/mach-mx5/Kconfig | |||
@@ -172,6 +172,18 @@ endif # ARCH_MX51 | |||
172 | if ARCH_MX53_SUPPORTED | 172 | if ARCH_MX53_SUPPORTED |
173 | comment "i.MX53 machines:" | 173 | comment "i.MX53 machines:" |
174 | 174 | ||
175 | config MACH_IMX53_DT | ||
176 | bool "Support i.MX53 platforms from device tree" | ||
177 | select SOC_IMX53 | ||
178 | select USE_OF | ||
179 | select MACH_MX53_ARD | ||
180 | select MACH_MX53_EVK | ||
181 | select MACH_MX53_LOCO | ||
182 | select MACH_MX53_SMD | ||
183 | help | ||
184 | Include support for Freescale i.MX53 based platforms | ||
185 | using the device tree for discovery | ||
186 | |||
175 | config MACH_MX53_EVK | 187 | config MACH_MX53_EVK |
176 | bool "Support MX53 EVK platforms" | 188 | bool "Support MX53 EVK platforms" |
177 | select SOC_IMX53 | 189 | select SOC_IMX53 |
diff --git a/arch/arm/mach-mx5/Makefile b/arch/arm/mach-mx5/Makefile index 383e7cd3fbcb..3dbe5e26a51b 100644 --- a/arch/arm/mach-mx5/Makefile +++ b/arch/arm/mach-mx5/Makefile | |||
@@ -22,3 +22,5 @@ obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o | |||
22 | obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o | 22 | obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o |
23 | obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o | 23 | obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o |
24 | obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o | 24 | obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o |
25 | |||
26 | obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o | ||
diff --git a/arch/arm/mach-mx5/board-mx53_ard.c b/arch/arm/mach-mx5/board-mx53_ard.c index 76a67c4a2a0b..9b4395d7a07c 100644 --- a/arch/arm/mach-mx5/board-mx53_ard.c +++ b/arch/arm/mach-mx5/board-mx53_ard.c | |||
@@ -171,9 +171,6 @@ static struct imxi2c_platform_data mx53_ard_i2c3_data = { | |||
171 | 171 | ||
172 | static void __init mx53_ard_io_init(void) | 172 | static void __init mx53_ard_io_init(void) |
173 | { | 173 | { |
174 | mxc_iomux_v3_setup_multiple_pads(mx53_ard_pads, | ||
175 | ARRAY_SIZE(mx53_ard_pads)); | ||
176 | |||
177 | gpio_request(ARD_ETHERNET_INT_B, "eth-int-b"); | 174 | gpio_request(ARD_ETHERNET_INT_B, "eth-int-b"); |
178 | gpio_direction_input(ARD_ETHERNET_INT_B); | 175 | gpio_direction_input(ARD_ETHERNET_INT_B); |
179 | 176 | ||
@@ -216,6 +213,13 @@ static int weim_cs_config(void) | |||
216 | return 0; | 213 | return 0; |
217 | } | 214 | } |
218 | 215 | ||
216 | void __init imx53_ard_common_init(void) | ||
217 | { | ||
218 | mxc_iomux_v3_setup_multiple_pads(mx53_ard_pads, | ||
219 | ARRAY_SIZE(mx53_ard_pads)); | ||
220 | weim_cs_config(); | ||
221 | } | ||
222 | |||
219 | static struct platform_device *devices[] __initdata = { | 223 | static struct platform_device *devices[] __initdata = { |
220 | &ard_smsc_lan9220_device, | 224 | &ard_smsc_lan9220_device, |
221 | }; | 225 | }; |
@@ -225,8 +229,8 @@ static void __init mx53_ard_board_init(void) | |||
225 | imx53_soc_init(); | 229 | imx53_soc_init(); |
226 | imx53_add_imx_uart(0, NULL); | 230 | imx53_add_imx_uart(0, NULL); |
227 | 231 | ||
232 | imx53_ard_common_init(); | ||
228 | mx53_ard_io_init(); | 233 | mx53_ard_io_init(); |
229 | weim_cs_config(); | ||
230 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 234 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
231 | 235 | ||
232 | imx53_add_sdhci_esdhc_imx(0, &mx53_ard_sd1_data); | 236 | imx53_add_sdhci_esdhc_imx(0, &mx53_ard_sd1_data); |
diff --git a/arch/arm/mach-mx5/board-mx53_evk.c b/arch/arm/mach-mx5/board-mx53_evk.c index 1b417b06b736..7663905d5c6d 100644 --- a/arch/arm/mach-mx5/board-mx53_evk.c +++ b/arch/arm/mach-mx5/board-mx53_evk.c | |||
@@ -131,12 +131,17 @@ static const struct spi_imx_master mx53_evk_spi_data __initconst = { | |||
131 | .num_chipselect = ARRAY_SIZE(mx53_evk_spi_cs), | 131 | .num_chipselect = ARRAY_SIZE(mx53_evk_spi_cs), |
132 | }; | 132 | }; |
133 | 133 | ||
134 | void __init imx53_evk_common_init(void) | ||
135 | { | ||
136 | mxc_iomux_v3_setup_multiple_pads(mx53_evk_pads, | ||
137 | ARRAY_SIZE(mx53_evk_pads)); | ||
138 | } | ||
139 | |||
134 | static void __init mx53_evk_board_init(void) | 140 | static void __init mx53_evk_board_init(void) |
135 | { | 141 | { |
136 | imx53_soc_init(); | 142 | imx53_soc_init(); |
143 | imx53_evk_common_init(); | ||
137 | 144 | ||
138 | mxc_iomux_v3_setup_multiple_pads(mx53_evk_pads, | ||
139 | ARRAY_SIZE(mx53_evk_pads)); | ||
140 | mx53_evk_init_uart(); | 145 | mx53_evk_init_uart(); |
141 | mx53_evk_fec_reset(); | 146 | mx53_evk_fec_reset(); |
142 | imx53_add_fec(&mx53_evk_fec_pdata); | 147 | imx53_add_fec(&mx53_evk_fec_pdata); |
diff --git a/arch/arm/mach-mx5/board-mx53_loco.c b/arch/arm/mach-mx5/board-mx53_loco.c index 4e1d51d252dc..3922cd5ea854 100644 --- a/arch/arm/mach-mx5/board-mx53_loco.c +++ b/arch/arm/mach-mx5/board-mx53_loco.c | |||
@@ -257,12 +257,17 @@ static const struct gpio_led_platform_data mx53loco_leds_data __initconst = { | |||
257 | .num_leds = ARRAY_SIZE(mx53loco_leds), | 257 | .num_leds = ARRAY_SIZE(mx53loco_leds), |
258 | }; | 258 | }; |
259 | 259 | ||
260 | void __init imx53_qsb_common_init(void) | ||
261 | { | ||
262 | mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads, | ||
263 | ARRAY_SIZE(mx53_loco_pads)); | ||
264 | } | ||
265 | |||
260 | static void __init mx53_loco_board_init(void) | 266 | static void __init mx53_loco_board_init(void) |
261 | { | 267 | { |
262 | imx53_soc_init(); | 268 | imx53_soc_init(); |
269 | imx53_qsb_common_init(); | ||
263 | 270 | ||
264 | mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads, | ||
265 | ARRAY_SIZE(mx53_loco_pads)); | ||
266 | imx53_add_imx_uart(0, NULL); | 271 | imx53_add_imx_uart(0, NULL); |
267 | mx53_loco_fec_reset(); | 272 | mx53_loco_fec_reset(); |
268 | imx53_add_fec(&mx53_loco_fec_data); | 273 | imx53_add_fec(&mx53_loco_fec_data); |
diff --git a/arch/arm/mach-mx5/board-mx53_smd.c b/arch/arm/mach-mx5/board-mx53_smd.c index bc02894eafef..b10c89982fbc 100644 --- a/arch/arm/mach-mx5/board-mx53_smd.c +++ b/arch/arm/mach-mx5/board-mx53_smd.c | |||
@@ -111,12 +111,17 @@ static const struct imxi2c_platform_data mx53_smd_i2c_data __initconst = { | |||
111 | .bitrate = 100000, | 111 | .bitrate = 100000, |
112 | }; | 112 | }; |
113 | 113 | ||
114 | void __init imx53_smd_common_init(void) | ||
115 | { | ||
116 | mxc_iomux_v3_setup_multiple_pads(mx53_smd_pads, | ||
117 | ARRAY_SIZE(mx53_smd_pads)); | ||
118 | } | ||
119 | |||
114 | static void __init mx53_smd_board_init(void) | 120 | static void __init mx53_smd_board_init(void) |
115 | { | 121 | { |
116 | imx53_soc_init(); | 122 | imx53_soc_init(); |
123 | imx53_smd_common_init(); | ||
117 | 124 | ||
118 | mxc_iomux_v3_setup_multiple_pads(mx53_smd_pads, | ||
119 | ARRAY_SIZE(mx53_smd_pads)); | ||
120 | mx53_smd_init_uart(); | 125 | mx53_smd_init_uart(); |
121 | mx53_smd_fec_reset(); | 126 | mx53_smd_fec_reset(); |
122 | imx53_add_fec(&mx53_smd_fec_data); | 127 | imx53_add_fec(&mx53_smd_fec_data); |
diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c index f7bf996f463b..d9b03d4dba6d 100644 --- a/arch/arm/mach-mx5/clock-mx51-mx53.c +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/clk.h> | 15 | #include <linux/clk.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/clkdev.h> | 17 | #include <linux/clkdev.h> |
18 | #include <linux/of.h> | ||
18 | 19 | ||
19 | #include <asm/div64.h> | 20 | #include <asm/div64.h> |
20 | 21 | ||
@@ -1609,3 +1610,33 @@ int __init mx53_clocks_init(unsigned long ckil, unsigned long osc, | |||
1609 | MX53_INT_GPT); | 1610 | MX53_INT_GPT); |
1610 | return 0; | 1611 | return 0; |
1611 | } | 1612 | } |
1613 | |||
1614 | static void __init clk_get_freq_dt(unsigned long *ckil, unsigned long *osc, | ||
1615 | unsigned long *ckih1, unsigned long *ckih2) | ||
1616 | { | ||
1617 | struct device_node *np; | ||
1618 | |||
1619 | /* retrieve the freqency of fixed clocks from device tree */ | ||
1620 | for_each_compatible_node(np, NULL, "fixed-clock") { | ||
1621 | u32 rate; | ||
1622 | if (of_property_read_u32(np, "clock-frequency", &rate)) | ||
1623 | continue; | ||
1624 | |||
1625 | if (of_device_is_compatible(np, "fsl,imx-ckil")) | ||
1626 | *ckil = rate; | ||
1627 | else if (of_device_is_compatible(np, "fsl,imx-osc")) | ||
1628 | *osc = rate; | ||
1629 | else if (of_device_is_compatible(np, "fsl,imx-ckih1")) | ||
1630 | *ckih1 = rate; | ||
1631 | else if (of_device_is_compatible(np, "fsl,imx-ckih2")) | ||
1632 | *ckih2 = rate; | ||
1633 | } | ||
1634 | } | ||
1635 | |||
1636 | int __init mx53_clocks_init_dt(void) | ||
1637 | { | ||
1638 | unsigned long ckil, osc, ckih1, ckih2; | ||
1639 | |||
1640 | clk_get_freq_dt(&ckil, &osc, &ckih1, &ckih2); | ||
1641 | return mx53_clocks_init(ckil, osc, ckih1, ckih2); | ||
1642 | } | ||
diff --git a/arch/arm/mach-mx5/imx53-dt.c b/arch/arm/mach-mx5/imx53-dt.c new file mode 100644 index 000000000000..ccaa0b81b768 --- /dev/null +++ b/arch/arm/mach-mx5/imx53-dt.c | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. | ||
3 | * Copyright 2011 Linaro Ltd. | ||
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 or later 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 | #include <linux/io.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/irqdomain.h> | ||
16 | #include <linux/of_irq.h> | ||
17 | #include <linux/of_platform.h> | ||
18 | #include <asm/mach/arch.h> | ||
19 | #include <asm/mach/time.h> | ||
20 | #include <mach/common.h> | ||
21 | #include <mach/mx53.h> | ||
22 | |||
23 | /* | ||
24 | * Lookup table for attaching a specific name and platform_data pointer to | ||
25 | * devices as they get created by of_platform_populate(). Ideally this table | ||
26 | * would not exist, but the current clock implementation depends on some devices | ||
27 | * having a specific name. | ||
28 | */ | ||
29 | static const struct of_dev_auxdata imx53_auxdata_lookup[] __initconst = { | ||
30 | OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART1_BASE_ADDR, "imx21-uart.0", NULL), | ||
31 | OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART2_BASE_ADDR, "imx21-uart.1", NULL), | ||
32 | OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART3_BASE_ADDR, "imx21-uart.2", NULL), | ||
33 | OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART4_BASE_ADDR, "imx21-uart.3", NULL), | ||
34 | OF_DEV_AUXDATA("fsl,imx53-uart", MX53_UART5_BASE_ADDR, "imx21-uart.4", NULL), | ||
35 | OF_DEV_AUXDATA("fsl,imx53-fec", MX53_FEC_BASE_ADDR, "imx25-fec.0", NULL), | ||
36 | OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC1_BASE_ADDR, "sdhci-esdhc-imx53.0", NULL), | ||
37 | OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC2_BASE_ADDR, "sdhci-esdhc-imx53.1", NULL), | ||
38 | OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC3_BASE_ADDR, "sdhci-esdhc-imx53.2", NULL), | ||
39 | OF_DEV_AUXDATA("fsl,imx53-esdhc", MX53_ESDHC4_BASE_ADDR, "sdhci-esdhc-imx53.3", NULL), | ||
40 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI1_BASE_ADDR, "imx51-ecspi.0", NULL), | ||
41 | OF_DEV_AUXDATA("fsl,imx53-ecspi", MX53_ECSPI2_BASE_ADDR, "imx51-ecspi.1", NULL), | ||
42 | OF_DEV_AUXDATA("fsl,imx53-cspi", MX53_CSPI_BASE_ADDR, "imx35-cspi.0", NULL), | ||
43 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C1_BASE_ADDR, "imx-i2c.0", NULL), | ||
44 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C2_BASE_ADDR, "imx-i2c.1", NULL), | ||
45 | OF_DEV_AUXDATA("fsl,imx53-i2c", MX53_I2C3_BASE_ADDR, "imx-i2c.2", NULL), | ||
46 | OF_DEV_AUXDATA("fsl,imx53-sdma", MX53_SDMA_BASE_ADDR, "imx35-sdma", NULL), | ||
47 | OF_DEV_AUXDATA("fsl,imx53-wdt", MX53_WDOG1_BASE_ADDR, "imx2-wdt.0", NULL), | ||
48 | { /* sentinel */ } | ||
49 | }; | ||
50 | |||
51 | static void __init imx53_tzic_add_irq_domain(struct device_node *np, | ||
52 | struct device_node *interrupt_parent) | ||
53 | { | ||
54 | irq_domain_add_simple(np, 0); | ||
55 | } | ||
56 | |||
57 | static void __init imx53_gpio_add_irq_domain(struct device_node *np, | ||
58 | struct device_node *interrupt_parent) | ||
59 | { | ||
60 | static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS - | ||
61 | 32 * 7; /* imx53 gets 7 gpio ports */ | ||
62 | |||
63 | irq_domain_add_simple(np, gpio_irq_base); | ||
64 | gpio_irq_base += 32; | ||
65 | } | ||
66 | |||
67 | static const struct of_device_id imx53_irq_match[] __initconst = { | ||
68 | { .compatible = "fsl,imx53-tzic", .data = imx53_tzic_add_irq_domain, }, | ||
69 | { .compatible = "fsl,imx53-gpio", .data = imx53_gpio_add_irq_domain, }, | ||
70 | { /* sentinel */ } | ||
71 | }; | ||
72 | |||
73 | static const struct of_device_id imx53_iomuxc_of_match[] __initconst = { | ||
74 | { .compatible = "fsl,imx53-iomuxc-ard", .data = imx53_ard_common_init, }, | ||
75 | { .compatible = "fsl,imx53-iomuxc-evk", .data = imx53_evk_common_init, }, | ||
76 | { .compatible = "fsl,imx53-iomuxc-qsb", .data = imx53_qsb_common_init, }, | ||
77 | { .compatible = "fsl,imx53-iomuxc-smd", .data = imx53_smd_common_init, }, | ||
78 | { /* sentinel */ } | ||
79 | }; | ||
80 | |||
81 | static void __init imx53_dt_init(void) | ||
82 | { | ||
83 | struct device_node *node; | ||
84 | const struct of_device_id *of_id; | ||
85 | void (*func)(void); | ||
86 | |||
87 | of_irq_init(imx53_irq_match); | ||
88 | |||
89 | node = of_find_matching_node(NULL, imx53_iomuxc_of_match); | ||
90 | if (node) { | ||
91 | of_id = of_match_node(imx53_iomuxc_of_match, node); | ||
92 | func = of_id->data; | ||
93 | func(); | ||
94 | of_node_put(node); | ||
95 | } | ||
96 | |||
97 | of_platform_populate(NULL, of_default_bus_match_table, | ||
98 | imx53_auxdata_lookup, NULL); | ||
99 | } | ||
100 | |||
101 | static void __init imx53_timer_init(void) | ||
102 | { | ||
103 | mx53_clocks_init_dt(); | ||
104 | } | ||
105 | |||
106 | static struct sys_timer imx53_timer = { | ||
107 | .init = imx53_timer_init, | ||
108 | }; | ||
109 | |||
110 | static const char *imx53_dt_board_compat[] __initdata = { | ||
111 | "fsl,imx53-ard", | ||
112 | "fsl,imx53-evk", | ||
113 | "fsl,imx53-qsb", | ||
114 | "fsl,imx53-smd", | ||
115 | NULL | ||
116 | }; | ||
117 | |||
118 | DT_MACHINE_START(IMX53_DT, "Freescale i.MX53 (Device Tree Support)") | ||
119 | .map_io = mx53_map_io, | ||
120 | .init_early = imx53_init_early, | ||
121 | .init_irq = mx53_init_irq, | ||
122 | .handle_irq = imx53_handle_irq, | ||
123 | .timer = &imx53_timer, | ||
124 | .init_machine = imx53_dt_init, | ||
125 | .dt_compat = imx53_dt_board_compat, | ||
126 | MACHINE_END | ||
diff --git a/arch/arm/plat-mxc/include/mach/common.h b/arch/arm/plat-mxc/include/mach/common.h index 4e3d97890d69..eb3e7c4e2f1a 100644 --- a/arch/arm/plat-mxc/include/mach/common.h +++ b/arch/arm/plat-mxc/include/mach/common.h | |||
@@ -64,6 +64,7 @@ extern int mx51_clocks_init(unsigned long ckil, unsigned long osc, | |||
64 | unsigned long ckih1, unsigned long ckih2); | 64 | unsigned long ckih1, unsigned long ckih2); |
65 | extern int mx53_clocks_init(unsigned long ckil, unsigned long osc, | 65 | extern int mx53_clocks_init(unsigned long ckil, unsigned long osc, |
66 | unsigned long ckih1, unsigned long ckih2); | 66 | unsigned long ckih1, unsigned long ckih2); |
67 | extern int mx53_clocks_init_dt(void); | ||
67 | extern struct platform_device *mxc_register_gpio(char *name, int id, | 68 | extern struct platform_device *mxc_register_gpio(char *name, int id, |
68 | resource_size_t iobase, resource_size_t iosize, int irq, int irq_high); | 69 | resource_size_t iobase, resource_size_t iosize, int irq, int irq_high); |
69 | extern int mxc_register_device(struct platform_device *pdev, void *data); | 70 | extern int mxc_register_device(struct platform_device *pdev, void *data); |
@@ -72,4 +73,9 @@ extern void mxc_arch_reset_init(void __iomem *); | |||
72 | extern void mx51_efikamx_reset(void); | 73 | extern void mx51_efikamx_reset(void); |
73 | extern int mx53_revision(void); | 74 | extern int mx53_revision(void); |
74 | extern int mx53_display_revision(void); | 75 | extern int mx53_display_revision(void); |
76 | |||
77 | extern void imx53_ard_common_init(void); | ||
78 | extern void imx53_evk_common_init(void); | ||
79 | extern void imx53_qsb_common_init(void); | ||
80 | extern void imx53_smd_common_init(void); | ||
75 | #endif | 81 | #endif |