aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-mxc/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxc/gpio.c')
-rw-r--r--arch/arm/plat-mxc/gpio.c58
1 files changed, 35 insertions, 23 deletions
diff --git a/arch/arm/plat-mxc/gpio.c b/arch/arm/plat-mxc/gpio.c
index 2c00d9bf0a6..e59fb973a77 100644
--- a/arch/arm/plat-mxc/gpio.c
+++ b/arch/arm/plat-mxc/gpio.c
@@ -350,17 +350,17 @@ int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt)
350 return 0; 350 return 0;
351} 351}
352 352
353#define DEFINE_IMX_GPIO_PORT_IRQ(soc, n, _irq) \ 353#define DEFINE_IMX_GPIO_PORT_IRQ(soc, _id, _hwid, _irq) \
354 { \ 354 { \
355 .chip.label = "gpio-" #n, \ 355 .chip.label = "gpio-" #_id, \
356 .irq = _irq, \ 356 .irq = _irq, \
357 .base = soc ## _IO_ADDRESS(soc ## _GPIO_BASE_ADDR + \ 357 .base = soc ## _IO_ADDRESS( \
358 (n) * SZ_256), \ 358 soc ## _GPIO ## _hwid ## _BASE_ADDR), \
359 .virtual_irq_start = MXC_GPIO_IRQ_START + (n) * 32, \ 359 .virtual_irq_start = MXC_GPIO_IRQ_START + (_id) * 32, \
360 } 360 }
361 361
362#define DEFINE_IMX_GPIO_PORT(soc, n) \ 362#define DEFINE_IMX_GPIO_PORT(soc, _id, _hwid) \
363 DEFINE_IMX_GPIO_PORT_IRQ(soc, n, 0) 363 DEFINE_IMX_GPIO_PORT_IRQ(soc, _id, _hwid, 0)
364 364
365#define DEFINE_REGISTER_FUNCTION(prefix) \ 365#define DEFINE_REGISTER_FUNCTION(prefix) \
366int __init prefix ## _register_gpios(void) \ 366int __init prefix ## _register_gpios(void) \
@@ -371,10 +371,10 @@ int __init prefix ## _register_gpios(void) \
371 371
372#if defined(CONFIG_SOC_IMX1) 372#if defined(CONFIG_SOC_IMX1)
373static struct mxc_gpio_port imx1_gpio_ports[] = { 373static struct mxc_gpio_port imx1_gpio_ports[] = {
374 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 0, MX1_GPIO_INT_PORTA), 374 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 0, 1, MX1_GPIO_INT_PORTA),
375 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 1, MX1_GPIO_INT_PORTB), 375 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 1, 2, MX1_GPIO_INT_PORTB),
376 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 2, MX1_GPIO_INT_PORTC), 376 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 2, 3, MX1_GPIO_INT_PORTC),
377 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 3, MX1_GPIO_INT_PORTD), 377 DEFINE_IMX_GPIO_PORT_IRQ(MX1, 3, 4, MX1_GPIO_INT_PORTD),
378}; 378};
379 379
380DEFINE_REGISTER_FUNCTION(imx1) 380DEFINE_REGISTER_FUNCTION(imx1)
@@ -383,26 +383,38 @@ DEFINE_REGISTER_FUNCTION(imx1)
383 383
384#if defined(CONFIG_SOC_IMX21) 384#if defined(CONFIG_SOC_IMX21)
385static struct mxc_gpio_port imx21_gpio_ports[] = { 385static struct mxc_gpio_port imx21_gpio_ports[] = {
386 DEFINE_IMX_GPIO_PORT_IRQ(MX21, 0, MX21_INT_GPIO), 386 DEFINE_IMX_GPIO_PORT_IRQ(MX21, 0, 1, MX21_INT_GPIO),
387 DEFINE_IMX_GPIO_PORT(MX21, 1), 387 DEFINE_IMX_GPIO_PORT(MX21, 1, 2),
388 DEFINE_IMX_GPIO_PORT(MX21, 2), 388 DEFINE_IMX_GPIO_PORT(MX21, 2, 3),
389 DEFINE_IMX_GPIO_PORT(MX21, 3), 389 DEFINE_IMX_GPIO_PORT(MX21, 3, 4),
390 DEFINE_IMX_GPIO_PORT(MX21, 4), 390 DEFINE_IMX_GPIO_PORT(MX21, 4, 5),
391 DEFINE_IMX_GPIO_PORT(MX21, 5), 391 DEFINE_IMX_GPIO_PORT(MX21, 5, 6),
392}; 392};
393 393
394DEFINE_REGISTER_FUNCTION(imx21) 394DEFINE_REGISTER_FUNCTION(imx21)
395 395
396#endif /* if defined(CONFIG_SOC_IMX21) */ 396#endif /* if defined(CONFIG_SOC_IMX21) */
397 397
398#if defined(CONFIG_ARCH_MX25)
399static struct mxc_gpio_port imx25_gpio_ports[] = {
400 DEFINE_IMX_GPIO_PORT_IRQ(MX25, 0, 1, MX25_INT_GPIO1),
401 DEFINE_IMX_GPIO_PORT_IRQ(MX25, 1, 2, MX25_INT_GPIO2),
402 DEFINE_IMX_GPIO_PORT_IRQ(MX25, 2, 3, MX25_INT_GPIO3),
403 DEFINE_IMX_GPIO_PORT_IRQ(MX25, 3, 4, MX25_INT_GPIO4),
404};
405
406DEFINE_REGISTER_FUNCTION(imx25)
407
408#endif /* if defined(CONFIG_ARCH_MX25) */
409
398#if defined(CONFIG_SOC_IMX27) 410#if defined(CONFIG_SOC_IMX27)
399static struct mxc_gpio_port imx27_gpio_ports[] = { 411static struct mxc_gpio_port imx27_gpio_ports[] = {
400 DEFINE_IMX_GPIO_PORT_IRQ(MX27, 0, MX27_INT_GPIO), 412 DEFINE_IMX_GPIO_PORT_IRQ(MX27, 0, 1, MX27_INT_GPIO),
401 DEFINE_IMX_GPIO_PORT(MX27, 1), 413 DEFINE_IMX_GPIO_PORT(MX27, 1, 2),
402 DEFINE_IMX_GPIO_PORT(MX27, 2), 414 DEFINE_IMX_GPIO_PORT(MX27, 2, 3),
403 DEFINE_IMX_GPIO_PORT(MX27, 3), 415 DEFINE_IMX_GPIO_PORT(MX27, 3, 4),
404 DEFINE_IMX_GPIO_PORT(MX27, 4), 416 DEFINE_IMX_GPIO_PORT(MX27, 4, 5),
405 DEFINE_IMX_GPIO_PORT(MX27, 5), 417 DEFINE_IMX_GPIO_PORT(MX27, 5, 6),
406}; 418};
407 419
408DEFINE_REGISTER_FUNCTION(imx27) 420DEFINE_REGISTER_FUNCTION(imx27)