aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-07-15 19:45:43 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-07-15 19:45:43 +0000
commitc2ebadc50466d4b1cd177981b8ca2c664258dfd8 (patch)
treea4266cb933d22790a9737fd4744b42e541b6f80f
parent0d8c036e56d462a0aa77f1ab410dcf1c38130aec (diff)
downloadupstream-c2ebadc50466d4b1cd177981b8ca2c664258dfd8.tar.gz
upstream-c2ebadc50466d4b1cd177981b8ca2c664258dfd8.tar.bz2
upstream-c2ebadc50466d4b1cd177981b8ca2c664258dfd8.zip
ramips: add generic ethernet device for the RT288x
SVN-Revision: 22212
-rw-r--r--target/linux/ramips/files/arch/mips/ralink/rt288x/devices.c41
-rw-r--r--target/linux/ramips/files/arch/mips/ralink/rt288x/devices.h3
2 files changed, 44 insertions, 0 deletions
diff --git a/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.c b/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.c
index 086d9a999f..3b575f6208 100644
--- a/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.c
+++ b/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.c
@@ -13,11 +13,13 @@
#include <linux/platform_device.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/physmap.h>
+#include <linux/etherdevice.h>
#include <asm/addrspace.h>
#include <asm/mach-ralink/rt288x.h>
#include <asm/mach-ralink/rt288x_regs.h>
+#include <asm/mach-ralink/ramips_eth_platform.h>
#include "devices.h"
@@ -122,3 +124,42 @@ void __init rt288x_register_wifi(void)
{
platform_device_register(&rt288x_wifi_device);
}
+
+static void rt288x_fe_reset(void)
+{
+ rt288x_sysc_wr(RT2880_RESET_FE, SYSC_REG_RESET_CTRL);
+}
+
+static struct resource rt288x_eth_resources[] = {
+ {
+ .start = RT2880_FE_BASE,
+ .end = RT2880_FE_BASE + PAGE_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ }, {
+ .start = RT288X_CPU_IRQ_FE,
+ .end = RT288X_CPU_IRQ_FE,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+struct ramips_eth_platform_data rt288x_eth_data;
+static struct platform_device rt288x_eth_device = {
+ .name = "ramips_eth",
+ .resource = rt288x_eth_resources,
+ .num_resources = ARRAY_SIZE(rt288x_eth_resources),
+ .dev = {
+ .platform_data = &rt288x_eth_data,
+ }
+};
+
+void __init rt288x_register_ethernet(void)
+{
+ rt288x_eth_data.sys_freq = rt288x_sys_freq;
+ rt288x_eth_data.reset_fe = rt288x_fe_reset;
+ rt288x_eth_data.min_pkt_len = 64;
+
+ if (!is_valid_ether_addr(rt288x_eth_data.mac))
+ random_ether_addr(rt288x_eth_data.mac);
+
+ platform_device_register(&rt288x_eth_device);
+}
diff --git a/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.h b/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.h
index 78daf3ad07..6bd2d3f90c 100644
--- a/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.h
+++ b/target/linux/ramips/files/arch/mips/ralink/rt288x/devices.h
@@ -18,4 +18,7 @@ extern void rt288x_register_flash(unsigned int id,
struct physmap_flash_data *pdata) __init;
void rt288x_register_wifi(void) __init;
+extern struct ramips_eth_platform_data rt288x_eth_data;
+void rt288x_register_ethernet(void) __init;
+
#endif /* __ASM_MACH_RT288X_PLATFORM_H */