[ARM] 5273/2: ep93xx: move ethernet support into core.c
authorHartley Sweeten <hartleys@visionengravers.com>
Sat, 4 Oct 2008 19:01:49 +0000 (20:01 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 4 Oct 2008 19:04:35 +0000 (20:04 +0100)
All EP93xx based systems can support Ethernet. This patch moves
the platform_device setup from the various board support files
into the core support file. The Ethernet driver data still remains
in the individual platform setup files to allow specific platform
configuration.

This also adds Ethernet support to the edb9302edb9312, and
edb9315 platforms.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
12 files changed:
arch/arm/mach-ep93xx/adssphere.c
arch/arm/mach-ep93xx/core.c
arch/arm/mach-ep93xx/edb9302.c
arch/arm/mach-ep93xx/edb9302a.c
arch/arm/mach-ep93xx/edb9307.c
arch/arm/mach-ep93xx/edb9312.c
arch/arm/mach-ep93xx/edb9315.c
arch/arm/mach-ep93xx/edb9315a.c
arch/arm/mach-ep93xx/gesbc9312.c
arch/arm/mach-ep93xx/include/mach/platform.h
arch/arm/mach-ep93xx/micro9.c
arch/arm/mach-ep93xx/ts72xx.c

index aa1fb352fb8f6fb1c64cc0f216e3d3e62568f90c..8e3bbb5299e9757b1d0ca10741942467822a0e9b 100644 (file)
@@ -47,36 +47,12 @@ static struct ep93xx_eth_data adssphere_eth_data = {
        .phy_id         = 1,
 };
 
-static struct resource adssphere_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device adssphere_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &adssphere_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = adssphere_eth_resource,
-};
-
 static void __init adssphere_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&adssphere_flash);
 
-       memcpy(adssphere_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&adssphere_eth_device);
+       ep93xx_register_eth(&adssphere_eth_data, 1);
 }
 
 MACHINE_START(ADSSPHERE, "ADS Sphere board")
index d6967dedce52fd5ed3b5fb6fff9b5c2eb36f0e1a..52ee8aa046c4303ad0fc04f2aa771da06b311cbe 100644 (file)
@@ -461,6 +461,41 @@ static struct platform_device ep93xx_ohci_device = {
        .resource       = ep93xx_ohci_resources,
 };
 
+static struct ep93xx_eth_data ep93xx_eth_data;
+
+static struct resource ep93xx_eth_resource[] = {
+       {
+               .start  = EP93XX_ETHERNET_PHYS_BASE,
+               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
+               .flags  = IORESOURCE_MEM,
+       }, {
+               .start  = IRQ_EP93XX_ETHERNET,
+               .end    = IRQ_EP93XX_ETHERNET,
+               .flags  = IORESOURCE_IRQ,
+       }
+};
+
+static struct platform_device ep93xx_eth_device = {
+       .name           = "ep93xx-eth",
+       .id             = -1,
+       .dev            = {
+               .platform_data  = &ep93xx_eth_data,
+       },
+       .num_resources  = ARRAY_SIZE(ep93xx_eth_resource),
+       .resource       = ep93xx_eth_resource,
+};
+
+void __init ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr)
+{
+       if (copy_addr) {
+               memcpy(data->dev_addr,
+                       (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
+       }
+
+       ep93xx_eth_data = *data;
+       platform_device_register(&ep93xx_eth_device);
+}
+
 extern void ep93xx_gpio_init(void);
 
 void __init ep93xx_init_devices(void)
index 97550c0ad7b045adc41a513895687a590d0d75a2..899784f3b7b82fe99613a6a21f17e55d1880536c 100644 (file)
@@ -43,10 +43,16 @@ static struct platform_device edb9302_flash = {
        .resource       = &edb9302_flash_resource,
 };
 
+static struct ep93xx_eth_data edb9302_eth_data = {
+       .phy_id         = 1,
+};
+
 static void __init edb9302_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9302_flash);
+
+       ep93xx_register_eth(&edb9302_eth_data, 1);
 }
 
 MACHINE_START(EDB9302, "Cirrus Logic EDB9302 Evaluation Board")
