aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/Kconfig5
-rw-r--r--arch/arm/mach-imx/dma-v1.c25
-rw-r--r--arch/arm/mach-imx/eukrea_mbimx27-baseboard.c23
-rw-r--r--arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c15
-rw-r--r--arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c13
-rw-r--r--arch/arm/mach-imx/mach-apf9328.c7
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c2
-rw-r--r--arch/arm/mach-imx/mach-mx27_3ds.c44
-rw-r--r--arch/arm/mach-imx/mach-mx31_3ds.c10
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c14
-rw-r--r--arch/arm/mach-imx/mach-mx35_3ds.c2
-rw-r--r--arch/arm/mach-imx/mach-scb9328.c17
-rw-r--r--arch/arm/mach-imx/mx31lite-db.c15
13 files changed, 71 insertions, 121 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 59c97a331136..e8dd22fa7d61 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -167,6 +167,7 @@ config MACH_EUKREA_MBIMXSD25_BASEBOARD
167 bool "Eukrea MBIMXSD development board" 167 bool "Eukrea MBIMXSD development board"
168 select IMX_HAVE_PLATFORM_GPIO_KEYS 168 select IMX_HAVE_PLATFORM_GPIO_KEYS
169 select IMX_HAVE_PLATFORM_IMX_SSI 169 select IMX_HAVE_PLATFORM_IMX_SSI
170 select LEDS_GPIO_REGISTER
170 help 171 help
171 This adds board specific devices that can be found on Eukrea's 172 This adds board specific devices that can be found on Eukrea's
172 MBIMXSD evaluation board. 173 MBIMXSD evaluation board.
@@ -265,6 +266,7 @@ config MACH_EUKREA_MBIMX27_BASEBOARD
265 select IMX_HAVE_PLATFORM_IMX_UART 266 select IMX_HAVE_PLATFORM_IMX_UART
266 select IMX_HAVE_PLATFORM_MXC_MMC 267 select IMX_HAVE_PLATFORM_MXC_MMC
267 select IMX_HAVE_PLATFORM_SPI_IMX 268 select IMX_HAVE_PLATFORM_SPI_IMX
269 select LEDS_GPIO_REGISTER
268 help 270 help
269 This adds board specific devices that can be found on Eukrea's 271 This adds board specific devices that can be found on Eukrea's
270 MBIMX27 evaluation board. 272 MBIMX27 evaluation board.
@@ -403,6 +405,7 @@ config MACH_MX31LITE
403 select IMX_HAVE_PLATFORM_MXC_NAND 405 select IMX_HAVE_PLATFORM_MXC_NAND
404 select IMX_HAVE_PLATFORM_MXC_RTC 406 select IMX_HAVE_PLATFORM_MXC_RTC
405 select IMX_HAVE_PLATFORM_SPI_IMX 407 select IMX_HAVE_PLATFORM_SPI_IMX
408 select LEDS_GPIO_REGISTER
406 help 409 help
407 Include support for MX31 LITEKIT platform. This includes specific 410 Include support for MX31 LITEKIT platform. This includes specific
408 configurations for the board and its peripherals. 411 configurations for the board and its peripherals.
@@ -471,6 +474,7 @@ config MACH_MX31MOBOARD
471 select IMX_HAVE_PLATFORM_MXC_EHCI 474 select IMX_HAVE_PLATFORM_MXC_EHCI
472 select IMX_HAVE_PLATFORM_MXC_MMC 475 select IMX_HAVE_PLATFORM_MXC_MMC
473 select IMX_HAVE_PLATFORM_SPI_IMX 476 select IMX_HAVE_PLATFORM_SPI_IMX
477 select LEDS_GPIO_REGISTER
474 select MXC_ULPI if USB_ULPI 478 select MXC_ULPI if USB_ULPI
475 help 479 help
476 Include support for mx31moboard platform. This includes specific 480 Include support for mx31moboard platform. This includes specific
@@ -577,6 +581,7 @@ config MACH_EUKREA_MBIMXSD35_BASEBOARD
577 select IMX_HAVE_PLATFORM_GPIO_KEYS 581 select IMX_HAVE_PLATFORM_GPIO_KEYS
578 select IMX_HAVE_PLATFORM_IMX_SSI 582 select IMX_HAVE_PLATFORM_IMX_SSI
579 select IMX_HAVE_PLATFORM_IPU_CORE 583 select IMX_HAVE_PLATFORM_IPU_CORE
584 select LEDS_GPIO_REGISTER
580 help 585 help
581 This adds board specific devices that can be found on Eukrea's 586 This adds board specific devices that can be found on Eukrea's
582 MBIMXSD evaluation board. 587 MBIMXSD evaluation board.
diff --git a/arch/arm/mach-imx/dma-v1.c b/arch/arm/mach-imx/dma-v1.c
index 236f1495efad..4d76f67f270f 100644
--- a/arch/arm/mach-imx/dma-v1.c
+++ b/arch/arm/mach-imx/dma-v1.c
@@ -475,7 +475,6 @@ void imx_dma_enable(int channel)
475 imx_dmav1_writel(imx_dmav1_readl(DMA_CCR(channel)) | CCR_CEN | 475 imx_dmav1_writel(imx_dmav1_readl(DMA_CCR(channel)) | CCR_CEN |
476 CCR_ACRPT, DMA_CCR(channel)); 476 CCR_ACRPT, DMA_CCR(channel));
477 477
478#ifdef CONFIG_ARCH_MX2
479 if ((cpu_is_mx21() || cpu_is_mx27()) && 478 if ((cpu_is_mx21() || cpu_is_mx27()) &&
480 imxdma->sg && imx_dma_hw_chain(imxdma)) { 479 imxdma->sg && imx_dma_hw_chain(imxdma)) {
481 imxdma->sg = sg_next(imxdma->sg); 480 imxdma->sg = sg_next(imxdma->sg);
@@ -487,7 +486,6 @@ void imx_dma_enable(int channel)
487 DMA_CCR(channel)); 486 DMA_CCR(channel));
488 } 487 }
489 } 488 }
490#endif
491 imxdma->in_use = 1; 489 imxdma->in_use = 1;
492 490
493 local_irq_restore(flags); 491 local_irq_restore(flags);
@@ -518,7 +516,6 @@ void imx_dma_disable(int channel)
518} 516}
519EXPORT_SYMBOL(imx_dma_disable); 517EXPORT_SYMBOL(imx_dma_disable);
520 518
521#ifdef CONFIG_ARCH_MX2
522static void imx_dma_watchdog(unsigned long chno) 519static void imx_dma_watchdog(unsigned long chno)
523{ 520{
524 struct imx_dma_channel *imxdma = &imx_dma_channels[chno]; 521 struct imx_dma_channel *imxdma = &imx_dma_channels[chno];
@@ -530,7 +527,6 @@ static void imx_dma_watchdog(unsigned long chno)
530 if (imxdma->err_handler) 527 if (imxdma->err_handler)
531 imxdma->err_handler(chno, imxdma->data, IMX_DMA_ERR_TIMEOUT); 528 imxdma->err_handler(chno, imxdma->data, IMX_DMA_ERR_TIMEOUT);
532} 529}
533#endif
534 530
535static irqreturn_t dma_err_handler(int irq, void *dev_id) 531static irqreturn_t dma_err_handler(int irq, void *dev_id)
536{ 532{
@@ -654,10 +650,8 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id)
654{ 650{
655 int i, disr; 651 int i, disr;
656 652
657#ifdef CONFIG_ARCH_MX2
658 if (cpu_is_mx21() || cpu_is_mx27()) 653 if (cpu_is_mx21() || cpu_is_mx27())
659 dma_err_handler(irq, dev_id); 654 dma_err_handler(irq, dev_id);
660#endif
661 655
662 disr = imx_dmav1_readl(DMA_DISR); 656 disr = imx_dmav1_readl(DMA_DISR);
663 657
@@ -703,7 +697,6 @@ int imx_dma_request(int channel, const char *name)
703 imxdma->name = name; 697 imxdma->name = name;
704 local_irq_restore(flags); /* request_irq() can block */ 698 local_irq_restore(flags); /* request_irq() can block */
705 699
706#ifdef CONFIG_ARCH_MX2
707 if (cpu_is_mx21() || cpu_is_mx27()) { 700 if (cpu_is_mx21() || cpu_is_mx27()) {
708 ret = request_irq(MX2x_INT_DMACH0 + channel, 701 ret = request_irq(MX2x_INT_DMACH0 + channel,
709 dma_irq_handler, 0, "DMA", NULL); 702 dma_irq_handler, 0, "DMA", NULL);
@@ -717,7 +710,6 @@ int imx_dma_request(int channel, const char *name)
717 imxdma->watchdog.function = &imx_dma_watchdog; 710 imxdma->watchdog.function = &imx_dma_watchdog;
718 imxdma->watchdog.data = channel; 711 imxdma->watchdog.data = channel;
719 } 712 }
720#endif
721 713
722 return ret; 714 return ret;
723} 715}
@@ -744,10 +736,8 @@ void imx_dma_free(int channel)
744 imx_dma_disable(channel); 736 imx_dma_disable(channel);
745 imxdma->name = NULL; 737 imxdma->name = NULL;
746 738
747#ifdef CONFIG_ARCH_MX2
748 if (cpu_is_mx21() || cpu_is_mx27()) 739 if (cpu_is_mx21() || cpu_is_mx27())
749 free_irq(MX2x_INT_DMACH0 + channel, NULL); 740 free_irq(MX2x_INT_DMACH0 + channel, NULL);
750#endif
751 741
752 local_irq_restore(flags); 742 local_irq_restore(flags);
753} 743}
@@ -803,21 +793,13 @@ static int __init imx_dma_init(void)
803 int ret = 0; 793 int ret = 0;
804 int i; 794 int i;
805 795
806#ifdef CONFIG_ARCH_MX1
807 if (cpu_is_mx1()) 796 if (cpu_is_mx1())
808 imx_dmav1_baseaddr = MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR); 797 imx_dmav1_baseaddr = MX1_IO_ADDRESS(MX1_DMA_BASE_ADDR);
809 else 798 else if (cpu_is_mx21())
810#endif
811#ifdef CONFIG_MACH_MX21
812 if (cpu_is_mx21())
813 imx_dmav1_baseaddr = MX21_IO_ADDRESS(MX21_DMA_BASE_ADDR); 799 imx_dmav1_baseaddr = MX21_IO_ADDRESS(MX21_DMA_BASE_ADDR);
814 else 800 else if (cpu_is_mx27())
815#endif
816#ifdef CONFIG_MACH_MX27
817 if (cpu_is_mx27())
818 imx_dmav1_baseaddr = MX27_IO_ADDRESS(MX27_DMA_BASE_ADDR); 801 imx_dmav1_baseaddr = MX27_IO_ADDRESS(MX27_DMA_BASE_ADDR);
819 else 802 else
820#endif
821 return 0; 803 return 0;
822 804
823 dma_clk = clk_get(NULL, "dma"); 805 dma_clk = clk_get(NULL, "dma");
@@ -828,7 +810,6 @@ static int __init imx_dma_init(void)
828 /* reset DMA module */ 810 /* reset DMA module */
829 imx_dmav1_writel(DCR_DRST, DMA_DCR); 811 imx_dmav1_writel(DCR_DRST, DMA_DCR);
830 812
831#ifdef CONFIG_ARCH_MX1
832 if (cpu_is_mx1()) { 813 if (cpu_is_mx1()) {
833 ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", NULL); 814 ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", NULL);
834 if (ret) { 815 if (ret) {
@@ -843,7 +824,7 @@ static int __init imx_dma_init(void)
843 return ret; 824 return ret;
844 } 825 }
845 } 826 }
846#endif 827
847 /* enable DMA module */ 828 /* enable DMA module */
848 imx_dmav1_writel(DCR_DEN, DMA_DCR); 829 imx_dmav1_writel(DCR_DEN, DMA_DCR);
849 830
diff --git a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
index 5911281da5f5..5db3e1463af7 100644
--- a/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
+++ b/arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
@@ -112,7 +112,7 @@ eukrea_mbimx27_keymap_data __initconst = {
112 .keymap_size = ARRAY_SIZE(eukrea_mbimx27_keymap), 112 .keymap_size = ARRAY_SIZE(eukrea_mbimx27_keymap),
113}; 113};
114 114
115static struct gpio_led gpio_leds[] = { 115static const struct gpio_led eukrea_mbimx27_gpio_leds[] __initconst = {
116 { 116 {
117 .name = "led1", 117 .name = "led1",
118 .default_trigger = "heartbeat", 118 .default_trigger = "heartbeat",
@@ -127,17 +127,10 @@ static struct gpio_led gpio_leds[] = {
127 }, 127 },
128}; 128};
129 129
130static struct gpio_led_platform_data gpio_led_info = { 130static const struct gpio_led_platform_data
131 .leds = gpio_leds, 131 eukrea_mbimx27_gpio_led_info __initconst = {
132 .num_leds = ARRAY_SIZE(gpio_leds), 132 .leds = eukrea_mbimx27_gpio_leds,
133}; 133 .num_leds = ARRAY_SIZE(eukrea_mbimx27_gpio_leds),
134
135static struct platform_device leds_gpio = {
136 .name = "leds-gpio",
137 .id = -1,
138 .dev = {
139 .platform_data = &gpio_led_info,
140 },
141}; 134};
142 135
143static struct imx_fb_videomode eukrea_mbimx27_modes[] = { 136static struct imx_fb_videomode eukrea_mbimx27_modes[] = {
@@ -293,10 +286,6 @@ static struct i2c_board_info eukrea_mbimx27_i2c_devices[] = {
293 }, 286 },
294}; 287};
295 288
296static struct platform_device *platform_devices[] __initdata = {
297 &leds_gpio,
298};
299
300static const struct imxmmc_platform_data sdhc_pdata __initconst = { 289static const struct imxmmc_platform_data sdhc_pdata __initconst = {
301 .dat3_card_detect = 1, 290 .dat3_card_detect = 1,
302}; 291};
@@ -377,5 +366,5 @@ void __init eukrea_mbimx27_baseboard_init(void)
377 366
378 imx27_add_imx_keypad(&eukrea_mbimx27_keymap_data); 367 imx27_add_imx_keypad(&eukrea_mbimx27_keymap_data);
379 368
380 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 369 gpio_led_register_device(-1, &eukrea_mbimx27_gpio_led_info);
381} 370}
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
index f9ef04acdab1..01ebcb31e482 100644
--- a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
+++ b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
@@ -173,7 +173,7 @@ static struct platform_device eukrea_mbimxsd_lcd_powerdev = {
173 .dev.platform_data = &eukrea_mbimxsd_lcd_power_data, 173 .dev.platform_data = &eukrea_mbimxsd_lcd_power_data,
174}; 174};
175 175
176static struct gpio_led eukrea_mbimxsd_leds[] = { 176static const struct gpio_led eukrea_mbimxsd_leds[] __initconst = {
177 { 177 {
178 .name = "led1", 178 .name = "led1",
179 .default_trigger = "heartbeat", 179 .default_trigger = "heartbeat",
@@ -182,19 +182,12 @@ static struct gpio_led eukrea_mbimxsd_leds[] = {
182 }, 182 },
183}; 183};
184 184
185static struct gpio_led_platform_data eukrea_mbimxsd_led_info = { 185static const struct gpio_led_platform_data
186 eukrea_mbimxsd_led_info __initconst = {
186 .leds = eukrea_mbimxsd_leds, 187 .leds = eukrea_mbimxsd_leds,
187 .num_leds = ARRAY_SIZE(eukrea_mbimxsd_leds), 188 .num_leds = ARRAY_SIZE(eukrea_mbimxsd_leds),
188}; 189};
189 190
190static struct platform_device eukrea_mbimxsd_leds_gpio = {
191 .name = "leds-gpio",
192 .id = -1,
193 .dev = {
194 .platform_data = &eukrea_mbimxsd_led_info,
195 },
196};
197
198static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = { 191static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = {
199 { 192 {
200 .gpio = GPIO_SWITCH1, 193 .gpio = GPIO_SWITCH1,
@@ -212,7 +205,6 @@ static const struct gpio_keys_platform_data
212}; 205};
213 206
214static struct platform_device *platform_devices[] __initdata = { 207static struct platform_device *platform_devices[] __initdata = {
215 &eukrea_mbimxsd_leds_gpio,
216 &eukrea_mbimxsd_lcd_powerdev, 208 &eukrea_mbimxsd_lcd_powerdev,
217}; 209};
218 210
@@ -287,5 +279,6 @@ void __init eukrea_mbimxsd25_baseboard_init(void)
287 ARRAY_SIZE(eukrea_mbimxsd_i2c_devices)); 279 ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
288 280
289 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 281 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
282 gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
290 imx_add_gpio_keys(&eukrea_mbimxsd_button_data); 283 imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
291} 284}
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c
index 4909ea05855a..558eb526ba56 100644
--- a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c
+++ b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c
@@ -193,19 +193,12 @@ static struct gpio_led eukrea_mbimxsd_leds[] = {
193 }, 193 },
194}; 194};
195 195
196static struct gpio_led_platform_data eukrea_mbimxsd_led_info = { 196static const struct gpio_led_platform_data
197 eukrea_mbimxsd_led_info __initconst = {
197 .leds = eukrea_mbimxsd_leds, 198 .leds = eukrea_mbimxsd_leds,
198 .num_leds = ARRAY_SIZE(eukrea_mbimxsd_leds), 199 .num_leds = ARRAY_SIZE(eukrea_mbimxsd_leds),
199}; 200};
200 201
201static struct platform_device eukrea_mbimxsd_leds_gpio = {
202 .name = "leds-gpio",
203 .id = -1,
204 .dev = {
205 .platform_data = &eukrea_mbimxsd_led_info,
206 },
207};
208
209static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = { 202static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = {
210 { 203 {
211 .gpio = GPIO_SWITCH1, 204 .gpio = GPIO_SWITCH1,
@@ -223,7 +216,6 @@ static const struct gpio_keys_platform_data
223}; 216};
224 217
225static struct platform_device *platform_devices[] __initdata = { 218static struct platform_device *platform_devices[] __initdata = {
226 &eukrea_mbimxsd_leds_gpio,
227 &eukrea_mbimxsd_lcd_powerdev, 219 &eukrea_mbimxsd_lcd_powerdev,
228}; 220};
229 221
@@ -299,5 +291,6 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
299 ARRAY_SIZE(eukrea_mbimxsd_i2c_devices)); 291 ARRAY_SIZE(eukrea_mbimxsd_i2c_devices));
300 292
301 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); 293 platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
294 gpio_led_register_device(-1, &eukrea_mbimxsd_led_info);
302 imx_add_gpio_keys(&eukrea_mbimxsd_button_data); 295 imx_add_gpio_keys(&eukrea_mbimxsd_button_data);
303} 296}
diff --git a/arch/arm/mach-imx/mach-apf9328.c b/arch/arm/mach-imx/mach-apf9328.c
index 15e45c84e371..c11d0ab14848 100644
--- a/arch/arm/mach-imx/mach-apf9328.c
+++ b/arch/arm/mach-imx/mach-apf9328.c
@@ -99,11 +99,6 @@ static struct platform_device dm9000x_device = {
99 } 99 }
100}; 100};
101 101
102/* --- SERIAL RESSOURCE --- */
103static const struct imxuart_platform_data uart0_pdata __initconst = {
104 .flags = 0,
105};
106
107static const struct imxuart_platform_data uart1_pdata __initconst = { 102static const struct imxuart_platform_data uart1_pdata __initconst = {
108 .flags = IMXUART_HAVE_RTSCTS, 103 .flags = IMXUART_HAVE_RTSCTS,
109}; 104};
@@ -119,7 +114,7 @@ static void __init apf9328_init(void)
119 ARRAY_SIZE(apf9328_pins), 114 ARRAY_SIZE(apf9328_pins),
120 "APF9328"); 115 "APF9328");
121 116
122 imx1_add_imx_uart0(&uart0_pdata); 117 imx1_add_imx_uart0(NULL);
123 imx1_add_imx_uart1(&uart1_pdata); 118 imx1_add_imx_uart1(&uart1_pdata);
124 119
125 platform_add_devices(devices, ARRAY_SIZE(devices)); 120 platform_add_devices(devices, ARRAY_SIZE(devices));
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index 7ae43b1ec517..686449696543 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -34,7 +34,7 @@
34#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
35#include <asm/mach/time.h> 35#include <asm/mach/time.h>
36#include <mach/common.h> 36#include <mach/common.h>
37#include <mach/iomux.h> 37#include <mach/iomux-mx27.h>
38 38
39#include "devices-imx27.h" 39#include "devices-imx27.h"
40 40
diff --git a/arch/arm/mach-imx/mach-mx27_3ds.c b/arch/arm/mach-imx/mach-mx27_3ds.c
index 6e1accf93f81..352f75da3a4a 100644
--- a/arch/arm/mach-imx/mach-mx27_3ds.c
+++ b/arch/arm/mach-imx/mach-mx27_3ds.c
@@ -42,10 +42,12 @@
42 42
43#include "devices-imx27.h" 43#include "devices-imx27.h"
44 44
45#define SD1_EN_GPIO (GPIO_PORTB + 25) 45#define SD1_EN_GPIO IMX_GPIO_NR(2, 25)
46#define OTG_PHY_RESET_GPIO (GPIO_PORTB + 23) 46#define OTG_PHY_RESET_GPIO IMX_GPIO_NR(2, 23)
47#define SPI2_SS0 (GPIO_PORTD + 21) 47#define SPI2_SS0 IMX_GPIO_NR(4, 21)
48#define EXPIO_PARENT_INT (MXC_INTERNAL_IRQS + GPIO_PORTC + 28) 48#define EXPIO_PARENT_INT gpio_to_irq(IMX_GPIO_NR(3, 28))
49#define PMIC_INT IMX_GPIO_NR(3, 14)
50#define SD1_CD IMX_GPIO_NR(2, 26)
49 51
50static const int mx27pdk_pins[] __initconst = { 52static const int mx27pdk_pins[] __initconst = {
51 /* UART1 */ 53 /* UART1 */
@@ -98,9 +100,12 @@ static const int mx27pdk_pins[] __initconst = {
98 PD22_PF_CSPI2_SCLK, 100 PD22_PF_CSPI2_SCLK,
99 PD23_PF_CSPI2_MISO, 101 PD23_PF_CSPI2_MISO,
100 PD24_PF_CSPI2_MOSI, 102 PD24_PF_CSPI2_MOSI,
103 SPI2_SS0 | GPIO_GPIO | GPIO_OUT,
101 /* I2C1 */ 104 /* I2C1 */
102 PD17_PF_I2C_DATA, 105 PD17_PF_I2C_DATA,
103 PD18_PF_I2C_CLK, 106 PD18_PF_I2C_CLK,
107 /* PMIC INT */
108 PMIC_INT | GPIO_GPIO | GPIO_IN,
104}; 109};
105 110
106static const struct imxuart_platform_data uart_pdata __initconst = { 111static const struct imxuart_platform_data uart_pdata __initconst = {
@@ -131,13 +136,13 @@ static const struct matrix_keymap_data mx27_3ds_keymap_data __initconst = {
131static int mx27_3ds_sdhc1_init(struct device *dev, irq_handler_t detect_irq, 136static int mx27_3ds_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
132 void *data) 137 void *data)
133{ 138{
134 return request_irq(IRQ_GPIOB(26), detect_irq, IRQF_TRIGGER_FALLING | 139 return request_irq(gpio_to_irq(SD1_CD), detect_irq,
135 IRQF_TRIGGER_RISING, "sdhc1-card-detect", data); 140 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, "sdhc1-card-detect", data);
136} 141}
137 142
138static void mx27_3ds_sdhc1_exit(struct device *dev, void *data) 143static void mx27_3ds_sdhc1_exit(struct device *dev, void *data)
139{ 144{
140 free_irq(IRQ_GPIOB(26), data); 145 free_irq(gpio_to_irq(SD1_CD), data);
141} 146}
142 147
143static const struct imxmmc_platform_data sdhc1_pdata __initconst = { 148static const struct imxmmc_platform_data sdhc1_pdata __initconst = {
@@ -193,6 +198,13 @@ static int __init mx27_3ds_otg_mode(char *options)
193__setup("otg_mode=", mx27_3ds_otg_mode); 198__setup("otg_mode=", mx27_3ds_otg_mode);
194 199
195/* Regulators */ 200/* Regulators */
201static struct regulator_init_data gpo_init = {
202 .constraints = {
203 .boot_on = 1,
204 .always_on = 1,
205 }
206};
207
196static struct regulator_consumer_supply vmmc1_consumers[] = { 208static struct regulator_consumer_supply vmmc1_consumers[] = {
197 REGULATOR_SUPPLY("lcd_2v8", NULL), 209 REGULATOR_SUPPLY("lcd_2v8", NULL),
198}; 210};
@@ -201,7 +213,9 @@ static struct regulator_init_data vmmc1_init = {
201 .constraints = { 213 .constraints = {
202 .min_uV = 2800000, 214 .min_uV = 2800000,
203 .max_uV = 2800000, 215 .max_uV = 2800000,
204 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, 216 .apply_uV = 1,
217 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE |
218 REGULATOR_CHANGE_STATUS,
205 }, 219 },
206 .num_consumer_supplies = ARRAY_SIZE(vmmc1_consumers), 220 .num_consumer_supplies = ARRAY_SIZE(vmmc1_consumers),
207 .consumer_supplies = vmmc1_consumers, 221 .consumer_supplies = vmmc1_consumers,
@@ -228,6 +242,12 @@ static struct mc13xxx_regulator_init_data mx27_3ds_regulators[] = {
228 }, { 242 }, {
229 .id = MC13783_REG_VGEN, 243 .id = MC13783_REG_VGEN,
230 .init_data = &vgen_init, 244 .init_data = &vgen_init,
245 }, {
246 .id = MC13783_REG_GPO1, /* Turn on 1.8V */
247 .init_data = &gpo_init,
248 }, {
249 .id = MC13783_REG_GPO3, /* Turn on 3.3V */
250 .init_data = &gpo_init,
231 }, 251 },
232}; 252};
233 253
@@ -242,11 +262,11 @@ static struct mc13xxx_platform_data mc13783_pdata = {
242}; 262};
243 263
244/* SPI */ 264/* SPI */
245static int spi2_internal_chipselect[] = {SPI2_SS0}; 265static int spi2_chipselect[] = {SPI2_SS0};
246 266
247static const struct spi_imx_master spi2_pdata __initconst = { 267static const struct spi_imx_master spi2_pdata __initconst = {
248 .chipselect = spi2_internal_chipselect, 268 .chipselect = spi2_chipselect,
249 .num_chipselect = ARRAY_SIZE(spi2_internal_chipselect), 269 .num_chipselect = ARRAY_SIZE(spi2_chipselect),
250}; 270};
251 271
252static struct spi_board_info mx27_3ds_spi_devs[] __initdata = { 272static struct spi_board_info mx27_3ds_spi_devs[] __initdata = {
@@ -256,7 +276,7 @@ static struct spi_board_info mx27_3ds_spi_devs[] __initdata = {
256 .bus_num = 1, 276 .bus_num = 1,
257 .chip_select = 0, /* SS0 */ 277 .chip_select = 0, /* SS0 */
258 .platform_data = &mc13783_pdata, 278 .platform_data = &mc13783_pdata,
259 .irq = IRQ_GPIOC(14), 279 .irq = gpio_to_irq(PMIC_INT),
260 .mode = SPI_CS_HIGH, 280 .mode = SPI_CS_HIGH,
261 }, 281 },
262}; 282};
diff --git a/arch/arm/mach-imx/mach-mx31_3ds.c b/arch/arm/mach-imx/mach-mx31_3ds.c
index 9b982449cb52..62983bd07d6a 100644
--- a/arch/arm/mach-imx/mach-mx31_3ds.c
+++ b/arch/arm/mach-imx/mach-mx31_3ds.c
@@ -53,11 +53,8 @@ static int mx31_3ds_pins[] = {
53 MX31_PIN_RXD1__RXD1, 53 MX31_PIN_RXD1__RXD1,
54 IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO), 54 IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO),
55 /*SPI0*/ 55 /*SPI0*/
56 MX31_PIN_CSPI1_SCLK__SCLK, 56 IOMUX_MODE(MX31_PIN_DSR_DCE1, IOMUX_CONFIG_ALT1),
57 MX31_PIN_CSPI1_MOSI__MOSI, 57 IOMUX_MODE(MX31_PIN_RI_DCE1, IOMUX_CONFIG_ALT1),
58 MX31_PIN_CSPI1_MISO__MISO,
59 MX31_PIN_CSPI1_SPI_RDY__SPI_RDY,
60 MX31_PIN_CSPI1_SS2__SS2, /* CS for LCD */
61 /* SPI 1 */ 58 /* SPI 1 */
62 MX31_PIN_CSPI2_SCLK__SCLK, 59 MX31_PIN_CSPI2_SCLK__SCLK,
63 MX31_PIN_CSPI2_MOSI__MOSI, 60 MX31_PIN_CSPI2_MOSI__MOSI,
@@ -689,6 +686,9 @@ static void __init mx31_3ds_init(void)
689{ 686{
690 int ret; 687 int ret;
691 688
689 /* Configure SPI1 IOMUX */
690 mxc_iomux_set_gpr(MUX_PGP_CSPI_BB, true);
691
692 mxc_iomux_setup_multiple_pins(mx31_3ds_pins, ARRAY_SIZE(mx31_3ds_pins), 692 mxc_iomux_setup_multiple_pins(mx31_3ds_pins, ARRAY_SIZE(mx31_3ds_pins),
693 "mx31_3ds"); 693 "mx31_3ds");
694 694
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index eaa51e49ca95..abe688b3297d 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -425,7 +425,7 @@ static int __init moboard_usbh2_init(void)
425 return 0; 425 return 0;
426} 426}
427 427
428static struct gpio_led mx31moboard_leds[] = { 428static const struct gpio_led mx31moboard_leds[] __initconst = {
429 { 429 {
430 .name = "coreboard-led-0:red:running", 430 .name = "coreboard-led-0:red:running",
431 .default_trigger = "heartbeat", 431 .default_trigger = "heartbeat",
@@ -442,26 +442,17 @@ static struct gpio_led mx31moboard_leds[] = {
442 }, 442 },
443}; 443};
444 444
445static struct gpio_led_platform_data mx31moboard_led_pdata = { 445static const struct gpio_led_platform_data mx31moboard_led_pdata __initconst = {
446 .num_leds = ARRAY_SIZE(mx31moboard_leds), 446 .num_leds = ARRAY_SIZE(mx31moboard_leds),
447 .leds = mx31moboard_leds, 447 .leds = mx31moboard_leds,
448}; 448};
449 449
450static struct platform_device mx31moboard_leds_device = {
451 .name = "leds-gpio",
452 .id = -1,
453 .dev = {
454 .platform_data = &mx31moboard_led_pdata,
455 },
456};
457
458static const struct ipu_platform_data mx3_ipu_data __initconst = { 450static const struct ipu_platform_data mx3_ipu_data __initconst = {
459 .irq_base = MXC_IPU_IRQ_START, 451 .irq_base = MXC_IPU_IRQ_START,
460}; 452};
461 453
462static struct platform_device *devices[] __initdata = { 454static struct platform_device *devices[] __initdata = {
463 &mx31moboard_flash, 455 &mx31moboard_flash,
464 &mx31moboard_leds_device,
465}; 456};
466 457
467static struct mx3_camera_pdata camera_pdata __initdata = { 458static struct mx3_camera_pdata camera_pdata __initdata = {
@@ -511,6 +502,7 @@ static void __init mx31moboard_init(void)
511 "moboard"); 502 "moboard");
512 503
513 platform_add_devices(devices, ARRAY_SIZE(devices)); 504 platform_add_devices(devices, ARRAY_SIZE(devices));
505 gpio_led_register_device(-1, &mx31moboard_led_pdata);
514 506
515 imx31_add_imx_uart0(&uart0_pdata); 507 imx31_add_imx_uart0(&uart0_pdata);
516 imx31_add_imx_uart4(&uart4_pdata); 508 imx31_add_imx_uart4(&uart4_pdata);
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c
index 882880ac1bbc..c10221d3d102 100644
--- a/arch/arm/mach-imx/mach-mx35_3ds.c
+++ b/arch/arm/mach-imx/mach-mx35_3ds.c
@@ -43,7 +43,7 @@
43 43
44#include "devices-imx35.h" 44#include "devices-imx35.h"
45 45
46#define EXPIO_PARENT_INT (MXC_INTERNAL_IRQS + GPIO_PORTA + 1) 46#define EXPIO_PARENT_INT gpio_to_irq(IMX_GPIO_NR(1, 1))
47 47
48static const struct imxuart_platform_data uart_pdata __initconst = { 48static const struct imxuart_platform_data uart_pdata __initconst = {
49 .flags = IMXUART_HAVE_RTSCTS, 49 .flags = IMXUART_HAVE_RTSCTS,
diff --git a/arch/arm/mach-imx/mach-scb9328.c b/arch/arm/mach-imx/mach-scb9328.c
index dcaee043628e..b77386573502 100644
--- a/arch/arm/mach-imx/mach-scb9328.c
+++ b/arch/arm/mach-imx/mach-scb9328.c
@@ -101,21 +101,7 @@ static const int mxc_uart1_pins[] = {
101 PC12_PF_UART1_RXD, 101 PC12_PF_UART1_RXD,
102}; 102};
103 103
104static int uart1_mxc_init(struct platform_device *pdev)
105{
106 return mxc_gpio_setup_multiple_pins(mxc_uart1_pins,
107 ARRAY_SIZE(mxc_uart1_pins), "UART1");
108}
109
110static void uart1_mxc_exit(struct platform_device *pdev)
111{
112 mxc_gpio_release_multiple_pins(mxc_uart1_pins,
113 ARRAY_SIZE(mxc_uart1_pins));
114}
115
116static const struct imxuart_platform_data uart_pdata __initconst = { 104static const struct imxuart_platform_data uart_pdata __initconst = {
117 .init = uart1_mxc_init,
118 .exit = uart1_mxc_exit,
119 .flags = IMXUART_HAVE_RTSCTS, 105 .flags = IMXUART_HAVE_RTSCTS,
120}; 106};
121 107
@@ -129,6 +115,9 @@ static struct platform_device *devices[] __initdata = {
129 */ 115 */
130static void __init scb9328_init(void) 116static void __init scb9328_init(void)
131{ 117{
118 mxc_gpio_setup_multiple_pins(mxc_uart1_pins,
119 ARRAY_SIZE(mxc_uart1_pins), "UART1");
120
132 imx1_add_imx_uart0(&uart_pdata); 121 imx1_add_imx_uart0(&uart_pdata);
133 122
134 printk(KERN_INFO"Scb9328: Adding devices\n"); 123 printk(KERN_INFO"Scb9328: Adding devices\n");
diff --git a/arch/arm/mach-imx/mx31lite-db.c b/arch/arm/mach-imx/mx31lite-db.c
index 5aa053edc17c..bf0fb87946ba 100644
--- a/arch/arm/mach-imx/mx31lite-db.c
+++ b/arch/arm/mach-imx/mx31lite-db.c
@@ -161,7 +161,7 @@ static const struct spi_imx_master spi0_pdata __initconst = {
161 161
162/* GPIO LEDs */ 162/* GPIO LEDs */
163 163
164static struct gpio_led litekit_leds[] = { 164static const struct gpio_led litekit_leds[] __initconst = {
165 { 165 {
166 .name = "GPIO0", 166 .name = "GPIO0",
167 .gpio = IOMUX_TO_GPIO(MX31_PIN_COMPARE), 167 .gpio = IOMUX_TO_GPIO(MX31_PIN_COMPARE),
@@ -176,19 +176,12 @@ static struct gpio_led litekit_leds[] = {
176 } 176 }
177}; 177};
178 178
179static struct gpio_led_platform_data litekit_led_platform_data = { 179static const struct gpio_led_platform_data
180 litekit_led_platform_data __initconst = {
180 .leds = litekit_leds, 181 .leds = litekit_leds,
181 .num_leds = ARRAY_SIZE(litekit_leds), 182 .num_leds = ARRAY_SIZE(litekit_leds),
182}; 183};
183 184
184static struct platform_device litekit_led_device = {
185 .name = "leds-gpio",
186 .id = -1,
187 .dev = {
188 .platform_data = &litekit_led_platform_data,
189 },
190};
191
192void __init mx31lite_db_init(void) 185void __init mx31lite_db_init(void)
193{ 186{
194 mxc_iomux_setup_multiple_pins(litekit_db_board_pins, 187 mxc_iomux_setup_multiple_pins(litekit_db_board_pins,
@@ -197,7 +190,7 @@ void __init mx31lite_db_init(void)
197 imx31_add_imx_uart0(&uart_pdata); 190 imx31_add_imx_uart0(&uart_pdata);
198 imx31_add_mxc_mmc(0, &mmc_pdata); 191 imx31_add_mxc_mmc(0, &mmc_pdata);
199 imx31_add_spi_imx0(&spi0_pdata); 192 imx31_add_spi_imx0(&spi0_pdata);
200 platform_device_register(&litekit_led_device); 193 gpio_led_register_device(-1, &litekit_led_platform_data);
201 imx31_add_imx2_wdt(NULL); 194 imx31_add_imx2_wdt(NULL);
202 imx31_add_mxc_rtc(NULL); 195 imx31_add_mxc_rtc(NULL);
203} 196}