projects
/
librecmc
/
librecmc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7c7f004
)
ramips: use resource to pass irq and base address to the ethernet driver
author
Gabor Juhos
<juhosg@openwrt.org>
Mon, 26 Oct 2009 17:17:18 +0000
(17:17 +0000)
committer
Gabor Juhos
<juhosg@openwrt.org>
Mon, 26 Oct 2009 17:17:18 +0000
(17:17 +0000)
SVN-Revision: 18166
target/linux/ramips/files/arch/mips/include/asm/mach-ralink/eth.h
patch
|
blob
|
history
target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
patch
|
blob
|
history
target/linux/ramips/files/drivers/net/ramips.c
patch
|
blob
|
history
diff --git
a/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/eth.h
b/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/eth.h
index e5f55d32b53fee3d72e6cc57c2be77a5edfdd626..c228f6f34f3b890b70747f1041f618352ad10533 100644
(file)
--- a/
target/linux/ramips/files/arch/mips/include/asm/mach-ralink/eth.h
+++ b/
target/linux/ramips/files/arch/mips/include/asm/mach-ralink/eth.h
@@
-189,10
+189,8
@@
struct ramips_tx_dma {
struct ramips_eth_platform_data
{
unsigned char mac[6];
struct ramips_eth_platform_data
{
unsigned char mac[6];
- unsigned int base_addr;
void (*reset_fe)(void);
int min_pkt_len;
void (*reset_fe)(void);
int min_pkt_len;
- int irq;
};
struct raeth_priv
};
struct raeth_priv
diff --git
a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
index 6155b9fb604dc70a0b9959ce053a62241b31c850..4956277d864f4d85cfffff127021621384b912c2 100644
(file)
--- a/
target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
+++ b/
target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c
@@
-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 = {
.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
static struct ramips_eth_platform_data ramips_eth_data = {
.mac = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 },
- .base_addr = RT305X_FE_BASE,
- .irq = RT305X_CPU_IRQ_FE,
.reset_fe = rt305x_fe_reset,
.min_pkt_len = 64
};
static struct platform_device rt305x_eth_device = {
.reset_fe = rt305x_fe_reset,
.min_pkt_len = 64
};
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,
}
};
}
};
diff --git
a/target/linux/ramips/files/drivers/net/ramips.c
b/target/linux/ramips/files/drivers/net/ramips.c
index ae47230b7cb687411ff66ff6415150112a97f97a..4975adc77bd9c44c9ed1612b666184258064ee61 100644
(file)
--- a/
target/linux/ramips/files/drivers/net/ramips.c
+++ b/
target/linux/ramips/files/drivers/net/ramips.c
@@
-338,6
+338,7
@@
ramips_eth_plat_probe(struct platform_device *plat)
{
struct raeth_priv *priv;
struct ramips_eth_platform_data *data = plat->dev.platform_data;
{
struct raeth_priv *priv;
struct ramips_eth_platform_data *data = plat->dev.platform_data;
+ struct resource *res;
int err;
if (!data) {
int err;
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)
return -ENOMEM;
if(!ramips_fe_base)
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->base_addr = (unsigned long)ramips_fe_base;
ramips_dev->init = ramips_eth_probe;
ramips_dev->addr_len = ETH_ALEN;
ramips_dev->base_addr = (unsigned long)ramips_fe_base;
ramips_dev->init = ramips_eth_probe;