[brcm63xx] fix a stupid typo preventing the board from being detected
[openwrt/svn-archive/archive.git] / target / linux / brcm63xx / files / arch / mips / bcm63xx / boards / board_bcm963xx.c
index c16ebc8672740a60406afdb8a1add9eb368c4999..98c90059401d07a6994ad1cb9bbc91fa14e71d10 100644 (file)
@@ -54,6 +54,13 @@ static struct board_info __initdata board_96338gw = {
 
        .has_ohci0                      = 1,
 };
+
+static struct board_info __initdata board_96338w = {
+       .name                           = "96338W",
+       .expected_cpu_id                = 0x6338,
+
+       .has_enet0                      = 1,
+};
 #endif
 
 /*
@@ -287,6 +294,7 @@ static struct board_info __initdata board_AGPFS0 = {
 static const struct board_info __initdata *bcm963xx_boards[] = {
 #ifdef CONFIG_BCM63XX_CPU_6338
        &board_96338gw,
+       &board_96338w,
 #endif
 #ifdef CONFIG_BCM63XX_CPU_6348
        &board_96348r,
@@ -315,9 +323,15 @@ void __init board_prom_init(void)
        char cfe_version[32];
        u32 val;
 
-       /* read base address of boot chip select (0) */
-       val = bcm_mpi_readl(MPI_CSBASE_REG(0));
-       val &= MPI_CSBASE_BASE_MASK;
+       /* read base address of boot chip select (0) 
+        * 6338 does not have MPI but boots from standard
+        * MIPS Flash address */
+       if (BCMCPU_IS_6338() || BCMCPU_IS_6345())
+               val = 0x1fc00000;
+       else {
+               val = bcm_mpi_readl(MPI_CSBASE_REG(0));
+               val &= MPI_CSBASE_BASE_MASK;
+       }
        boot_addr = (u8 *)KSEG1ADDR(val);
 
        /* dump cfe version */
@@ -370,13 +384,13 @@ void __init board_prom_init(void)
         * this has to be done this early since PCI init is done
         * inside arch_initcall */
        val = 0;
-
+#ifdef CONFIG_PCI
        if (board.has_pci) {
                bcm63xx_pci_enabled = 1;
                if (BCMCPU_IS_6348())
                        val |= GPIO_MODE_6348_G2_PCI;
        }
-
+#endif
        if (board.has_pccard) {
                if (BCMCPU_IS_6348())
                        val |= GPIO_MODE_6348_G1_MII_PCCARD;
@@ -494,6 +508,10 @@ static struct ssb_sprom bcm63xx_sprom = {
        .boardflags_hi          = 0x0000,
 };
 
+static struct resource gpiodev_resource = {
+       .start                  = 0xFFFFFFFF,
+};
+
 /*
  * third stage init callback, register all board devices.
  */
@@ -526,12 +544,14 @@ int __init board_register_devices(void)
                bcm63xx_udc_register();
        /* Generate MAC address for WLAN and
         * register our SPROM */
+#ifdef CONFIG_PCI
        if (!board_get_mac_address(bcm63xx_sprom.il0mac)) {
                memcpy(bcm63xx_sprom.et0mac, bcm63xx_sprom.il0mac, ETH_ALEN);
                memcpy(bcm63xx_sprom.et1mac, bcm63xx_sprom.il0mac, ETH_ALEN);
                if (ssb_arch_set_fallback_sprom(&bcm63xx_sprom) < 0)
                        printk(KERN_ERR "failed to register fallback SPROM\n");
        }
+#endif
 
        /* read base address of boot chip select (0) */
        val = bcm_mpi_readl(MPI_CSBASE_REG(0));
@@ -541,6 +561,9 @@ int __init board_register_devices(void)
 
        platform_device_register(&mtd_dev);
 
+       /* Register GPIODEV */
+       platform_device_register_simple("GPIODEV", 0, &gpiodev_resource, 1);
+
        return 0;
 }