]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-kirkwood/common.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6-omap-h63xx.git] / arch / arm / mach-kirkwood / common.c
index 0bb1fbd84ccb9f561cbb6cb6ebc14cdc485f6784..0d2074f51a593ff0e6294889b4ba26a0fa57fd07 100644 (file)
@@ -57,6 +57,7 @@ void __init kirkwood_map_io(void)
  ****************************************************************************/
 static struct orion_ehci_data kirkwood_ehci_data = {
        .dram           = &kirkwood_mbus_dram_info,
+       .phy_version    = EHCI_PHY_NA,
 };
 
 static u64 ehci_dmamask = 0xffffffffUL;
@@ -152,6 +153,64 @@ void __init kirkwood_ge00_init(struct mv643xx_eth_platform_data *eth_data)
 }
 
 
+/*****************************************************************************
+ * GE01
+ ****************************************************************************/
+struct mv643xx_eth_shared_platform_data kirkwood_ge01_shared_data = {
+       .dram           = &kirkwood_mbus_dram_info,
+       .shared_smi     = &kirkwood_ge00_shared,
+};
+
+static struct resource kirkwood_ge01_shared_resources[] = {
+       {
+               .name   = "ge01 base",
+               .start  = GE01_PHYS_BASE + 0x2000,
+               .end    = GE01_PHYS_BASE + 0x3fff,
+               .flags  = IORESOURCE_MEM,
+       }, {
+               .name   = "ge01 err irq",
+               .start  = IRQ_KIRKWOOD_GE01_ERR,
+               .end    = IRQ_KIRKWOOD_GE01_ERR,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device kirkwood_ge01_shared = {
+       .name           = MV643XX_ETH_SHARED_NAME,
+       .id             = 1,
+       .dev            = {
+               .platform_data  = &kirkwood_ge01_shared_data,
+       },
+       .num_resources  = ARRAY_SIZE(kirkwood_ge01_shared_resources),
+       .resource       = kirkwood_ge01_shared_resources,
+};
+
+static struct resource kirkwood_ge01_resources[] = {
+       {
+               .name   = "ge01 irq",
+               .start  = IRQ_KIRKWOOD_GE01_SUM,
+               .end    = IRQ_KIRKWOOD_GE01_SUM,
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device kirkwood_ge01 = {
+       .name           = MV643XX_ETH_NAME,
+       .id             = 1,
+       .num_resources  = 1,
+       .resource       = kirkwood_ge01_resources,
+};
+
+void __init kirkwood_ge01_init(struct mv643xx_eth_platform_data *eth_data)
+{
+       eth_data->shared = &kirkwood_ge01_shared;
+       kirkwood_ge01.dev.platform_data = eth_data;
+
+       platform_device_register(&kirkwood_ge01_shared);
+       platform_device_register(&kirkwood_ge01);
+}
+
+
 /*****************************************************************************
  * Ethernet switch
  ****************************************************************************/
@@ -172,14 +231,17 @@ static struct platform_device kirkwood_switch_device = {
 
 void __init kirkwood_ge00_switch_init(struct dsa_platform_data *d, int irq)
 {
+       int i;
+
        if (irq != NO_IRQ) {
                kirkwood_switch_resources[0].start = irq;
                kirkwood_switch_resources[0].end = irq;
                kirkwood_switch_device.num_resources = 1;
        }
 
-       d->mii_bus = &kirkwood_ge00_shared.dev;
        d->netdev = &kirkwood_ge00.dev;
+       for (i = 0; i < d->nr_chips; i++)
+               d->chip[i].mii_bus = &kirkwood_ge00_shared.dev;
        kirkwood_switch_device.dev.platform_data = d;
 
        platform_device_register(&kirkwood_switch_device);
@@ -639,6 +701,7 @@ void __init kirkwood_init(void)
        printk(KERN_INFO "Kirkwood: %s, TCLK=%d.\n",
                kirkwood_id(), kirkwood_tclk);
        kirkwood_ge00_shared_data.t_clk = kirkwood_tclk;
+       kirkwood_ge01_shared_data.t_clk = kirkwood_tclk;
        kirkwood_spi_plat_data.tclk = kirkwood_tclk;
        kirkwood_uart0_data[0].uartclk = kirkwood_tclk;
        kirkwood_uart1_data[0].uartclk = kirkwood_tclk;