index 99b01d44bf1cf09fe1577f1d577025301e7e813c..ea7e4eb0cc2d86cb67841964cb88bb2208e0af00 100644 (file)
@@ -47,36 +47,12 @@ static struct ep93xx_eth_data edb9302a_eth_data = {
        .phy_id                 = 1,
 };
 
-static struct resource edb9302a_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device edb9302a_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &edb9302a_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = edb9302a_eth_resource,
-};
-
 static void __init edb9302a_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9302a_flash);
 
-       memcpy(edb9302a_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&edb9302a_eth_device);
+       ep93xx_register_eth(&edb9302a_eth_data, 1);
 }
 
 MACHINE_START(EDB9302A, "Cirrus Logic EDB9302A Evaluation Board")
index 9fb72d01a36c2a9dd868f06536fb962491e9b0a9..7dee28e9d7f9d31e7e9b361fc920eda11d664733 100644 (file)
@@ -47,36 +47,12 @@ static struct ep93xx_eth_data edb9307_eth_data = {
        .phy_id                 = 1,
 };
 
-static struct resource edb9307_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device edb9307_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &edb9307_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = edb9307_eth_resource,
-};
-
 static void __init edb9307_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9307_flash);
 
-       memcpy(edb9307_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&edb9307_eth_device);
+       ep93xx_register_eth(&edb9307_eth_data, 1);
 }
 
 MACHINE_START(EDB9307, "Cirrus Logic EDB9307 Evaluation Board")
index 87267a574f5ea5f5813943f4408cfca5823a5fb1..3f660d1fc9661aa26e19f9b0e4541b3cc5d0cd8e 100644 (file)
@@ -44,10 +44,16 @@ static struct platform_device edb9312_flash = {
        .resource       = &edb9312_flash_resource,
 };
 
+static struct ep93xx_eth_data edb9312_eth_data = {
+       .phy_id                 = 1,
+};
+
 static void __init edb9312_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9312_flash);
+
+       ep93xx_register_eth(&edb9312_eth_data, 1);
 }
 
 MACHINE_START(EDB9312, "Cirrus Logic EDB9312 Evaluation Board")
index 7e373950be4d386fe3cdfe33fce1e8d47413b55a..a1e76c329daaafdb61f8bb13eab8405fbeebf508 100644 (file)
@@ -43,10 +43,16 @@ static struct platform_device edb9315_flash = {
        .resource       = &edb9315_flash_resource,
 };
 
+static struct ep93xx_eth_data edb9315_eth_data = {
+       .phy_id                 = 1,
+};
+
 static void __init edb9315_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9315_flash);
+
+       ep93xx_register_eth(&edb9315_eth_data, 1);
 }
 
 MACHINE_START(EDB9315, "Cirrus Logic EDB9315 Evaluation Board")
index 08a7c9bfb689bc6473052e21b0aeaee9df9b33d2..cbd77bf18aaff36ef60cc274629007106d6beb62 100644 (file)
@@ -47,36 +47,12 @@ static struct ep93xx_eth_data edb9315a_eth_data = {
        .phy_id                 = 1,
 };
 
-static struct resource edb9315a_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device edb9315a_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &edb9315a_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = edb9315a_eth_resource,
-};
-
 static void __init edb9315a_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&edb9315a_flash);
 
-       memcpy(edb9315a_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&edb9315a_eth_device);
+       ep93xx_register_eth(&edb9315a_eth_data, 1);
 }
 
 MACHINE_START(EDB9315A, "Cirrus Logic EDB9315A Evaluation Board")
