aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-imx/Kconfig5
-rw-r--r--arch/arm/mach-imx/devices-imx21.h4
-rw-r--r--arch/arm/mach-imx/devices-imx27.h4
-rw-r--r--arch/arm/mach-imx/devices.c35
-rw-r--r--arch/arm/mach-imx/devices.h2
-rw-r--r--arch/arm/mach-imx/eukrea_mbimx27-baseboard.c6
-rw-r--r--arch/arm/mach-imx/mach-pca100.c5
-rw-r--r--arch/arm/mach-mx25/Kconfig4
-rw-r--r--arch/arm/mach-mx25/devices-imx25.h4
-rw-r--r--arch/arm/mach-mx25/devices.c38
-rw-r--r--arch/arm/mach-mx25/devices.h2
-rw-r--r--arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c6
-rw-r--r--arch/arm/mach-mx3/Kconfig6
-rw-r--r--arch/arm/mach-mx3/devices-imx31.h4
-rw-r--r--arch/arm/mach-mx3/devices-imx35.h4
-rw-r--r--arch/arm/mach-mx3/devices.c42
-rw-r--r--arch/arm/mach-mx3/devices.h3
-rw-r--r--arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c6
-rw-r--r--arch/arm/mach-mx3/mach-mx31ads.c2
-rw-r--r--arch/arm/mach-mx3/mach-pcm043.c5
-rw-r--r--arch/arm/plat-mxc/devices/Kconfig3
-rw-r--r--arch/arm/plat-mxc/devices/Makefile1
-rw-r--r--arch/arm/plat-mxc/devices/platform-imx-ssi.c98
-rw-r--r--arch/arm/plat-mxc/include/mach/devices-common.h15
-rw-r--r--arch/arm/plat-mxc/include/mach/mx25.h9
-rw-r--r--arch/arm/plat-mxc/include/mach/mx31.h9
-rw-r--r--arch/arm/plat-mxc/include/mach/mx35.h9
27 files changed, 187 insertions, 144 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 19ed16d0017e..9b45f1f523fa 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -146,8 +146,8 @@ choice
146 default MACH_EUKREA_MBIMX27_BASEBOARD 146 default MACH_EUKREA_MBIMX27_BASEBOARD
147 147
148config MACH_EUKREA_MBIMX27_BASEBOARD 148config MACH_EUKREA_MBIMX27_BASEBOARD
149 prompt "Eukrea MBIMX27 development board" 149 bool "Eukrea MBIMX27 development board"
150 bool 150 select IMX_HAVE_PLATFORM_IMX_SSI
151 select IMX_HAVE_PLATFORM_IMX_UART 151 select IMX_HAVE_PLATFORM_IMX_UART
152 select IMX_HAVE_PLATFORM_SPI_IMX 152 select IMX_HAVE_PLATFORM_SPI_IMX
153 help 153 help
@@ -182,6 +182,7 @@ config MACH_IMX27LITE
182config MACH_PCA100 182config MACH_PCA100
183 bool "Phytec phyCARD-s (pca100)" 183 bool "Phytec phyCARD-s (pca100)"
184 select IMX_HAVE_PLATFORM_IMX_I2C 184 select IMX_HAVE_PLATFORM_IMX_I2C
185 select IMX_HAVE_PLATFORM_IMX_SSI
185 select IMX_HAVE_PLATFORM_IMX_UART 186 select IMX_HAVE_PLATFORM_IMX_UART
186 select IMX_HAVE_PLATFORM_MXC_NAND 187 select IMX_HAVE_PLATFORM_MXC_NAND
187 select IMX_HAVE_PLATFORM_SPI_IMX 188 select IMX_HAVE_PLATFORM_SPI_IMX
diff --git a/arch/arm/mach-imx/devices-imx21.h b/arch/arm/mach-imx/devices-imx21.h
index f75b5e4d0ed5..24868c36d824 100644
--- a/arch/arm/mach-imx/devices-imx21.h
+++ b/arch/arm/mach-imx/devices-imx21.h
@@ -12,6 +12,10 @@
12#define imx21_add_i2c_imx(pdata) \ 12#define imx21_add_i2c_imx(pdata) \
13 imx_add_imx_i2c(0, MX2x_I2C_BASE_ADDR, SZ_4K, MX2x_INT_I2C, pdata) 13 imx_add_imx_i2c(0, MX2x_I2C_BASE_ADDR, SZ_4K, MX2x_INT_I2C, pdata)
14 14
15extern const struct imx_imx_ssi_data imx21_imx_ssi_data[] __initconst;
16#define imx21_add_imx_ssi(id, pdata) \
17 imx_add_imx_ssi(&imx21_imx_ssi_data[id], pdata)
18
15extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst; 19extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst;
16#define imx21_add_imx_uart(id, pdata) \ 20#define imx21_add_imx_uart(id, pdata) \
17 imx_add_imx_uart_1irq(&imx21_imx_uart_data[id], pdata) 21 imx_add_imx_uart_1irq(&imx21_imx_uart_data[id], pdata)
diff --git a/arch/arm/mach-imx/devices-imx27.h b/arch/arm/mach-imx/devices-imx27.h
index bf9dab3a0858..2972e6912af4 100644
--- a/arch/arm/mach-imx/devices-imx27.h
+++ b/arch/arm/mach-imx/devices-imx27.h
@@ -14,6 +14,10 @@
14#define imx27_add_i2c_imx1(pdata) \ 14#define imx27_add_i2c_imx1(pdata) \
15 imx_add_imx_i2c(1, MX27_I2C2_BASE_ADDR, SZ_4K, MX27_INT_I2C2, pdata) 15 imx_add_imx_i2c(1, MX27_I2C2_BASE_ADDR, SZ_4K, MX27_INT_I2C2, pdata)
16 16
17extern const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst;
18#define imx27_add_imx_ssi(id, pdata) \
19 imx_add_imx_ssi(&imx27_imx_ssi_data[id], pdata)
20
17extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst; 21extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst;
18#define imx27_add_imx_uart(id, pdata) \ 22#define imx27_add_imx_uart(id, pdata) \
19 imx_add_imx_uart_1irq(&imx27_imx_uart_data[id], pdata) 23 imx_add_imx_uart_1irq(&imx27_imx_uart_data[id], pdata)
diff --git a/arch/arm/mach-imx/devices.c b/arch/arm/mach-imx/devices.c
index 9c271a752b84..423fa05dabd0 100644
--- a/arch/arm/mach-imx/devices.c
+++ b/arch/arm/mach-imx/devices.c
@@ -480,41 +480,6 @@ struct platform_device mxc_usbh2 = {
480}; 480};
481#endif 481#endif
482 482
483#define DEFINE_IMX_SSI_DMARES(_name, ssin, suffix) \
484 { \
485 .name = _name, \
486 .start = MX2x_DMA_REQ_SSI ## ssin ## _ ## suffix, \
487 .end = MX2x_DMA_REQ_SSI ## ssin ## _ ## suffix, \
488 .flags = IORESOURCE_DMA, \
489 }
490
491#define DEFINE_IMX_SSI_DEVICE(n, ssin, baseaddr, irq) \
492 static struct resource imx_ssi_resources ## n[] = { \
493 { \
494 .start = MX2x_SSI ## ssin ## _BASE_ADDR, \
495 .end = MX2x_SSI ## ssin ## _BASE_ADDR + 0x6f, \
496 .flags = IORESOURCE_MEM, \
497 }, { \
498 .start = MX2x_INT_SSI1, \
499 .end = MX2x_INT_SSI1, \
500 .flags = IORESOURCE_IRQ, \
501 }, \
502 DEFINE_IMX_SSI_DMARES("tx0", ssin, TX0), \
503 DEFINE_IMX_SSI_DMARES("rx0", ssin, RX0), \
504 DEFINE_IMX_SSI_DMARES("tx1", ssin, TX1), \
505 DEFINE_IMX_SSI_DMARES("rx1", ssin, RX1), \
506 }; \
507 \
508 struct platform_device imx_ssi_device ## n = { \
509 .name = "imx-ssi", \
510 .id = n, \
511 .num_resources = ARRAY_SIZE(imx_ssi_resources ## n), \
512 .resource = imx_ssi_resources ## n, \
513 }
514
515DEFINE_IMX_SSI_DEVICE(0, 1, MX2x_SSI1_BASE_ADDR, MX2x_INT_SSI1);
516DEFINE_IMX_SSI_DEVICE(1, 2, MX2x_SSI1_BASE_ADDR, MX2x_INT_SSI1);
517
518/* GPIO port description */ 483/* GPIO port description */
519#define DEFINE_MXC_GPIO_PORT_IRQ(SOC, n, _irq) \ 484#define DEFINE_MXC_GPIO_PORT_IRQ(SOC, n, _irq) \
520 { \ 485 { \
diff --git a/arch/arm/mach-imx/devices.h b/arch/arm/mach-imx/devices.h
index efd4527506a5..57d4b1cac039 100644
--- a/arch/arm/mach-imx/devices.h
+++ b/arch/arm/mach-imx/devices.h
@@ -26,7 +26,5 @@ extern struct platform_device mxc_otg_host;
26extern struct platform_device mxc_usbh1; 26extern struct platform_device mxc_usbh1;
27extern struct platform_device mxc_usbh2; 27extern struct platform_device mxc_usbh2;
28extern struct platform_device mx21_usbhc_device; 28extern struct platform_device mx21_usbhc_device;
29extern struct platform_device imx_ssi_device0;
30extern struct platform_device imx_ssi_device1;
31extern struct platform_device imx_kpp_device; 29extern struct platform_device imx_kpp_device;
32#endif 30#endif
diff --git a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
index 4edc5f439201..cb433aeec939 100644
--- a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
+++ b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
@@ -36,7 +36,6 @@
36#include <mach/hardware.h> 36#include <mach/hardware.h>
37#include <mach/mmc.h> 37#include <mach/mmc.h>
38#include <mach/spi.h> 38#include <mach/spi.h>
39#include <mach/ssi.h>
40#include <mach/audmux.h> 39#include <mach/audmux.h>
41 40
42#include "devices-imx27.h" 41#include "devices-imx27.h"
@@ -311,7 +310,8 @@ static struct imxmmc_platform_data sdhc_pdata = {
311 .dat3_card_detect = 1, 310 .dat3_card_detect = 1,
312}; 311};
313 312
314struct imx_ssi_platform_data eukrea_mbimx27_ssi_pdata = { 313static const
314struct imx_ssi_platform_data eukrea_mbimx27_ssi_pdata __initconst = {
315 .flags = IMX_SSI_DMA | IMX_SSI_USE_I2S_SLAVE, 315 .flags = IMX_SSI_DMA | IMX_SSI_USE_I2S_SLAVE,
316}; 316};
317 317
@@ -357,7 +357,7 @@ void __init eukrea_mbimx27_baseboard_init(void)
357 i2c_register_board_info(0, eukrea_mbimx27_i2c_devices, 357 i2c_register_board_info(0, eukrea_mbimx27_i2c_devices,
358 ARRAY_SIZE(eukrea_mbimx27_i2c_devices)); 358 ARRAY_SIZE(eukrea_mbimx27_i2c_devices));
359 359
360 mxc_register_device(&imx_ssi_device0, &eukrea_mbimx27_ssi_pdata); 360 imx27_add_imx_ssi(0, &eukrea_mbimx27_ssi_pdata);
361 361
362#if defined(CONFIG_TOUCHSCREEN_ADS7846) \ 362#if defined(CONFIG_TOUCHSCREEN_ADS7846) \
363 || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) 363 || defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
diff --git a/arch/arm/mach-imx/mach-pca100.c b/arch/arm/mach-imx/mach-pca100.c
index 23c9e1f37b9c..93e0d66e37dc 100644
--- a/arch/arm/mach-imx/mach-pca100.c
+++ b/arch/arm/mach-imx/mach-pca100.c
@@ -38,7 +38,6 @@
38#include <mach/iomux-mx27.h> 38#include <mach/iomux-mx27.h>
39#include <asm/mach/time.h> 39#include <asm/mach/time.h>
40#include <mach/audmux.h> 40#include <mach/audmux.h>
41#include <mach/ssi.h>
42#include <mach/mxc_nand.h> 41#include <mach/mxc_nand.h>
43#include <mach/irqs.h> 42#include <mach/irqs.h>
44#include <mach/mmc.h> 43#include <mach/mmc.h>
@@ -252,7 +251,7 @@ static void pca100_ac97_cold_reset(struct snd_ac97 *ac97)
252 msleep(2); 251 msleep(2);
253} 252}
254 253
255static struct imx_ssi_platform_data pca100_ssi_pdata = { 254static const struct imx_ssi_platform_data pca100_ssi_pdata __initconst = {
256 .ac97_reset = pca100_ac97_cold_reset, 255 .ac97_reset = pca100_ac97_cold_reset,
257 .ac97_warm_reset = pca100_ac97_warm_reset, 256 .ac97_warm_reset = pca100_ac97_warm_reset,
258 .flags = IMX_SSI_USE_AC97, 257 .flags = IMX_SSI_USE_AC97,
@@ -389,7 +388,7 @@ static void __init pca100_init(void)
389 if (ret) 388 if (ret)
390 printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret); 389 printk(KERN_ERR "pca100: Failed to setup pins (%d)\n", ret);
391 390
392 mxc_register_device(&imx_ssi_device0, &pca100_ssi_pdata); 391 imx27_add_imx_ssi(0, &pca100_ssi_pdata);
393 392
394 imx27_add_imx_uart0(&uart_pdata); 393 imx27_add_imx_uart0(&uart_pdata);
395 394
diff --git a/arch/arm/mach-mx25/Kconfig b/arch/arm/mach-mx25/Kconfig
index c71a7bc19284..326bb648f466 100644
--- a/arch/arm/mach-mx25/Kconfig
+++ b/arch/arm/mach-mx25/Kconfig
@@ -20,8 +20,8 @@ choice
20 default MACH_EUKREA_MBIMXSD25_BASEBOARD 20 default MACH_EUKREA_MBIMXSD25_BASEBOARD
21 21
22config MACH_EUKREA_MBIMXSD25_BASEBOARD 22config MACH_EUKREA_MBIMXSD25_BASEBOARD
23 prompt "Eukrea MBIMXSD development board" 23 bool "Eukrea MBIMXSD development board"
24 bool 24 select IMX_HAVE_PLATFORM_IMX_SSI
25 help 25 help
26 This adds board specific devices that can be found on Eukrea's 26 This adds board specific devices that can be found on Eukrea's
27 MBIMXSD evaluation board. 27 MBIMXSD evaluation board.
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h
index 439400b5d275..bf93facef3d0 100644
--- a/arch/arm/mach-mx25/devices-imx25.h
+++ b/arch/arm/mach-mx25/devices-imx25.h
@@ -21,6 +21,10 @@
21#define imx25_add_imx_i2c2(pdata) \ 21#define imx25_add_imx_i2c2(pdata) \
22 imx_add_imx_i2c(2, MX25_I2C3_BASE_ADDR, SZ_16K, MX25_INT_I2C3, pdata) 22 imx_add_imx_i2c(2, MX25_I2C3_BASE_ADDR, SZ_16K, MX25_INT_I2C3, pdata)
23 23
24extern const struct imx_imx_ssi_data imx25_imx_ssi_data[] __initconst;
25#define imx25_add_imx_ssi(id, pdata) \
26 imx_add_imx_ssi(&imx25_imx_ssi_data[id], pdata)
27
24extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst; 28extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst;
25#define imx25_add_imx_uart(id, pdata) \ 29#define imx25_add_imx_uart(id, pdata) \
26 imx_add_imx_uart_1irq(&imx25_imx_uart_data[id], pdata) 30 imx_add_imx_uart_1irq(&imx25_imx_uart_data[id], pdata)
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c
index 3468eb15b236..bc19e8cc26df 100644
--- a/arch/arm/mach-mx25/devices.c
+++ b/arch/arm/mach-mx25/devices.c
@@ -305,44 +305,6 @@ struct platform_device mx25_kpp_device = {
305 .resource = mx25_kpp_resources, 305 .resource = mx25_kpp_resources,
306}; 306};
307 307
308static struct resource imx_ssi_resources0[] = {
309 {
310 .start = MX25_SSI1_BASE_ADDR,
311 .end = MX25_SSI1_BASE_ADDR + 0x3fff,
312 .flags = IORESOURCE_MEM,
313 }, {
314 .start = MX25_INT_SSI1,
315 .end = MX25_INT_SSI1,
316 .flags = IORESOURCE_IRQ,
317 },
318};
319
320static struct resource imx_ssi_resources1[] = {
321 {
322 .start = MX25_SSI2_BASE_ADDR,
323 .end = MX25_SSI2_BASE_ADDR + 0x3fff,
324 .flags = IORESOURCE_MEM
325 }, {
326 .start = MX25_INT_SSI2,
327 .end = MX25_INT_SSI2,
328 .flags = IORESOURCE_IRQ,
329 },
330};
331
332struct platform_device imx_ssi_device0 = {
333 .name = "imx-ssi",
334 .id = 0,
335 .num_resources = ARRAY_SIZE(imx_ssi_resources0),
336 .resource = imx_ssi_resources0,
337};
338
339struct platform_device imx_ssi_device1 = {
340 .name = "imx-ssi",
341 .id = 1,
342 .num_resources = ARRAY_SIZE(imx_ssi_resources1),
343 .resource = imx_ssi_resources1,
344};
345
346static struct resource mx25_csi_resources[] = { 308static struct resource mx25_csi_resources[] = {
347 { 309 {
348 .start = MX25_CSI_BASE_ADDR, 310 .start = MX25_CSI_BASE_ADDR,
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h
index 4aceb68e35a7..f6e6d3a5f640 100644
--- a/arch/arm/mach-mx25/devices.h
+++ b/arch/arm/mach-mx25/devices.h
@@ -11,6 +11,4 @@ extern struct platform_device mx25_rtc_device;
11extern struct platform_device mx25_fb_device; 11extern struct platform_device mx25_fb_device;
12extern struct platform_device mxc_wdt; 12extern struct platform_device mxc_wdt;
13extern struct platform_device mx25_kpp_device; 13extern struct platform_device mx25_kpp_device;
14extern struct platform_device imx_ssi_device0;
15extern struct platform_device imx_ssi_device1;
16extern struct platform_device mx25_csi_device; 14extern struct platform_device mx25_csi_device;
diff --git a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
index 4aaadc753d3e..2062dd930955 100644
--- a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
+++ b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c
@@ -34,7 +34,6 @@
34#include <mach/mx25.h> 34#include <mach/mx25.h>
35#include <mach/imx-uart.h> 35#include <mach/imx-uart.h>
36#include <mach/imxfb.h> 36#include <mach/imxfb.h>
37#include <mach/ssi.h>
38#include <mach/audmux.h> 37#include <mach/audmux.h>
39 38
40#include "devices-imx25.h" 39#include "devices-imx25.h"
@@ -205,7 +204,8 @@ static struct i2c_board_info eukrea_mbimxsd_i2c_devices[] = {
205 }, 204 },
206}; 205};
207 206
208struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata = { 207static const
208struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata __initconst = {
209 .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE, 209 .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE,
210}; 210};
211 211
@@ -239,7 +239,7 @@ void __init eukrea_mbimxsd25_baseboard_init(void)
239 239
240 imx25_add_imx_uart1(&uart_pdata); 240 imx25_add_imx_uart1(&uart_pdata);
241 mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata); 241 mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata);
242 mxc_register_device(&imx_ssi_device0, &eukrea_mbimxsd_ssi_pdata); 242 imx25_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
243 243
244 gpio_request(GPIO_LED1, "LED1"); 244 gpio_request(GPIO_LED1, "LED1");
245 gpio_direction_output(GPIO_LED1, 1); 245 gpio_direction_output(GPIO_LED1, 1);
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index 5cee1a5c4bd2..d762bf8e539b 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -17,6 +17,7 @@ config MACH_MX31ADS
17 bool "Support MX31ADS platforms" 17 bool "Support MX31ADS platforms"
18 select ARCH_MX31 18 select ARCH_MX31
19 select IMX_HAVE_PLATFORM_IMX_I2C 19 select IMX_HAVE_PLATFORM_IMX_I2C
20 select IMX_HAVE_PLATFORM_IMX_SSI
20 select IMX_HAVE_PLATFORM_IMX_UART 21 select IMX_HAVE_PLATFORM_IMX_UART
21 default y 22 default y
22 help 23 help
@@ -118,6 +119,7 @@ config MACH_PCM043
118 bool "Support Phytec pcm043 (i.MX35) platforms" 119 bool "Support Phytec pcm043 (i.MX35) platforms"
119 select ARCH_MX35 120 select ARCH_MX35
120 select IMX_HAVE_PLATFORM_IMX_I2C 121 select IMX_HAVE_PLATFORM_IMX_I2C
122 select IMX_HAVE_PLATFORM_IMX_SSI
121 select IMX_HAVE_PLATFORM_IMX_UART 123 select IMX_HAVE_PLATFORM_IMX_UART
122 select IMX_HAVE_PLATFORM_MXC_NAND 124 select IMX_HAVE_PLATFORM_MXC_NAND
123 select IMX_HAVE_PLATFORM_FLEXCAN 125 select IMX_HAVE_PLATFORM_FLEXCAN
@@ -172,8 +174,8 @@ choice
172 default MACH_EUKREA_MBIMXSD35_BASEBOARD 174 default MACH_EUKREA_MBIMXSD35_BASEBOARD
173 175
174config MACH_EUKREA_MBIMXSD35_BASEBOARD 176config MACH_EUKREA_MBIMXSD35_BASEBOARD
175 prompt "Eukrea MBIMXSD development board" 177 bool "Eukrea MBIMXSD development board"
176 bool 178 select IMX_HAVE_PLATFORM_IMX_SSI
177 help 179 help
178 This adds board specific devices that can be found on Eukrea's 180 This adds board specific devices that can be found on Eukrea's
179 MBIMXSD evaluation board. 181 MBIMXSD evaluation board.
diff --git a/arch/arm/mach-mx3/devices-imx31.h b/arch/arm/mach-mx3/devices-imx31.h
index a8c5f1bfce3b..b8568a1af81d 100644
--- a/arch/arm/mach-mx3/devices-imx31.h
+++ b/arch/arm/mach-mx3/devices-imx31.h
@@ -16,6 +16,10 @@
16#define imx31_add_imx_i2c2(pdata) \ 16#define imx31_add_imx_i2c2(pdata) \
17 imx_add_imx_i2c(2, MX31_I2C3_BASE_ADDR, SZ_4K, MX31_INT_I2C3, pdata) 17 imx_add_imx_i2c(2, MX31_I2C3_BASE_ADDR, SZ_4K, MX31_INT_I2C3, pdata)
18 18
19extern const struct imx_imx_ssi_data imx31_imx_ssi_data[] __initconst;
20#define imx31_add_imx_ssi(id, pdata) \
21 imx_add_imx_ssi(&imx31_imx_ssi_data[id], pdata)
22
19extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst; 23extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst;
20#define imx31_add_imx_uart(id, pdata) \ 24#define imx31_add_imx_uart(id, pdata) \
21 imx_add_imx_uart_1irq(&imx31_imx_uart_data[id], pdata) 25 imx_add_imx_uart_1irq(&imx31_imx_uart_data[id], pdata)
diff --git a/arch/arm/mach-mx3/devices-imx35.h b/arch/arm/mach-mx3/devices-imx35.h
index 6a76b4d72e49..813e570fd3ba 100644
--- a/arch/arm/mach-mx3/devices-imx35.h
+++ b/arch/arm/mach-mx3/devices-imx35.h
@@ -21,6 +21,10 @@
21#define imx35_add_imx_i2c2(pdata) \ 21#define imx35_add_imx_i2c2(pdata) \
22 imx_add_imx_i2c(2, MX35_I2C3_BASE_ADDR, SZ_4K, MX35_INT_I2C3, pdata) 22 imx_add_imx_i2c(2, MX35_I2C3_BASE_ADDR, SZ_4K, MX35_INT_I2C3, pdata)
23 23
24extern const struct imx_imx_ssi_data imx35_imx_ssi_data[] __initconst;
25#define imx35_add_imx_ssi(id, pdata) \
26 imx_add_imx_ssi(&imx35_imx_ssi_data[id], pdata)
27
24extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst; 28extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst;
25#define imx35_add_imx_uart(id, pdata) \ 29#define imx35_add_imx_uart(id, pdata) \
26 imx_add_imx_uart_1irq(&imx35_imx_uart_data[id], pdata) 30 imx_add_imx_uart_1irq(&imx35_imx_uart_data[id], pdata)
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c
index a4fd1a26fc91..87a9a21457b9 100644
--- a/arch/arm/mach-mx3/devices.c
+++ b/arch/arm/mach-mx3/devices.c
@@ -302,44 +302,6 @@ struct platform_device mxc_fec_device = {
302}; 302};
303#endif 303#endif
304 304
305static struct resource imx_ssi_resources0[] = {
306 {
307 .start = SSI1_BASE_ADDR,
308 .end = SSI1_BASE_ADDR + 0xfff,
309 .flags = IORESOURCE_MEM,
310 }, {
311 .start = MX31_INT_SSI1,
312 .end = MX31_INT_SSI1,
313 .flags = IORESOURCE_IRQ,
314 },
315};
316
317static struct resource imx_ssi_resources1[] = {
318 {
319 .start = SSI2_BASE_ADDR,
320 .end = SSI2_BASE_ADDR + 0xfff,
321 .flags = IORESOURCE_MEM
322 }, {
323 .start = MX31_INT_SSI2,
324 .end = MX31_INT_SSI2,
325 .flags = IORESOURCE_IRQ,
326 },
327};
328
329struct platform_device imx_ssi_device0 = {
330 .name = "imx-ssi",
331 .id = 0,
332 .num_resources = ARRAY_SIZE(imx_ssi_resources0),
333 .resource = imx_ssi_resources0,
334};
335
336struct platform_device imx_ssi_device1 = {
337 .name = "imx-ssi",
338 .id = 1,
339 .num_resources = ARRAY_SIZE(imx_ssi_resources1),
340 .resource = imx_ssi_resources1,
341};
342
343static struct resource imx_wdt_resources[] = { 305static struct resource imx_wdt_resources[] = {
344 { 306 {
345 .flags = IORESOURCE_MEM, 307 .flags = IORESOURCE_MEM,
@@ -410,10 +372,6 @@ static int __init mx3_devices_init(void)
410 mxc_usbh1_resources[0].end = MX35_OTG_BASE_ADDR + 0x5ff; 372 mxc_usbh1_resources[0].end = MX35_OTG_BASE_ADDR + 0x5ff;
411 mxc_usbh1_resources[1].start = MXC_INT_USBHS; 373 mxc_usbh1_resources[1].start = MXC_INT_USBHS;
412 mxc_usbh1_resources[1].end = MXC_INT_USBHS; 374 mxc_usbh1_resources[1].end = MXC_INT_USBHS;
413 imx_ssi_resources0[1].start = MX35_INT_SSI1;
414 imx_ssi_resources0[1].end = MX35_INT_SSI1;
415 imx_ssi_resources1[1].start = MX35_INT_SSI2;
416 imx_ssi_resources1[1].end = MX35_INT_SSI2;
417 imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR; 375 imx_wdt_resources[0].start = MX35_WDOG_BASE_ADDR;
418 imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff; 376 imx_wdt_resources[0].end = MX35_WDOG_BASE_ADDR + 0x3fff;
419 } 377 }
diff --git a/arch/arm/mach-mx3/devices.h b/arch/arm/mach-mx3/devices.h
index e5535234839f..2a69465bc542 100644
--- a/arch/arm/mach-mx3/devices.h
+++ b/arch/arm/mach-mx3/devices.h
@@ -10,9 +10,6 @@ extern struct platform_device mxc_otg_host;
10extern struct platform_device mxc_usbh1; 10extern struct platform_device mxc_usbh1;
11extern struct platform_device mxc_usbh2; 11extern struct platform_device mxc_usbh2;
12extern struct platform_device mxc_rnga_device; 12extern struct platform_device mxc_rnga_device;
13extern struct platform_device imx_ssi_device0;
14extern struct platform_device imx_ssi_device1;
15extern struct platform_device imx_ssi_device1;
16extern struct platform_device imx_wdt_device0; 13extern struct platform_device imx_wdt_device0;
17extern struct platform_device imx_rtc_device0; 14extern struct platform_device imx_rtc_device0;
18extern struct platform_device imx_kpp_device; 15extern struct platform_device imx_kpp_device;
diff --git a/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
index f8f15e3ac7a0..cb667b6f17ae 100644
--- a/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
+++ b/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
@@ -43,7 +43,6 @@
43#include <mach/ipu.h> 43#include <mach/ipu.h>
44#include <mach/mx3fb.h> 44#include <mach/mx3fb.h>
45#include <mach/audmux.h> 45#include <mach/audmux.h>
46#include <mach/ssi.h>
47 46
48#include "devices-imx35.h" 47#include "devices-imx35.h"
49#include "devices.h" 48#include "devices.h"
@@ -206,7 +205,8 @@ static struct i2c_board_info eukrea_mbimxsd_i2c_devices[] = {
206 }, 205 },
207}; 206};
208 207
209struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata = { 208static const
209struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata __initconst = {
210 .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE, 210 .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE,
211}; 211};
212 212
@@ -242,7 +242,7 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
242 mxc_register_device(&mx3_ipu, &mx3_ipu_data); 242 mxc_register_device(&mx3_ipu, &mx3_ipu_data);
243 mxc_register_device(&mx3_fb, &mx3fb_pdata); 243 mxc_register_device(&mx3_fb, &mx3fb_pdata);
244 244
245 mxc_register_device(&imx_ssi_device0, &eukrea_mbimxsd_ssi_pdata); 245 imx35_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
246 246
247 gpio_request(GPIO_LED1, "LED1"); 247 gpio_request(GPIO_LED1, "LED1");
248 gpio_direction_output(GPIO_LED1, 1); 248 gpio_direction_output(GPIO_LED1, 1);
diff --git a/arch/arm/mach-mx3/mach-mx31ads.c b/arch/arm/mach-mx3/mach-mx31ads.c
index 94b3e7c42404..96cedc4a47f5 100644
--- a/arch/arm/mach-mx3/mach-mx31ads.c
+++ b/arch/arm/mach-mx3/mach-mx31ads.c
@@ -517,7 +517,7 @@ static unsigned int ssi_pins[] = {
517 517
518static void mxc_init_audio(void) 518static void mxc_init_audio(void)
519{ 519{
520 mxc_register_device(&imx_ssi_device0, NULL); 520 imx31_add_imx_ssi(0, NULL);
521 mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi"); 521 mxc_iomux_setup_multiple_pins(ssi_pins, ARRAY_SIZE(ssi_pins), "ssi");
522} 522}
523 523
diff --git a/arch/arm/mach-mx3/mach-pcm043.c b/arch/arm/mach-mx3/mach-pcm043.c
index 28886f0e62f9..dcc216bb3952 100644
--- a/arch/arm/mach-mx3/mach-pcm043.c
+++ b/arch/arm/mach-mx3/mach-pcm043.c
@@ -42,7 +42,6 @@
42#include <mach/mxc_ehci.h> 42#include <mach/mxc_ehci.h>
43#include <mach/ulpi.h> 43#include <mach/ulpi.h>
44#include <mach/audmux.h> 44#include <mach/audmux.h>
45#include <mach/ssi.h>
46 45
47#include "devices-imx35.h" 46#include "devices-imx35.h"
48#include "devices.h" 47#include "devices.h"
@@ -293,7 +292,7 @@ err1:
293 mdelay(1); 292 mdelay(1);
294} 293}
295 294
296static struct imx_ssi_platform_data pcm043_ssi_pdata = { 295static const struct imx_ssi_platform_data pcm043_ssi_pdata __initconst = {
297 .ac97_reset = pcm043_ac97_cold_reset, 296 .ac97_reset = pcm043_ac97_cold_reset,
298 .ac97_warm_reset = pcm043_ac97_warm_reset, 297 .ac97_warm_reset = pcm043_ac97_warm_reset,
299 .flags = IMX_SSI_USE_AC97, 298 .flags = IMX_SSI_USE_AC97,
@@ -361,7 +360,7 @@ static void __init mxc_board_init(void)
361 360
362 imx35_add_imx_uart0(&uart_pdata); 361 imx35_add_imx_uart0(&uart_pdata);
363 imx35_add_mxc_nand(&pcm037_nand_board_info); 362 imx35_add_mxc_nand(&pcm037_nand_board_info);
364 mxc_register_device(&imx_ssi_device0, &pcm043_ssi_pdata); 363 imx35_add_imx_ssi(0, &pcm043_ssi_pdata);
365 364
366 imx35_add_imx_uart1(&uart_pdata); 365 imx35_add_imx_uart1(&uart_pdata);
367 366
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig
index 9ab784b776f9..d736c3d4e292 100644
--- a/arch/arm/plat-mxc/devices/Kconfig
+++ b/arch/arm/plat-mxc/devices/Kconfig
@@ -5,6 +5,9 @@ config IMX_HAVE_PLATFORM_FLEXCAN
5config IMX_HAVE_PLATFORM_IMX_I2C 5config IMX_HAVE_PLATFORM_IMX_I2C
6 bool 6 bool
7 7
8config IMX_HAVE_PLATFORM_IMX_SSI
9 bool
10
8config IMX_HAVE_PLATFORM_IMX_UART 11config IMX_HAVE_PLATFORM_IMX_UART
9 bool 12 bool
10 13
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile
index 2062ab4d094d..ac7738379374 100644
--- a/arch/arm/plat-mxc/devices/Makefile
+++ b/arch/arm/plat-mxc/devices/Makefile
@@ -1,5 +1,6 @@
1obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o 1obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
2obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o 2obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o
3obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_SSI) += platform-imx-ssi.o
3obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o 4obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o
4obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o 5obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o
5obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o 6obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o
diff --git a/arch/arm/plat-mxc/devices/platform-imx-ssi.c b/arch/arm/plat-mxc/devices/platform-imx-ssi.c
new file mode 100644
index 000000000000..1535bc9f0601
--- /dev/null
+++ b/arch/arm/plat-mxc/devices/platform-imx-ssi.c
@@ -0,0 +1,98 @@
1/*
2 * Copyright (C) 2010 Pengutronix
3 * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License version 2 as published by the
7 * Free Software Foundation.
8 */
9#include <mach/hardware.h>
10#include <mach/devices-common.h>
11
12#define imx_imx_ssi_data_entry(soc, _id, _hwid, _size) \
13 [_id] = { \
14 .id = _id, \
15 .iobase = soc ## _SSI ## _hwid ## _BASE_ADDR, \
16 .iosize = _size, \
17 .irq = soc ## _INT_SSI ## _hwid, \
18 .dmatx0 = soc ## _DMA_REQ_SSI ## _hwid ## _TX0, \
19 .dmarx0 = soc ## _DMA_REQ_SSI ## _hwid ## _RX0, \
20 .dmatx1 = soc ## _DMA_REQ_SSI ## _hwid ## _TX1, \
21 .dmarx1 = soc ## _DMA_REQ_SSI ## _hwid ## _RX1, \
22 }
23
24#ifdef CONFIG_SOC_IMX21
25const struct imx_imx_ssi_data imx21_imx_ssi_data[] __initconst = {
26#define imx21_imx_ssi_data_entry(_id, _hwid) \
27 imx_imx_ssi_data_entry(MX21, _id, _hwid, SZ_4K)
28 imx21_imx_ssi_data_entry(0, 1),
29 imx21_imx_ssi_data_entry(1, 2),
30};
31#endif /* ifdef CONFIG_SOC_IMX21 */
32
33#ifdef CONFIG_ARCH_MX25
34const struct imx_imx_ssi_data imx25_imx_ssi_data[] __initconst = {
35#define imx25_imx_ssi_data_entry(_id, _hwid) \
36 imx_imx_ssi_data_entry(MX25, _id, _hwid, SZ_4K)
37 imx25_imx_ssi_data_entry(0, 1),
38 imx25_imx_ssi_data_entry(1, 2),
39};
40#endif /* ifdef CONFIG_ARCH_MX25 */
41
42#ifdef CONFIG_SOC_IMX27
43const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst = {
44#define imx27_imx_ssi_data_entry(_id, _hwid) \
45 imx_imx_ssi_data_entry(MX27, _id, _hwid, SZ_4K)
46 imx27_imx_ssi_data_entry(0, 1),
47 imx27_imx_ssi_data_entry(1, 2),
48};
49#endif /* ifdef CONFIG_SOC_IMX27 */
50
51#ifdef CONFIG_ARCH_MX31
52const struct imx_imx_ssi_data imx31_imx_ssi_data[] __initconst = {
53#define imx31_imx_ssi_data_entry(_id, _hwid) \
54 imx_imx_ssi_data_entry(MX31, _id, _hwid, SZ_4K)
55 imx31_imx_ssi_data_entry(0, 1),
56 imx31_imx_ssi_data_entry(1, 2),
57};
58#endif /* ifdef CONFIG_ARCH_MX31 */
59
60#ifdef CONFIG_ARCH_MX35
61const struct imx_imx_ssi_data imx35_imx_ssi_data[] __initconst = {
62#define imx35_imx_ssi_data_entry(_id, _hwid) \
63 imx_imx_ssi_data_entry(MX35, _id, _hwid, SZ_4K)
64 imx35_imx_ssi_data_entry(0, 1),
65 imx35_imx_ssi_data_entry(1, 2),
66};
67#endif /* ifdef CONFIG_ARCH_MX35 */
68
69struct platform_device *__init imx_add_imx_ssi(
70 const struct imx_imx_ssi_data *data,
71 const struct imx_ssi_platform_data *pdata)
72{
73 struct resource res[] = {
74 {
75 .start = data->iobase,
76 .end = data->iobase + data->iosize - 1,
77 .flags = IORESOURCE_MEM,
78 }, {
79 .start = data->irq,
80 .end = data->irq,
81 .flags = IORESOURCE_IRQ,
82 },
83#define DMARES(_name) { \
84 .name = #_name, \
85 .start = data->dma ## _name, \
86 .end = data->dma ## _name, \
87 .flags = IORESOURCE_DMA, \
88}
89 DMARES(tx0),
90 DMARES(rx0),
91 DMARES(tx1),
92 DMARES(rx1),
93 };
94
95 return imx_add_platform_device("imx-ssi", data->id,
96 res, ARRAY_SIZE(res),
97 pdata, sizeof(*pdata));
98}
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
index 12bdc7d027c7..84bfe44ec2cd 100644
--- a/arch/arm/plat-mxc/include/mach/devices-common.h
+++ b/arch/arm/plat-mxc/include/mach/devices-common.h
@@ -25,6 +25,21 @@ struct platform_device *__init imx_add_imx_i2c(int id,
25 resource_size_t iobase, resource_size_t iosize, int irq, 25 resource_size_t iobase, resource_size_t iosize, int irq,
26 const struct imxi2c_platform_data *pdata); 26 const struct imxi2c_platform_data *pdata);
27 27
28#include <mach/ssi.h>
29struct imx_imx_ssi_data {
30 int id;
31 resource_size_t iobase;
32 resource_size_t iosize;
33 resource_size_t irq;
34 resource_size_t dmatx0;
35 resource_size_t dmarx0;
36 resource_size_t dmatx1;
37 resource_size_t dmarx1;
38};
39struct platform_device *__init imx_add_imx_ssi(
40 const struct imx_imx_ssi_data *data,
41 const struct imx_ssi_platform_data *pdata);
42
28#include <mach/imx-uart.h> 43#include <mach/imx-uart.h>
29struct imx_imx_uart_3irq_data { 44struct imx_imx_uart_3irq_data {
30 int id; 45 int id;
diff --git a/arch/arm/plat-mxc/include/mach/mx25.h b/arch/arm/plat-mxc/include/mach/mx25.h
index 4a6f800990f8..8f809eb084df 100644
--- a/arch/arm/plat-mxc/include/mach/mx25.h
+++ b/arch/arm/plat-mxc/include/mach/mx25.h
@@ -77,4 +77,13 @@
77#define MX25_INT_UART1 45 77#define MX25_INT_UART1 45
78#define MX25_INT_FEC 57 78#define MX25_INT_FEC 57
79 79
80#define MX25_DMA_REQ_SSI2_RX1 22
81#define MX25_DMA_REQ_SSI2_TX1 23
82#define MX25_DMA_REQ_SSI2_RX0 24
83#define MX25_DMA_REQ_SSI2_TX0 25
84#define MX25_DMA_REQ_SSI1_RX1 26
85#define MX25_DMA_REQ_SSI1_TX1 27
86#define MX25_DMA_REQ_SSI1_RX0 28
87#define MX25_DMA_REQ_SSI1_TX0 29
88
80#endif /* ifndef __MACH_MX25_H__ */ 89#endif /* ifndef __MACH_MX25_H__ */
diff --git a/arch/arm/plat-mxc/include/mach/mx31.h b/arch/arm/plat-mxc/include/mach/mx31.h
index afee3ab9d62e..eb8bbc7eedfa 100644
--- a/arch/arm/plat-mxc/include/mach/mx31.h
+++ b/arch/arm/plat-mxc/include/mach/mx31.h
@@ -197,6 +197,15 @@ static inline void mx31_setup_weimcs(size_t cs,
197#define MX31_INT_EXT_WDOG 62 197#define MX31_INT_EXT_WDOG 62
198#define MX31_INT_EXT_TV 63 198#define MX31_INT_EXT_TV 63
199 199
200#define MX31_DMA_REQ_SSI2_RX1 22
201#define MX31_DMA_REQ_SSI2_TX1 23
202#define MX31_DMA_REQ_SSI2_RX0 24
203#define MX31_DMA_REQ_SSI2_TX0 25
204#define MX31_DMA_REQ_SSI1_RX1 26
205#define MX31_DMA_REQ_SSI1_TX1 27
206#define MX31_DMA_REQ_SSI1_RX0 28
207#define MX31_DMA_REQ_SSI1_TX0 29
208
200#define MX31_PROD_SIGNATURE 0x1 /* For MX31 */ 209#define MX31_PROD_SIGNATURE 0x1 /* For MX31 */
201 210
202/* silicon revisions specific to i.MX31 */ 211/* silicon revisions specific to i.MX31 */
diff --git a/arch/arm/plat-mxc/include/mach/mx35.h b/arch/arm/plat-mxc/include/mach/mx35.h
index af3038c12e39..867b8c0ca105 100644
--- a/arch/arm/plat-mxc/include/mach/mx35.h
+++ b/arch/arm/plat-mxc/include/mach/mx35.h
@@ -173,6 +173,15 @@
173#define MX35_INT_EXT_WDOG 62 173#define MX35_INT_EXT_WDOG 62
174#define MX35_INT_EXT_TV 63 174#define MX35_INT_EXT_TV 63
175 175
176#define MX35_DMA_REQ_SSI2_RX1 22
177#define MX35_DMA_REQ_SSI2_TX1 23
178#define MX35_DMA_REQ_SSI2_RX0 24
179#define MX35_DMA_REQ_SSI2_TX0 25
180#define MX35_DMA_REQ_SSI1_RX1 26
181#define MX35_DMA_REQ_SSI1_TX1 27
182#define MX35_DMA_REQ_SSI1_RX0 28
183#define MX35_DMA_REQ_SSI1_TX0 29
184
176#define MX35_PROD_SIGNATURE 0x1 /* For MX31 */ 185#define MX35_PROD_SIGNATURE 0x1 /* For MX31 */
177 186
178/* silicon revisions specific to i.MX31 */ 187/* silicon revisions specific to i.MX31 */