]> git.karo-electronics.de Git - linux-beck.git/blobdiff - arch/arm/mach-ep93xx/core.c
Merge branch 'gpio/next' of git://git.secretlab.ca/git/linux-2.6
[linux-beck.git] / arch / arm / mach-ep93xx / core.c
index 6659a0d137a32f246895a011195d1ead66657841..c488e4bd61e75c775dad8372f2a1dd96fac73268 100644 (file)
@@ -174,14 +174,10 @@ struct sys_timer ep93xx_timer = {
 /*************************************************************************
  * EP93xx IRQ handling
  *************************************************************************/
-extern void ep93xx_gpio_init_irq(void);
-
 void __init ep93xx_init_irq(void)
 {
        vic_init(EP93XX_VIC1_BASE, 0, EP93XX_VIC1_VALID_IRQ_MASK, 0);
        vic_init(EP93XX_VIC2_BASE, 32, EP93XX_VIC2_VALID_IRQ_MASK, 0);
-
-       ep93xx_gpio_init_irq();
 }
 
 
@@ -240,6 +236,24 @@ unsigned int ep93xx_chip_revision(void)
        return v;
 }
 
+/*************************************************************************
+ * EP93xx GPIO
+ *************************************************************************/
+static struct resource ep93xx_gpio_resource[] = {
+       {
+               .start          = EP93XX_GPIO_PHYS_BASE,
+               .end            = EP93XX_GPIO_PHYS_BASE + 0xcc - 1,
+               .flags          = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device ep93xx_gpio_device = {
+       .name           = "gpio-ep93xx",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(ep93xx_gpio_resource),
+       .resource       = ep93xx_gpio_resource,
+};
+
 /*************************************************************************
  * EP93xx peripheral handling
  *************************************************************************/
@@ -870,14 +884,13 @@ void __init ep93xx_register_ac97(void)
        platform_device_register(&ep93xx_pcm_device);
 }
 
-extern void ep93xx_gpio_init(void);
-
 void __init ep93xx_init_devices(void)
 {
        /* Disallow access to MaverickCrunch initially */
        ep93xx_devcfg_clear_bits(EP93XX_SYSCON_DEVCFG_CPENA);
 
-       ep93xx_gpio_init();
+       /* Get the GPIO working early, other devices need it */
+       platform_device_register(&ep93xx_gpio_device);
 
        amba_device_register(&uart1_device, &iomem_resource);
        amba_device_register(&uart2_device, &iomem_resource);