[ar71xx] reorganize PCI code
[openwrt.git] / target / linux / brcm63xx / files / arch / mips / bcm63xx / boards / board_livebox.c
index f38b5c2..06ca83b 100644 (file)
@@ -21,6 +21,7 @@
 #include <bcm63xx_board.h>
 #include <bcm63xx_dev_pci.h>
 #include <bcm63xx_dev_uart.h>
+#include <bcm63xx_dev_wdt.h>
 #include <bcm63xx_dev_enet.h>
 #include <bcm63xx_dev_pcmcia.h>
 #include <bcm63xx_dev_usb_ohci.h>
@@ -41,12 +42,22 @@ static struct board_info __initdata board_livebox = {
        .expected_cpu_id                = 0x6348,
 
        .has_enet0                      = 1,
+       .has_enet1                      = 1,
        .has_pci                        = 1,
 
        .enet0 = {
                .has_phy                = 1,
                .use_internal_phy       = 1,
        },
+
+       .enet1 = {
+               .force_speed_100        = 1,
+               .force_duplex_full      = 1,
+       },
+
+       .has_ohci0                      = 1,
+       .has_pccard                     = 1,
+       .has_ehci0                      = 1,
 };
 #endif
 
@@ -130,12 +141,51 @@ const char *board_get_name(void)
 /*
  * register & return a new board mac address
  */
+
 static int board_get_mac_address(u8 *mac)
 {
-       /* Not yet implemented */
+       u8 default_mac[ETH_ALEN] = {0x00, 0x07, 0x3A, 0x00, 0x00, 0x00};
+       u8 *p;
+       int count;
+
+       memcpy(mac, default_mac, ETH_ALEN);
+
+       p = mac + ETH_ALEN - 1;
+       count = mac_addr_used;
+
+       while (count--) {
+               do {
+                       (*p)++;
+                       if (*p != 0)
+                               break;
+                       p--;
+               } while (p != mac);
+       }
+
+       if (p == mac) {
+               printk(KERN_ERR PFX "unable to fetch mac address\n");
+               return -ENODEV;
+       }
+        mac_addr_used++;
+
        return 0;
 }
 
+static struct resource mtd_resources[] = {
+       {
+               .start          = 0,    /* filled at runtime */
+               .end            = 0,    /* filled at runtime */
+               .flags          = IORESOURCE_MEM,
+       }
+};
+
+static struct platform_device mtd_dev = {
+       .name                   = "bcm963xx-flash",
+       .resource               = mtd_resources,
+       .num_resources          = ARRAY_SIZE(mtd_resources),
+};
+
+
 /*
  * third stage init callback, register all board devices.
  */
@@ -144,6 +194,7 @@ int __init board_register_devices(void)
        u32 val;
 
        bcm63xx_uart_register();
+       bcm63xx_wdt_register();
 
        if (board.has_pccard)
                bcm63xx_pcmcia_register();
@@ -166,6 +217,10 @@ int __init board_register_devices(void)
        /* read base address of boot chip select (0) */
        val = bcm_mpi_readl(MPI_CSBASE_REG(0));
        val &= MPI_CSBASE_BASE_MASK;
+       mtd_resources[0].start = val;
+       mtd_resources[0].end = 0x1FFFFFFF;
+       
+       platform_device_register(&mtd_dev);
 
        return 0;
 }
This page took 0.024747 seconds and 4 git commands to generate.