Skip to content

Commit

Permalink
[ARM] 5273/2: ep93xx: move ethernet support into core.c
Browse files Browse the repository at this point in the history
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 edb9302, edb9312, and
edb9315 platforms.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Hartley Sweeten authored and Russell King committed Oct 4, 2008
1 parent 92e88aa commit a0a08fd
Show file tree
Hide file tree
Showing 12 changed files with 68 additions and 185 deletions.
26 changes: 1 addition & 25 deletions arch/arm/mach-ep93xx/adssphere.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
35 changes: 35 additions & 0 deletions arch/arm/mach-ep93xx/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-ep93xx/edb9302.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
26 changes: 1 addition & 25 deletions arch/arm/mach-ep93xx/edb9302a.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
26 changes: 1 addition & 25 deletions arch/arm/mach-ep93xx/edb9307.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-ep93xx/edb9312.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-ep93xx/edb9315.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
26 changes: 1 addition & 25 deletions arch/arm/mach-ep93xx/edb9315a.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
27 changes: 3 additions & 24 deletions arch/arm/mach-ep93xx/gesbc9312.c
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
12 changes: 6 additions & 6 deletions arch/arm/mach-ep93xx/include/mach/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
31 changes: 1 addition & 30 deletions arch/arm/mach-ep93xx/micro9.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

/*
Expand Down
26 changes: 1 addition & 25 deletions arch/arm/mach-ep93xx/ts72xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,38 +161,14 @@ 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();
if (board_is_ts7200())
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")
Expand Down

0 comments on commit a0a08fd

Please sign in to comment.