index 9b41ec1f089e78201f05191f94dc1389ec9f06a9..8a67e53cba61436fe412e46bb381ed90dc8e69a1 100644 (file)
@@ -44,36 +44,15 @@ static struct platform_device gesbc9312_flash = {
 };
 
 static struct ep93xx_eth_data gesbc9312_eth_data = {
-       .phy_id                 = 1,
-};
-
-static struct resource gesbc9312_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device gesbc9312_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &gesbc9312_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = gesbc9312_eth_resource,
+       .phy_id         = 1,
 };
 
 static void __init gesbc9312_init_machine(void)
 {
        ep93xx_init_devices();
        platform_device_register(&gesbc9312_flash);
-       platform_device_register(&gesbc9312_eth_device);
+
+       ep93xx_register_eth(&gesbc9312_eth_data, 0);
 }
 
 MACHINE_START(GESBC9312, "Glomation GESBC-9312-sx")
index b5c182473f5db271fa9a9abbe32a2ae5f38c7580..db2489d3bda74abe02b6af72223e8b9042ffc7b1 100644 (file)
@@ -4,17 +4,17 @@
 
 #ifndef __ASSEMBLY__
 
-void ep93xx_map_io(void);
-void ep93xx_init_irq(void);
-void ep93xx_init_time(unsigned long);
-void ep93xx_init_devices(void);
-extern struct sys_timer ep93xx_timer;
-
 struct ep93xx_eth_data
 {
        unsigned char   dev_addr[6];
        unsigned char   phy_id;
 };
 
+void ep93xx_map_io(void);
+void ep93xx_init_irq(void);
+void ep93xx_init_time(unsigned long);
+void ep93xx_register_eth(struct ep93xx_eth_data *data, int copy_addr);
+void ep93xx_init_devices(void);
+extern struct sys_timer ep93xx_timer;
 
 #endif
index de047a5c811256a4b50835cc7ab06220cfece58a..72c8d44f4ddbe4b3e2b9d2072b2a60fdeb990e5a 100644 (file)
@@ -29,38 +29,9 @@ static struct ep93xx_eth_data micro9_eth_data = {
        .phy_id                 = 0x1f,
 };
 
-static struct resource micro9_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device micro9_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &micro9_eth_data,
-       },
-       .num_resources = ARRAY_SIZE(micro9_eth_resource),
-       .resource       = micro9_eth_resource,
-};
-
-static void __init micro9_eth_init(void)
-{
-       memcpy(micro9_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&micro9_eth_device);
-}
-
 static void __init micro9_init(void)
 {
-       micro9_eth_init();
+       ep93xx_register_eth(&micro9_eth_data, 1);
 }
 
 /*
index c3cbff126d0caa0e32b519fb30de5c0923d0140f..61e7d664fd2212060813233a8baab373abd143a3 100644 (file)
@@ -161,28 +161,6 @@ static struct ep93xx_eth_data ts72xx_eth_data = {
        .phy_id                 = 1,
 };
 
-static struct resource ts72xx_eth_resource[] = {
-       {
-               .start  = EP93XX_ETHERNET_PHYS_BASE,
-               .end    = EP93XX_ETHERNET_PHYS_BASE + 0xffff,
-               .flags  = IORESOURCE_MEM,
-       }, {
-               .start  = IRQ_EP93XX_ETHERNET,
-               .end    = IRQ_EP93XX_ETHERNET,
-               .flags  = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device ts72xx_eth_device = {
-       .name           = "ep93xx-eth",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &ts72xx_eth_data,
-       },
-       .num_resources  = 2,
-       .resource       = ts72xx_eth_resource,
-};
-
 static void __init ts72xx_init_machine(void)
 {
        ep93xx_init_devices();
@@ -190,9 +168,7 @@ static void __init ts72xx_init_machine(void)
                platform_device_register(&ts72xx_flash);
        platform_device_register(&ts72xx_rtc_device);
 
-       memcpy(ts72xx_eth_data.dev_addr,
-               (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
-       platform_device_register(&ts72xx_eth_device);
+       ep93xx_register_eth(&ts72xx_eth_data, 1);
 }
 
 MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")