ramips: use resource to pass irq and base address to the ethernet driver
SVN-Revision: 18166
This commit is contained in:
parent
7c7f004875
commit
69a3298ab5
@ -189,10 +189,8 @@ struct ramips_tx_dma {
|
|||||||
struct ramips_eth_platform_data
|
struct ramips_eth_platform_data
|
||||||
{
|
{
|
||||||
unsigned char mac[6];
|
unsigned char mac[6];
|
||||||
unsigned int base_addr;
|
|
||||||
void (*reset_fe)(void);
|
void (*reset_fe)(void);
|
||||||
int min_pkt_len;
|
int min_pkt_len;
|
||||||
int irq;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct raeth_priv
|
struct raeth_priv
|
||||||
|
@ -103,18 +103,30 @@ static void rt305x_fe_reset(void)
|
|||||||
rt305x_sysc_wr(0, RAMIPS_FE_RESET);
|
rt305x_sysc_wr(0, RAMIPS_FE_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct resource rt305x_eth_resources[] = {
|
||||||
|
{
|
||||||
|
.start = RT305X_FE_BASE,
|
||||||
|
.end = RT305X_FE_BASE + PAGE_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
}, {
|
||||||
|
.start = RT305X_CPU_IRQ_FE,
|
||||||
|
.end = RT305X_CPU_IRQ_FE,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct ramips_eth_platform_data ramips_eth_data = {
|
static struct ramips_eth_platform_data ramips_eth_data = {
|
||||||
.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
|
.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
|
||||||
.base_addr = RT305X_FE_BASE,
|
|
||||||
.irq = RT305X_CPU_IRQ_FE,
|
|
||||||
.reset_fe = rt305x_fe_reset,
|
.reset_fe = rt305x_fe_reset,
|
||||||
.min_pkt_len = 64
|
.min_pkt_len = 64
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device rt305x_eth_device = {
|
static struct platform_device rt305x_eth_device = {
|
||||||
.name = "ramips_eth",
|
.name = "ramips_eth",
|
||||||
|
.resource = rt305x_eth_resources,
|
||||||
|
.num_resources = ARRAY_SIZE(rt305x_eth_resources),
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = (void *) &ramips_eth_data,
|
.platform_data = &ramips_eth_data,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -338,6 +338,7 @@ ramips_eth_plat_probe(struct platform_device *plat)
|
|||||||
{
|
{
|
||||||
struct raeth_priv *priv;
|
struct raeth_priv *priv;
|
||||||
struct ramips_eth_platform_data *data = plat->dev.platform_data;
|
struct ramips_eth_platform_data *data = plat->dev.platform_data;
|
||||||
|
struct resource *res;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
@ -345,7 +346,13 @@ ramips_eth_plat_probe(struct platform_device *plat)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ramips_fe_base = ioremap_nocache(data->base_addr, PAGE_SIZE);
|
res = platform_get_resource(plat, IORESOURCE_MEM, 0);
|
||||||
|
if (!res) {
|
||||||
|
dev_err(&plat->dev, "no memory resource found\n");
|
||||||
|
return -ENXIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
ramips_fe_base = ioremap_nocache(res->start, res->end - res->start + 1);
|
||||||
if(!ramips_fe_base)
|
if(!ramips_fe_base)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
@ -357,7 +364,12 @@ ramips_eth_plat_probe(struct platform_device *plat)
|
|||||||
}
|
}
|
||||||
|
|
||||||
strcpy(ramips_dev->name, "eth%d");
|
strcpy(ramips_dev->name, "eth%d");
|
||||||
ramips_dev->irq = data->irq;
|
ramips_dev->irq = platform_get_irq(plat, 0);
|
||||||
|
if (ramips_dev->irq < 0) {
|
||||||
|
dev_err(&plat->dev, "no IRQ resource found\n");
|
||||||
|
err = -ENXIO;
|
||||||
|
goto err_free_dev;
|
||||||
|
}
|
||||||
ramips_dev->addr_len = ETH_ALEN;
|
ramips_dev->addr_len = ETH_ALEN;
|
||||||
ramips_dev->base_addr = (unsigned long)ramips_fe_base;
|
ramips_dev->base_addr = (unsigned long)ramips_fe_base;
|
||||||
ramips_dev->init = ramips_eth_probe;
|
ramips_dev->init = ramips_eth_probe;
|
||||||
|
Loading…
Reference in New Issue
Block a user