lots of code cleanup for ifxmips
[openwrt/svn-archive/archive.git] / target / linux / ifxmips / files / arch / mips / ifxmips / board.c
index 580dc6a8f7bad30e19ff67770bd7d68caf05b9d4..aabcb5fce837045e642f45b7725e78a59a444c3b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- *   arch/mips/ifxmips/board.c
- *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
  *   the Free Software Foundation; either version 2 of the License, or
@@ -16,7 +14,6 @@
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
  *
  *   Copyright (C) 2007 John Crispin <blogic@openwrt.org> 
- *
  */
 
 #include <linux/autoconf.h>
@@ -35,7 +32,7 @@
 #include <asm/io.h>
 #include <asm/ifxmips/ifxmips.h>
 
-#define MAX_IFXMIPS_DEVS               5
+#define MAX_IFXMIPS_DEVS               7
 
 #define BOARD_DANUBE                   "Danube"
 #define BOARD_DANUBE_CHIPID            0x10129083
 #define BOARD_TWINPASS                 "Twinpass"
 #define BOARD_TWINPASS_CHIPID  0x3012D083
 
-#define BOARD_DANUBE                   "Danube"
-
 static unsigned int chiprev;
-
 static struct platform_device *ifxmips_devs[MAX_IFXMIPS_DEVS];
 
-static struct platform_device ifxmips_led[] =
+static struct platform_device
+ifxmips_led[] =
 {
        {
                .id = 0,
@@ -57,7 +52,8 @@ static struct platform_device ifxmips_led[] =
        },
 };
 
-static struct platform_device ifxmips_gpio[] =
+static struct platform_device
+ifxmips_gpio[] =
 {
        {
                .id = 0,
@@ -65,7 +61,8 @@ static struct platform_device ifxmips_gpio[] =
        },
 };
 
-static struct platform_device ifxmips_mii[] =
+static struct platform_device
+ifxmips_mii[] =
 {
        {
                .id = 0,
@@ -73,17 +70,29 @@ static struct platform_device ifxmips_mii[] =
        },
 };
 
-static struct physmap_flash_data ifxmips_mtd_data = {
+static struct platform_device
+ifxmips_wdt[] =
+{
+       {
+               .id = 0,
+               .name = "ifxmips_wdt",
+       },
+};
+
+static struct physmap_flash_data
+ifxmips_mtd_data = {
        .width    = 2,
 };
 
-static struct resource ifxmips_mtd_resource = {
+static struct resource
+ifxmips_mtd_resource = {
        .start  = IFXMIPS_FLASH_START,
        .end    = IFXMIPS_FLASH_START + IFXMIPS_FLASH_MAX - 1,
        .flags  = IORESOURCE_MEM,
 };
 
-static struct platform_device ifxmips_mtd[] =
+static struct platform_device
+ifxmips_mtd[] =
 {
        {
                .id = 0,
@@ -96,10 +105,34 @@ static struct platform_device ifxmips_mtd[] =
        },
 };
 
+#ifdef CONFIG_GPIO_DEVICE
+static struct resource
+ifxmips_gpio_dev_resources[] = {
+       {
+               .name = "gpio",
+               .flags  = 0,
+               .start = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) |
+                       (1 << 4) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 12),
+               .end = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) |
+                       (1 << 4) | (1 << 5) | (1 << 8) | (1 << 9) | (1 << 12),
+       },
+};
+
+static struct platform_device
+ifxmips_gpio_dev[] = {
+       {
+               .name     = "GPIODEV",
+               .id     = -1,
+               .num_resources    = ARRAY_SIZE(ifxmips_gpio_dev_resources),
+               .resource   = ifxmips_gpio_dev_resources,
+       }
+};
+#endif
+
 const char*
-get_system_type (void)
+get_system_type(void)
 {
-       chiprev = readl(IFXMIPS_MPS_CHIPID);
+       chiprev = ifxmips_r32(IFXMIPS_MPS_CHIPID);
        switch(chiprev)
        {
        case BOARD_DANUBE_CHIPID:
@@ -112,25 +145,19 @@ get_system_type (void)
        return BOARD_SYSTEM_TYPE;
 }
 
-int __init ifxmips_init_devices(void)
+int __init
+ifxmips_init_devices(void)
 {
-       /*
-       *       This is where we detect what chip we are running on
-       *       Currently we support 3 chips
-       *       1.) Danube
-       *       2.) Twinpass (Danube without dsl phy)
-       *       3.) KDbg74 (used for debuging)
-       */
-
        int dev = 0;
 
-       /* the following devices are generic for all targets */
-
        ifxmips_devs[dev++] = ifxmips_led;
        ifxmips_devs[dev++] = ifxmips_gpio;
        ifxmips_devs[dev++] = ifxmips_mii;
        ifxmips_devs[dev++] = ifxmips_mtd;
-
+       ifxmips_devs[dev++] = ifxmips_wdt;
+#ifdef CONFIG_GPIO_DEVICE
+       ifxmips_devs[dev++] = ifxmips_gpio_dev;
+#endif
        return platform_add_devices(ifxmips_devs, dev);
 }