diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-10 04:51:38 -0500 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-17 04:01:35 -0500 |
commit | e9f0bafb4f3d32d0bc0ea7e946d667a68bae59ce (patch) | |
tree | ebcb525f358e2e77b9fd2b16f92397560869247c /arch/arm/plat-mxc/gpio.c | |
parent | 3a6f52a79fc0ce1c8b950c628bcf101f8652e957 (diff) |
ARM: imx: move registration of gpios to plat-mxc/gpio.c
This finally gets rid of mach-imx/devices.c.
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/plat-mxc/gpio.c')
-rw-r--r-- | arch/arm/plat-mxc/gpio.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/arch/arm/plat-mxc/gpio.c b/arch/arm/plat-mxc/gpio.c index a43d9ccb1962..2c00d9bf0a66 100644 --- a/arch/arm/plat-mxc/gpio.c +++ b/arch/arm/plat-mxc/gpio.c | |||
@@ -349,3 +349,62 @@ int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt) | |||
349 | 349 | ||
350 | return 0; | 350 | return 0; |
351 | } | 351 | } |
352 | |||
353 | #define DEFINE_IMX_GPIO_PORT_IRQ(soc, n, _irq) \ | ||
354 | { \ | ||
355 | .chip.label = "gpio-" #n, \ | ||
356 | .irq = _irq, \ | ||
357 | .base = soc ## _IO_ADDRESS(soc ## _GPIO_BASE_ADDR + \ | ||
358 | (n) * SZ_256), \ | ||
359 | .virtual_irq_start = MXC_GPIO_IRQ_START + (n) * 32, \ | ||
360 | } | ||
361 | |||
362 | #define DEFINE_IMX_GPIO_PORT(soc, n) \ | ||
363 | DEFINE_IMX_GPIO_PORT_IRQ(soc, n, 0) | ||
364 | |||
365 | #define DEFINE_REGISTER_FUNCTION(prefix) \ | ||
366 | int __init prefix ## _register_gpios(void) \ | ||
367 | { \ | ||
368 | return mxc_gpio_init(prefix ## _gpio_ports, \ | ||
369 | ARRAY_SIZE(prefix ## _gpio_ports)); \ | ||
370 | } | ||
371 | |||
372 | #if defined(CONFIG_SOC_IMX1) | ||
373 | static struct mxc_gpio_port imx1_gpio_ports[] = { | ||
374 | DEFINE_IMX_GPIO_PORT_IRQ(MX1, 0, MX1_GPIO_INT_PORTA), | ||
375 | DEFINE_IMX_GPIO_PORT_IRQ(MX1, 1, MX1_GPIO_INT_PORTB), | ||
376 | DEFINE_IMX_GPIO_PORT_IRQ(MX1, 2, MX1_GPIO_INT_PORTC), | ||
377 | DEFINE_IMX_GPIO_PORT_IRQ(MX1, 3, MX1_GPIO_INT_PORTD), | ||
378 | }; | ||
379 | |||
380 | DEFINE_REGISTER_FUNCTION(imx1) | ||
381 | |||
382 | #endif /* if defined(CONFIG_SOC_IMX1) */ | ||
383 | |||
384 | #if defined(CONFIG_SOC_IMX21) | ||
385 | static struct mxc_gpio_port imx21_gpio_ports[] = { | ||
386 | DEFINE_IMX_GPIO_PORT_IRQ(MX21, 0, MX21_INT_GPIO), | ||
387 | DEFINE_IMX_GPIO_PORT(MX21, 1), | ||
388 | DEFINE_IMX_GPIO_PORT(MX21, 2), | ||
389 | DEFINE_IMX_GPIO_PORT(MX21, 3), | ||
390 | DEFINE_IMX_GPIO_PORT(MX21, 4), | ||
391 | DEFINE_IMX_GPIO_PORT(MX21, 5), | ||
392 | }; | ||
393 | |||
394 | DEFINE_REGISTER_FUNCTION(imx21) | ||
395 | |||
396 | #endif /* if defined(CONFIG_SOC_IMX21) */ | ||
397 | |||
398 | #if defined(CONFIG_SOC_IMX27) | ||
399 | static struct mxc_gpio_port imx27_gpio_ports[] = { | ||
400 | DEFINE_IMX_GPIO_PORT_IRQ(MX27, 0, MX27_INT_GPIO), | ||
401 | DEFINE_IMX_GPIO_PORT(MX27, 1), | ||
402 | DEFINE_IMX_GPIO_PORT(MX27, 2), | ||
403 | DEFINE_IMX_GPIO_PORT(MX27, 3), | ||
404 | DEFINE_IMX_GPIO_PORT(MX27, 4), | ||
405 | DEFINE_IMX_GPIO_PORT(MX27, 5), | ||
406 | }; | ||
407 | |||
408 | DEFINE_REGISTER_FUNCTION(imx27) | ||
409 | |||
410 | #endif /* if defined(CONFIG_SOC_IMX27) */ | ||