blob: a30bddfdbdb6e587d455dc3d07beb0d6f4eb1aba [file] [log] [blame]
Shawn Guo73d2b4c2011-10-17 08:42:16 +08001/*
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
Shawn Guo36dffd82013-04-07 10:49:34 +080013#include "skeleton.dtsi"
Shawn Guoe1641532013-02-20 10:32:52 +080014#include "imx53-pinfunc.h"
Lucas Stach564695d2013-11-14 11:18:58 +010015#include <dt-bindings/clock/imx5-clock.h>
Denis Carikli4e05a7a2014-01-06 17:16:07 +010016#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/input/input.h>
Shawn Guo73d2b4c2011-10-17 08:42:16 +080018
19/ {
20 aliases {
Marek Vasut22970072014-02-28 12:58:41 +010021 ethernet0 = &fec;
Shawn Guo5230f8f2012-08-05 14:01:28 +080022 gpio0 = &gpio1;
23 gpio1 = &gpio2;
24 gpio2 = &gpio3;
25 gpio3 = &gpio4;
26 gpio4 = &gpio5;
27 gpio5 = &gpio6;
28 gpio6 = &gpio7;
Philipp Zabelc60dc1d2013-04-09 19:18:47 +020029 i2c0 = &i2c1;
30 i2c1 = &i2c2;
31 i2c2 = &i2c3;
Sascha Hauerc63d06d2014-01-16 13:44:18 +010032 mmc0 = &esdhc1;
33 mmc1 = &esdhc2;
34 mmc2 = &esdhc3;
35 mmc3 = &esdhc4;
Sascha Hauercf4e5772013-06-25 15:51:56 +020036 serial0 = &uart1;
37 serial1 = &uart2;
38 serial2 = &uart3;
39 serial3 = &uart4;
40 serial4 = &uart5;
41 spi0 = &ecspi1;
42 spi1 = &ecspi2;
43 spi2 = &cspi;
Shawn Guo73d2b4c2011-10-17 08:42:16 +080044 };
45
Fabio Estevam070bd7e2013-07-07 10:12:30 -030046 cpus {
47 #address-cells = <1>;
48 #size-cells = <0>;
Lucas Stach791f4162014-09-26 15:41:03 +020049 cpu0: cpu@0 {
Fabio Estevam070bd7e2013-07-07 10:12:30 -030050 device_type = "cpu";
51 compatible = "arm,cortex-a8";
52 reg = <0x0>;
Lucas Stach791f4162014-09-26 15:41:03 +020053 clocks = <&clks IMX5_CLK_ARM>;
54 clock-latency = <61036>;
55 voltage-tolerance = <5>;
56 operating-points = <
57 /* kHz */
58 166666 850000
59 400000 900000
60 800000 1050000
61 1000000 1200000
62 1200000 1300000
63 >;
Fabio Estevam070bd7e2013-07-07 10:12:30 -030064 };
65 };
66
Philipp Zabele05c8c92014-03-05 10:21:00 +010067 display-subsystem {
68 compatible = "fsl,imx-display-subsystem";
69 ports = <&ipu_di0>, <&ipu_di1>;
70 };
71
Shawn Guo73d2b4c2011-10-17 08:42:16 +080072 tzic: tz-interrupt-controller@0fffc000 {
73 compatible = "fsl,imx53-tzic", "fsl,tzic";
74 interrupt-controller;
75 #interrupt-cells = <1>;
76 reg = <0x0fffc000 0x4000>;
77 };
78
79 clocks {
80 #address-cells = <1>;
81 #size-cells = <0>;
82
83 ckil {
84 compatible = "fsl,imx-ckil", "fixed-clock";
Shawn Guo4b2b4042014-04-11 09:56:46 +080085 #clock-cells = <0>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +080086 clock-frequency = <32768>;
87 };
88
89 ckih1 {
90 compatible = "fsl,imx-ckih1", "fixed-clock";
Shawn Guo4b2b4042014-04-11 09:56:46 +080091 #clock-cells = <0>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +080092 clock-frequency = <22579200>;
93 };
94
95 ckih2 {
96 compatible = "fsl,imx-ckih2", "fixed-clock";
Shawn Guo4b2b4042014-04-11 09:56:46 +080097 #clock-cells = <0>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +080098 clock-frequency = <0>;
99 };
100
101 osc {
102 compatible = "fsl,imx-osc", "fixed-clock";
Shawn Guo4b2b4042014-04-11 09:56:46 +0800103 #clock-cells = <0>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800104 clock-frequency = <24000000>;
105 };
106 };
107
108 soc {
109 #address-cells = <1>;
110 #size-cells = <1>;
111 compatible = "simple-bus";
112 interrupt-parent = <&tzic>;
113 ranges;
114
Marek Vasut7affee42013-11-22 12:05:03 +0100115 sata: sata@10000000 {
116 compatible = "fsl,imx53-ahci";
117 reg = <0x10000000 0x1000>;
118 interrupts = <28>;
119 clocks = <&clks IMX5_CLK_SATA_GATE>,
120 <&clks IMX5_CLK_SATA_REF>,
121 <&clks IMX5_CLK_AHB>;
Shawn Guo02578152014-07-08 16:14:47 +0800122 clock-names = "sata", "sata_ref", "ahb";
Marek Vasut7affee42013-11-22 12:05:03 +0100123 status = "disabled";
124 };
125
Sascha Hauerabed9a62012-06-05 13:52:10 +0200126 ipu: ipu@18000000 {
Philipp Zabele05c8c92014-03-05 10:21:00 +0100127 #address-cells = <1>;
128 #size-cells = <0>;
Sascha Hauerabed9a62012-06-05 13:52:10 +0200129 compatible = "fsl,imx53-ipu";
Sascha Hauer6d66da82014-05-06 13:01:34 +0200130 reg = <0x18000000 0x08000000>;
Sascha Hauerabed9a62012-06-05 13:52:10 +0200131 interrupts = <11 10>;
Lucas Stach564695d2013-11-14 11:18:58 +0100132 clocks = <&clks IMX5_CLK_IPU_GATE>,
133 <&clks IMX5_CLK_IPU_DI0_GATE>,
134 <&clks IMX5_CLK_IPU_DI1_GATE>;
Philipp Zabel4438a6a2013-03-27 18:30:36 +0100135 clock-names = "bus", "di0", "di1";
Philipp Zabel8d84c372013-03-28 17:35:23 +0100136 resets = <&src 2>;
Philipp Zabele05c8c92014-03-05 10:21:00 +0100137
138 ipu_di0: port@2 {
139 #address-cells = <1>;
140 #size-cells = <0>;
141 reg = <2>;
142
143 ipu_di0_disp0: endpoint@0 {
144 reg = <0>;
145 };
146
147 ipu_di0_lvds0: endpoint@1 {
148 reg = <1>;
149 remote-endpoint = <&lvds0_in>;
150 };
151 };
152
153 ipu_di1: port@3 {
154 #address-cells = <1>;
155 #size-cells = <0>;
156 reg = <3>;
157
158 ipu_di1_disp1: endpoint@0 {
159 reg = <0>;
160 };
161
162 ipu_di1_lvds1: endpoint@1 {
163 reg = <1>;
164 remote-endpoint = <&lvds1_in>;
165 };
166
167 ipu_di1_tve: endpoint@2 {
168 reg = <2>;
169 remote-endpoint = <&tve_in>;
170 };
171 };
Sascha Hauerabed9a62012-06-05 13:52:10 +0200172 };
173
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800174 aips@50000000 { /* AIPS1 */
175 compatible = "fsl,aips-bus", "simple-bus";
176 #address-cells = <1>;
177 #size-cells = <1>;
178 reg = <0x50000000 0x10000000>;
179 ranges;
180
181 spba@50000000 {
182 compatible = "fsl,spba-bus", "simple-bus";
183 #address-cells = <1>;
184 #size-cells = <1>;
185 reg = <0x50000000 0x40000>;
186 ranges;
187
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100188 esdhc1: esdhc@50004000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800189 compatible = "fsl,imx53-esdhc";
190 reg = <0x50004000 0x4000>;
191 interrupts = <1>;
Lucas Stach564695d2013-11-14 11:18:58 +0100192 clocks = <&clks IMX5_CLK_ESDHC1_IPG_GATE>,
193 <&clks IMX5_CLK_DUMMY>,
194 <&clks IMX5_CLK_ESDHC1_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200195 clock-names = "ipg", "ahb", "per";
Sascha Hauerc104b6a2012-09-25 11:49:33 +0200196 bus-width = <4>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800197 status = "disabled";
198 };
199
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100200 esdhc2: esdhc@50008000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800201 compatible = "fsl,imx53-esdhc";
202 reg = <0x50008000 0x4000>;
203 interrupts = <2>;
Lucas Stach564695d2013-11-14 11:18:58 +0100204 clocks = <&clks IMX5_CLK_ESDHC2_IPG_GATE>,
205 <&clks IMX5_CLK_DUMMY>,
206 <&clks IMX5_CLK_ESDHC2_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200207 clock-names = "ipg", "ahb", "per";
Sascha Hauerc104b6a2012-09-25 11:49:33 +0200208 bus-width = <4>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800209 status = "disabled";
210 };
211
Shawn Guo0c456cf2012-04-02 14:39:26 +0800212 uart3: serial@5000c000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800213 compatible = "fsl,imx53-uart", "fsl,imx21-uart";
214 reg = <0x5000c000 0x4000>;
215 interrupts = <33>;
Lucas Stach564695d2013-11-14 11:18:58 +0100216 clocks = <&clks IMX5_CLK_UART3_IPG_GATE>,
217 <&clks IMX5_CLK_UART3_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200218 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800219 status = "disabled";
220 };
221
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100222 ecspi1: ecspi@50010000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800223 #address-cells = <1>;
224 #size-cells = <0>;
225 compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
226 reg = <0x50010000 0x4000>;
227 interrupts = <36>;
Lucas Stach564695d2013-11-14 11:18:58 +0100228 clocks = <&clks IMX5_CLK_ECSPI1_IPG_GATE>,
229 <&clks IMX5_CLK_ECSPI1_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200230 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800231 status = "disabled";
232 };
233
Shawn Guoffc505c2012-05-11 13:12:01 +0800234 ssi2: ssi@50014000 {
Alexander Shiyan6ff7f512014-08-19 20:00:09 +0400235 #sound-dai-cells = <0>;
Markus Pargmann28f93d02014-01-17 10:07:42 +0100236 compatible = "fsl,imx53-ssi",
237 "fsl,imx51-ssi",
238 "fsl,imx21-ssi";
Shawn Guoffc505c2012-05-11 13:12:01 +0800239 reg = <0x50014000 0x4000>;
240 interrupts = <30>;
Fabio Estevam685570a2014-09-18 20:23:48 -0300241 clocks = <&clks IMX5_CLK_SSI2_IPG_GATE>,
242 <&clks IMX5_CLK_SSI2_ROOT_GATE>;
243 clock-names = "ipg", "baud";
Shawn Guo5da826a2013-07-17 13:50:54 +0800244 dmas = <&sdma 24 1 0>,
245 <&sdma 25 1 0>;
246 dma-names = "rx", "tx";
Shawn Guoffc505c2012-05-11 13:12:01 +0800247 fsl,fifo-depth = <15>;
Shawn Guoffc505c2012-05-11 13:12:01 +0800248 status = "disabled";
249 };
250
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100251 esdhc3: esdhc@50020000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800252 compatible = "fsl,imx53-esdhc";
253 reg = <0x50020000 0x4000>;
254 interrupts = <3>;
Lucas Stach564695d2013-11-14 11:18:58 +0100255 clocks = <&clks IMX5_CLK_ESDHC3_IPG_GATE>,
256 <&clks IMX5_CLK_DUMMY>,
257 <&clks IMX5_CLK_ESDHC3_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200258 clock-names = "ipg", "ahb", "per";
Sascha Hauerc104b6a2012-09-25 11:49:33 +0200259 bus-width = <4>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800260 status = "disabled";
261 };
262
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100263 esdhc4: esdhc@50024000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800264 compatible = "fsl,imx53-esdhc";
265 reg = <0x50024000 0x4000>;
266 interrupts = <4>;
Lucas Stach564695d2013-11-14 11:18:58 +0100267 clocks = <&clks IMX5_CLK_ESDHC4_IPG_GATE>,
268 <&clks IMX5_CLK_DUMMY>,
269 <&clks IMX5_CLK_ESDHC4_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200270 clock-names = "ipg", "ahb", "per";
Sascha Hauerc104b6a2012-09-25 11:49:33 +0200271 bus-width = <4>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800272 status = "disabled";
273 };
274 };
275
Steffen Trumtrarac082812014-06-25 13:01:30 +0200276 aipstz1: bridge@53f00000 {
277 compatible = "fsl,imx53-aipstz";
278 reg = <0x53f00000 0x60>;
279 };
280
Michael Grzeschika79025c2013-04-11 12:13:16 +0200281 usbphy0: usbphy@0 {
282 compatible = "usb-nop-xceiv";
Lucas Stach564695d2013-11-14 11:18:58 +0100283 clocks = <&clks IMX5_CLK_USB_PHY1_GATE>;
Michael Grzeschika79025c2013-04-11 12:13:16 +0200284 clock-names = "main_clk";
285 status = "okay";
286 };
287
288 usbphy1: usbphy@1 {
289 compatible = "usb-nop-xceiv";
Lucas Stach564695d2013-11-14 11:18:58 +0100290 clocks = <&clks IMX5_CLK_USB_PHY2_GATE>;
Michael Grzeschika79025c2013-04-11 12:13:16 +0200291 clock-names = "main_clk";
292 status = "okay";
293 };
294
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100295 usbotg: usb@53f80000 {
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200296 compatible = "fsl,imx53-usb", "fsl,imx27-usb";
297 reg = <0x53f80000 0x0200>;
298 interrupts = <18>;
Lucas Stach564695d2013-11-14 11:18:58 +0100299 clocks = <&clks IMX5_CLK_USBOH3_GATE>;
Michael Grzeschika5735022013-04-11 12:13:14 +0200300 fsl,usbmisc = <&usbmisc 0>;
Michael Grzeschika79025c2013-04-11 12:13:16 +0200301 fsl,usbphy = <&usbphy0>;
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200302 status = "disabled";
303 };
304
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100305 usbh1: usb@53f80200 {
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200306 compatible = "fsl,imx53-usb", "fsl,imx27-usb";
307 reg = <0x53f80200 0x0200>;
308 interrupts = <14>;
Lucas Stach564695d2013-11-14 11:18:58 +0100309 clocks = <&clks IMX5_CLK_USBOH3_GATE>;
Michael Grzeschika5735022013-04-11 12:13:14 +0200310 fsl,usbmisc = <&usbmisc 1>;
Michael Grzeschika79025c2013-04-11 12:13:16 +0200311 fsl,usbphy = <&usbphy1>;
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200312 status = "disabled";
313 };
314
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100315 usbh2: usb@53f80400 {
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200316 compatible = "fsl,imx53-usb", "fsl,imx27-usb";
317 reg = <0x53f80400 0x0200>;
318 interrupts = <16>;
Lucas Stach564695d2013-11-14 11:18:58 +0100319 clocks = <&clks IMX5_CLK_USBOH3_GATE>;
Michael Grzeschika5735022013-04-11 12:13:14 +0200320 fsl,usbmisc = <&usbmisc 2>;
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200321 status = "disabled";
322 };
323
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100324 usbh3: usb@53f80600 {
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200325 compatible = "fsl,imx53-usb", "fsl,imx27-usb";
326 reg = <0x53f80600 0x0200>;
327 interrupts = <17>;
Lucas Stach564695d2013-11-14 11:18:58 +0100328 clocks = <&clks IMX5_CLK_USBOH3_GATE>;
Michael Grzeschika5735022013-04-11 12:13:14 +0200329 fsl,usbmisc = <&usbmisc 3>;
Michael Grzeschik212d0b82012-08-23 12:35:57 +0200330 status = "disabled";
331 };
332
Michael Grzeschika5735022013-04-11 12:13:14 +0200333 usbmisc: usbmisc@53f80800 {
334 #index-cells = <1>;
335 compatible = "fsl,imx53-usbmisc";
336 reg = <0x53f80800 0x200>;
Lucas Stach564695d2013-11-14 11:18:58 +0100337 clocks = <&clks IMX5_CLK_USBOH3_GATE>;
Michael Grzeschika5735022013-04-11 12:13:14 +0200338 };
339
Richard Zhao4d191862011-12-14 09:26:44 +0800340 gpio1: gpio@53f84000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200341 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800342 reg = <0x53f84000 0x4000>;
343 interrupts = <50 51>;
344 gpio-controller;
345 #gpio-cells = <2>;
346 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800347 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800348 };
349
Richard Zhao4d191862011-12-14 09:26:44 +0800350 gpio2: gpio@53f88000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200351 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800352 reg = <0x53f88000 0x4000>;
353 interrupts = <52 53>;
354 gpio-controller;
355 #gpio-cells = <2>;
356 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800357 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800358 };
359
Richard Zhao4d191862011-12-14 09:26:44 +0800360 gpio3: gpio@53f8c000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200361 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800362 reg = <0x53f8c000 0x4000>;
363 interrupts = <54 55>;
364 gpio-controller;
365 #gpio-cells = <2>;
366 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800367 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800368 };
369
Richard Zhao4d191862011-12-14 09:26:44 +0800370 gpio4: gpio@53f90000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200371 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800372 reg = <0x53f90000 0x4000>;
373 interrupts = <56 57>;
374 gpio-controller;
375 #gpio-cells = <2>;
376 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800377 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800378 };
379
Rostislav Lisovy675e4d02013-10-22 19:07:21 +0200380 kpp: kpp@53f94000 {
381 compatible = "fsl,imx53-kpp", "fsl,imx21-kpp";
382 reg = <0x53f94000 0x4000>;
383 interrupts = <60>;
Lucas Stach564695d2013-11-14 11:18:58 +0100384 clocks = <&clks IMX5_CLK_DUMMY>;
Rostislav Lisovy675e4d02013-10-22 19:07:21 +0200385 status = "disabled";
386 };
387
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100388 wdog1: wdog@53f98000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800389 compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
390 reg = <0x53f98000 0x4000>;
391 interrupts = <58>;
Lucas Stach564695d2013-11-14 11:18:58 +0100392 clocks = <&clks IMX5_CLK_DUMMY>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800393 };
394
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100395 wdog2: wdog@53f9c000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800396 compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
397 reg = <0x53f9c000 0x4000>;
398 interrupts = <59>;
Lucas Stach564695d2013-11-14 11:18:58 +0100399 clocks = <&clks IMX5_CLK_DUMMY>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800400 status = "disabled";
401 };
402
Sascha Hauercc8aae92013-03-14 13:09:00 +0100403 gpt: timer@53fa0000 {
404 compatible = "fsl,imx53-gpt", "fsl,imx31-gpt";
405 reg = <0x53fa0000 0x4000>;
406 interrupts = <39>;
Lucas Stach564695d2013-11-14 11:18:58 +0100407 clocks = <&clks IMX5_CLK_GPT_IPG_GATE>,
408 <&clks IMX5_CLK_GPT_HF_GATE>;
Sascha Hauercc8aae92013-03-14 13:09:00 +0100409 clock-names = "ipg", "per";
410 };
411
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100412 iomuxc: iomuxc@53fa8000 {
Shawn Guo5be03a72012-08-12 20:02:10 +0800413 compatible = "fsl,imx53-iomuxc";
414 reg = <0x53fa8000 0x4000>;
Shawn Guo5be03a72012-08-12 20:02:10 +0800415 };
416
Philipp Zabel5af9f142013-03-27 18:30:43 +0100417 gpr: iomuxc-gpr@53fa8000 {
418 compatible = "fsl,imx53-iomuxc-gpr", "syscon";
419 reg = <0x53fa8000 0xc>;
420 };
421
Philipp Zabel420714a2013-03-27 18:30:44 +0100422 ldb: ldb@53fa8008 {
423 #address-cells = <1>;
424 #size-cells = <0>;
425 compatible = "fsl,imx53-ldb";
426 reg = <0x53fa8008 0x4>;
427 gpr = <&gpr>;
Lucas Stach564695d2013-11-14 11:18:58 +0100428 clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
429 <&clks IMX5_CLK_LDB_DI1_SEL>,
430 <&clks IMX5_CLK_IPU_DI0_SEL>,
431 <&clks IMX5_CLK_IPU_DI1_SEL>,
432 <&clks IMX5_CLK_LDB_DI0_GATE>,
433 <&clks IMX5_CLK_LDB_DI1_GATE>;
Philipp Zabel420714a2013-03-27 18:30:44 +0100434 clock-names = "di0_pll", "di1_pll",
435 "di0_sel", "di1_sel",
436 "di0", "di1";
437 status = "disabled";
438
439 lvds-channel@0 {
Markus Niebel1b134c92014-09-11 15:56:56 +0800440 #address-cells = <1>;
441 #size-cells = <0>;
Philipp Zabel420714a2013-03-27 18:30:44 +0100442 reg = <0>;
Philipp Zabel420714a2013-03-27 18:30:44 +0100443 status = "disabled";
Philipp Zabele05c8c92014-03-05 10:21:00 +0100444
Markus Niebel1b134c92014-09-11 15:56:56 +0800445 port@0 {
446 reg = <0>;
447
Philipp Zabele05c8c92014-03-05 10:21:00 +0100448 lvds0_in: endpoint {
449 remote-endpoint = <&ipu_di0_lvds0>;
450 };
451 };
Philipp Zabel420714a2013-03-27 18:30:44 +0100452 };
453
454 lvds-channel@1 {
Markus Niebel1b134c92014-09-11 15:56:56 +0800455 #address-cells = <1>;
456 #size-cells = <0>;
Philipp Zabel420714a2013-03-27 18:30:44 +0100457 reg = <1>;
Philipp Zabel420714a2013-03-27 18:30:44 +0100458 status = "disabled";
Philipp Zabele05c8c92014-03-05 10:21:00 +0100459
Markus Niebel1b134c92014-09-11 15:56:56 +0800460 port@1 {
461 reg = <1>;
462
Philipp Zabele05c8c92014-03-05 10:21:00 +0100463 lvds1_in: endpoint {
Lothar Waßmannfa1746a2014-04-10 10:03:40 +0200464 remote-endpoint = <&ipu_di1_lvds1>;
Philipp Zabele05c8c92014-03-05 10:21:00 +0100465 };
466 };
Philipp Zabel420714a2013-03-27 18:30:44 +0100467 };
468 };
469
Sascha Hauer9ae90af2012-07-04 12:30:37 +0200470 pwm1: pwm@53fb4000 {
471 #pwm-cells = <2>;
472 compatible = "fsl,imx53-pwm", "fsl,imx27-pwm";
473 reg = <0x53fb4000 0x4000>;
Lucas Stach564695d2013-11-14 11:18:58 +0100474 clocks = <&clks IMX5_CLK_PWM1_IPG_GATE>,
475 <&clks IMX5_CLK_PWM1_HF_GATE>;
Sascha Hauer9ae90af2012-07-04 12:30:37 +0200476 clock-names = "ipg", "per";
477 interrupts = <61>;
478 };
479
480 pwm2: pwm@53fb8000 {
481 #pwm-cells = <2>;
482 compatible = "fsl,imx53-pwm", "fsl,imx27-pwm";
483 reg = <0x53fb8000 0x4000>;
Lucas Stach564695d2013-11-14 11:18:58 +0100484 clocks = <&clks IMX5_CLK_PWM2_IPG_GATE>,
485 <&clks IMX5_CLK_PWM2_HF_GATE>;
Sascha Hauer9ae90af2012-07-04 12:30:37 +0200486 clock-names = "ipg", "per";
487 interrupts = <94>;
488 };
489
Shawn Guo0c456cf2012-04-02 14:39:26 +0800490 uart1: serial@53fbc000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800491 compatible = "fsl,imx53-uart", "fsl,imx21-uart";
492 reg = <0x53fbc000 0x4000>;
493 interrupts = <31>;
Lucas Stach564695d2013-11-14 11:18:58 +0100494 clocks = <&clks IMX5_CLK_UART1_IPG_GATE>,
495 <&clks IMX5_CLK_UART1_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200496 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800497 status = "disabled";
498 };
499
Shawn Guo0c456cf2012-04-02 14:39:26 +0800500 uart2: serial@53fc0000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800501 compatible = "fsl,imx53-uart", "fsl,imx21-uart";
502 reg = <0x53fc0000 0x4000>;
503 interrupts = <32>;
Lucas Stach564695d2013-11-14 11:18:58 +0100504 clocks = <&clks IMX5_CLK_UART2_IPG_GATE>,
505 <&clks IMX5_CLK_UART2_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200506 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800507 status = "disabled";
508 };
509
Steffen Trumtrara9d1f922012-07-18 11:42:43 +0200510 can1: can@53fc8000 {
511 compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
512 reg = <0x53fc8000 0x4000>;
513 interrupts = <82>;
Lucas Stach564695d2013-11-14 11:18:58 +0100514 clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>,
515 <&clks IMX5_CLK_CAN1_SERIAL_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200516 clock-names = "ipg", "per";
Steffen Trumtrara9d1f922012-07-18 11:42:43 +0200517 status = "disabled";
518 };
519
520 can2: can@53fcc000 {
521 compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
522 reg = <0x53fcc000 0x4000>;
523 interrupts = <83>;
Lucas Stach564695d2013-11-14 11:18:58 +0100524 clocks = <&clks IMX5_CLK_CAN2_IPG_GATE>,
525 <&clks IMX5_CLK_CAN2_SERIAL_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200526 clock-names = "ipg", "per";
Steffen Trumtrara9d1f922012-07-18 11:42:43 +0200527 status = "disabled";
528 };
529
Philipp Zabel8d84c372013-03-28 17:35:23 +0100530 src: src@53fd0000 {
531 compatible = "fsl,imx53-src", "fsl,imx51-src";
532 reg = <0x53fd0000 0x4000>;
533 #reset-cells = <1>;
534 };
535
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200536 clks: ccm@53fd4000{
537 compatible = "fsl,imx53-ccm";
538 reg = <0x53fd4000 0x4000>;
539 interrupts = <0 71 0x04 0 72 0x04>;
540 #clock-cells = <1>;
541 };
542
Richard Zhao4d191862011-12-14 09:26:44 +0800543 gpio5: gpio@53fdc000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200544 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800545 reg = <0x53fdc000 0x4000>;
546 interrupts = <103 104>;
547 gpio-controller;
548 #gpio-cells = <2>;
549 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800550 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800551 };
552
Richard Zhao4d191862011-12-14 09:26:44 +0800553 gpio6: gpio@53fe0000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200554 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800555 reg = <0x53fe0000 0x4000>;
556 interrupts = <105 106>;
557 gpio-controller;
558 #gpio-cells = <2>;
559 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800560 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800561 };
562
Richard Zhao4d191862011-12-14 09:26:44 +0800563 gpio7: gpio@53fe4000 {
Benoît Thébaudeauaeb27742012-06-22 21:04:06 +0200564 compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800565 reg = <0x53fe4000 0x4000>;
566 interrupts = <107 108>;
567 gpio-controller;
568 #gpio-cells = <2>;
569 interrupt-controller;
Shawn Guo88cde8b2012-07-06 20:03:37 +0800570 #interrupt-cells = <2>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800571 };
572
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100573 i2c3: i2c@53fec000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800574 #address-cells = <1>;
575 #size-cells = <0>;
Shawn Guo5bdfba22012-09-14 15:19:00 +0800576 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800577 reg = <0x53fec000 0x4000>;
578 interrupts = <64>;
Lucas Stach564695d2013-11-14 11:18:58 +0100579 clocks = <&clks IMX5_CLK_I2C3_GATE>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800580 status = "disabled";
581 };
582
Shawn Guo0c456cf2012-04-02 14:39:26 +0800583 uart4: serial@53ff0000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800584 compatible = "fsl,imx53-uart", "fsl,imx21-uart";
585 reg = <0x53ff0000 0x4000>;
586 interrupts = <13>;
Lucas Stach564695d2013-11-14 11:18:58 +0100587 clocks = <&clks IMX5_CLK_UART4_IPG_GATE>,
588 <&clks IMX5_CLK_UART4_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200589 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800590 status = "disabled";
591 };
592 };
593
594 aips@60000000 { /* AIPS2 */
595 compatible = "fsl,aips-bus", "simple-bus";
596 #address-cells = <1>;
597 #size-cells = <1>;
598 reg = <0x60000000 0x10000000>;
599 ranges;
600
Steffen Trumtrarac082812014-06-25 13:01:30 +0200601 aipstz2: bridge@63f00000 {
602 compatible = "fsl,imx53-aipstz";
603 reg = <0x63f00000 0x60>;
604 };
605
Sascha Hauer4f3b2a42013-06-25 15:51:52 +0200606 iim: iim@63f98000 {
607 compatible = "fsl,imx53-iim", "fsl,imx27-iim";
608 reg = <0x63f98000 0x4000>;
609 interrupts = <69>;
Lucas Stach564695d2013-11-14 11:18:58 +0100610 clocks = <&clks IMX5_CLK_IIM_GATE>;
Sascha Hauer4f3b2a42013-06-25 15:51:52 +0200611 };
612
Shawn Guo0c456cf2012-04-02 14:39:26 +0800613 uart5: serial@63f90000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800614 compatible = "fsl,imx53-uart", "fsl,imx21-uart";
615 reg = <0x63f90000 0x4000>;
616 interrupts = <86>;
Lucas Stach564695d2013-11-14 11:18:58 +0100617 clocks = <&clks IMX5_CLK_UART5_IPG_GATE>,
618 <&clks IMX5_CLK_UART5_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200619 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800620 status = "disabled";
621 };
622
Martin Fuzzeya82b7b92013-01-29 16:46:19 +0100623 owire: owire@63fa4000 {
624 compatible = "fsl,imx53-owire", "fsl,imx21-owire";
625 reg = <0x63fa4000 0x4000>;
Lucas Stach564695d2013-11-14 11:18:58 +0100626 clocks = <&clks IMX5_CLK_OWIRE_GATE>;
Martin Fuzzeya82b7b92013-01-29 16:46:19 +0100627 status = "disabled";
628 };
629
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100630 ecspi2: ecspi@63fac000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800631 #address-cells = <1>;
632 #size-cells = <0>;
633 compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
634 reg = <0x63fac000 0x4000>;
635 interrupts = <37>;
Lucas Stach564695d2013-11-14 11:18:58 +0100636 clocks = <&clks IMX5_CLK_ECSPI2_IPG_GATE>,
637 <&clks IMX5_CLK_ECSPI2_PER_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200638 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800639 status = "disabled";
640 };
641
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100642 sdma: sdma@63fb0000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800643 compatible = "fsl,imx53-sdma", "fsl,imx35-sdma";
644 reg = <0x63fb0000 0x4000>;
645 interrupts = <6>;
Lucas Stach564695d2013-11-14 11:18:58 +0100646 clocks = <&clks IMX5_CLK_SDMA_GATE>,
647 <&clks IMX5_CLK_SDMA_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200648 clock-names = "ipg", "ahb";
Huang Shijiefb72bb22013-07-02 10:15:29 +0800649 #dma-cells = <3>;
Fabio Estevam7e4f0362012-08-08 11:28:07 -0300650 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800651 };
652
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100653 cspi: cspi@63fc0000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800654 #address-cells = <1>;
655 #size-cells = <0>;
656 compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
657 reg = <0x63fc0000 0x4000>;
658 interrupts = <38>;
Lucas Stach564695d2013-11-14 11:18:58 +0100659 clocks = <&clks IMX5_CLK_CSPI_IPG_GATE>,
660 <&clks IMX5_CLK_CSPI_IPG_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200661 clock-names = "ipg", "per";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800662 status = "disabled";
663 };
664
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100665 i2c2: i2c@63fc4000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800666 #address-cells = <1>;
667 #size-cells = <0>;
Shawn Guo5bdfba22012-09-14 15:19:00 +0800668 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800669 reg = <0x63fc4000 0x4000>;
670 interrupts = <63>;
Lucas Stach564695d2013-11-14 11:18:58 +0100671 clocks = <&clks IMX5_CLK_I2C2_GATE>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800672 status = "disabled";
673 };
674
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100675 i2c1: i2c@63fc8000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800676 #address-cells = <1>;
677 #size-cells = <0>;
Shawn Guo5bdfba22012-09-14 15:19:00 +0800678 compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800679 reg = <0x63fc8000 0x4000>;
680 interrupts = <62>;
Lucas Stach564695d2013-11-14 11:18:58 +0100681 clocks = <&clks IMX5_CLK_I2C1_GATE>;
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800682 status = "disabled";
683 };
684
Shawn Guoffc505c2012-05-11 13:12:01 +0800685 ssi1: ssi@63fcc000 {
Alexander Shiyan6ff7f512014-08-19 20:00:09 +0400686 #sound-dai-cells = <0>;
Markus Pargmann28f93d02014-01-17 10:07:42 +0100687 compatible = "fsl,imx53-ssi", "fsl,imx51-ssi",
688 "fsl,imx21-ssi";
Shawn Guoffc505c2012-05-11 13:12:01 +0800689 reg = <0x63fcc000 0x4000>;
690 interrupts = <29>;
Fabio Estevam685570a2014-09-18 20:23:48 -0300691 clocks = <&clks IMX5_CLK_SSI1_IPG_GATE>,
692 <&clks IMX5_CLK_SSI1_ROOT_GATE>;
693 clock-names = "ipg", "baud";
Shawn Guo5da826a2013-07-17 13:50:54 +0800694 dmas = <&sdma 28 0 0>,
695 <&sdma 29 0 0>;
696 dma-names = "rx", "tx";
Shawn Guoffc505c2012-05-11 13:12:01 +0800697 fsl,fifo-depth = <15>;
Shawn Guoffc505c2012-05-11 13:12:01 +0800698 status = "disabled";
699 };
700
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100701 audmux: audmux@63fd0000 {
Shawn Guoffc505c2012-05-11 13:12:01 +0800702 compatible = "fsl,imx53-audmux", "fsl,imx31-audmux";
703 reg = <0x63fd0000 0x4000>;
704 status = "disabled";
705 };
706
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100707 nfc: nand@63fdb000 {
Sascha Hauer75453a02012-06-06 12:33:16 +0200708 compatible = "fsl,imx53-nand";
709 reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>;
710 interrupts = <8>;
Lucas Stach564695d2013-11-14 11:18:58 +0100711 clocks = <&clks IMX5_CLK_NFC_GATE>;
Sascha Hauer75453a02012-06-06 12:33:16 +0200712 status = "disabled";
713 };
714
Shawn Guoffc505c2012-05-11 13:12:01 +0800715 ssi3: ssi@63fe8000 {
Alexander Shiyan6ff7f512014-08-19 20:00:09 +0400716 #sound-dai-cells = <0>;
Markus Pargmann28f93d02014-01-17 10:07:42 +0100717 compatible = "fsl,imx53-ssi", "fsl,imx51-ssi",
718 "fsl,imx21-ssi";
Shawn Guoffc505c2012-05-11 13:12:01 +0800719 reg = <0x63fe8000 0x4000>;
720 interrupts = <96>;
Fabio Estevam685570a2014-09-18 20:23:48 -0300721 clocks = <&clks IMX5_CLK_SSI3_IPG_GATE>,
722 <&clks IMX5_CLK_SSI3_ROOT_GATE>;
723 clock-names = "ipg", "baud";
Shawn Guo5da826a2013-07-17 13:50:54 +0800724 dmas = <&sdma 46 0 0>,
725 <&sdma 47 0 0>;
726 dma-names = "rx", "tx";
Shawn Guoffc505c2012-05-11 13:12:01 +0800727 fsl,fifo-depth = <15>;
Shawn Guoffc505c2012-05-11 13:12:01 +0800728 status = "disabled";
729 };
730
Sascha Hauer7b7d6722012-11-15 09:31:52 +0100731 fec: ethernet@63fec000 {
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800732 compatible = "fsl,imx53-fec", "fsl,imx25-fec";
733 reg = <0x63fec000 0x4000>;
734 interrupts = <87>;
Lucas Stach564695d2013-11-14 11:18:58 +0100735 clocks = <&clks IMX5_CLK_FEC_GATE>,
736 <&clks IMX5_CLK_FEC_GATE>,
737 <&clks IMX5_CLK_FEC_GATE>;
Fabio Estevamf40f38d2012-11-21 13:43:05 -0200738 clock-names = "ipg", "ahb", "ptp";
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800739 status = "disabled";
740 };
Philipp Zabel19194c22013-06-04 12:12:22 +0200741
742 tve: tve@63ff0000 {
743 compatible = "fsl,imx53-tve";
744 reg = <0x63ff0000 0x1000>;
745 interrupts = <92>;
Lucas Stach564695d2013-11-14 11:18:58 +0100746 clocks = <&clks IMX5_CLK_TVE_GATE>,
747 <&clks IMX5_CLK_IPU_DI1_SEL>;
Philipp Zabel19194c22013-06-04 12:12:22 +0200748 clock-names = "tve", "di_sel";
Philipp Zabel19194c22013-06-04 12:12:22 +0200749 status = "disabled";
Philipp Zabele05c8c92014-03-05 10:21:00 +0100750
751 port {
752 tve_in: endpoint {
753 remote-endpoint = <&ipu_di1_tve>;
754 };
755 };
Philipp Zabel19194c22013-06-04 12:12:22 +0200756 };
Fabio Estevamfbf970f2013-06-28 19:49:18 -0300757
758 vpu: vpu@63ff4000 {
759 compatible = "fsl,imx53-vpu";
760 reg = <0x63ff4000 0x1000>;
761 interrupts = <9>;
Lothar Waßmannfa97d2f2014-08-13 15:47:47 +0200762 clocks = <&clks IMX5_CLK_VPU_REFERENCE_GATE>,
Lucas Stach564695d2013-11-14 11:18:58 +0100763 <&clks IMX5_CLK_VPU_GATE>;
Fabio Estevamfbf970f2013-06-28 19:49:18 -0300764 clock-names = "per", "ahb";
Philipp Zabelb1e2e542014-03-19 15:49:24 +0100765 resets = <&src 1>;
Fabio Estevamfbf970f2013-06-28 19:49:18 -0300766 iram = <&ocram>;
Fabio Estevamfbf970f2013-06-28 19:49:18 -0300767 };
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800768 };
Philipp Zabel481fbe12013-07-01 11:06:09 +0200769
770 ocram: sram@f8000000 {
771 compatible = "mmio-sram";
772 reg = <0xf8000000 0x20000>;
Lucas Stach564695d2013-11-14 11:18:58 +0100773 clocks = <&clks IMX5_CLK_OCRAM>;
Philipp Zabel481fbe12013-07-01 11:06:09 +0200774 };
Steffen Trumtrar49bdf582014-08-22 14:02:27 +0200775
776 pmu {
777 compatible = "arm,cortex-a8-pmu";
778 interrupts = <77>;
779 };
Shawn Guo73d2b4c2011-10-17 08:42:16 +0800780 };
781};