diff options
author | John Crispin <blogic@openwrt.org> | 2009-10-24 20:58:41 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2009-10-24 20:58:41 +0000 |
commit | d87fd1b74fc633b4e41792badec5bc50fd4f23ab (patch) | |
tree | 0c34228ceba1bcbe80e89b75a6ca42b1a8f6f7e5 /target/linux/ramips/files/arch/mips | |
parent | e52ca012a7741bae95befbcc19b1e84c26ffc32f (diff) | |
download | upstream-d87fd1b74fc633b4e41792badec5bc50fd4f23ab.tar.gz upstream-d87fd1b74fc633b4e41792badec5bc50fd4f23ab.tar.bz2 upstream-d87fd1b74fc633b4e41792badec5bc50fd4f23ab.zip |
[ramips] make ethernet a platform device
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@18135 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ramips/files/arch/mips')
3 files changed, 42 insertions, 2 deletions
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 d468967884..27cf6dffff 100644 --- 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 @@ -21,6 +21,8 @@ #define RAMIPS_ETH_H #include <linux/mii.h> +#include <linux/interrupt.h> +#include <linux/netdevice.h> #define NUM_RX_DESC 256 #define NUM_TX_DESC 256 @@ -35,7 +37,6 @@ #define RAMIPS_FE_RESET 0x34 #define RAMIPS_FE_RESET_BIT BIT(21) - /* interrupt bitd */ #define RAMIPS_CNT_PPE_AF BIT(31) #define RAMIPS_CNT_GDM_AF BIT(29) @@ -161,7 +162,6 @@ #define RAMIPS_US_CYC_CNT_SHIFT 0x8 #define RAMIPS_US_CYC_CNT_DIVISOR 1000000 - #define RX_DMA_PLEN0(x) ((x >> 16) & 0x3fff) #define RX_DMA_LSO BIT(30) #define RX_DMA_DONE BIT(31) @@ -187,6 +187,15 @@ struct ramips_tx_dma { unsigned int txd4; }; +struct ramips_eth_platform_data +{ + unsigned char mac[6]; + unsigned int base_addr; + void (*reset_fe)(void); + int min_pkt_len; + int irq; +}; + struct raeth_priv { unsigned int phy_rx; @@ -199,6 +208,8 @@ struct raeth_priv unsigned int skb_free_idx; struct net_device_stats stat; + + struct ramips_eth_platform_data *plat; }; #endif 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 5dd1022b97..6155b9fb60 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.c @@ -19,6 +19,8 @@ #include <asm/mach-ralink/rt305x_regs.h> #include "devices.h" +#include <eth.h> + static struct resource rt305x_flash0_resources[] = { { .flags = IORESOURCE_MEM, @@ -94,3 +96,29 @@ void __init rt305x_register_flash(unsigned int id, platform_device_register(pdev); rt305x_flash_instance++; } + +static void rt305x_fe_reset(void) +{ + rt305x_sysc_wr(RAMIPS_FE_RESET_BIT, RAMIPS_FE_RESET); + rt305x_sysc_wr(0, RAMIPS_FE_RESET); +} + +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 = { + .name = "ramips_eth", + .dev = { + .platform_data = (void *) &ramips_eth_data, + } +}; + +void __init rt305x_register_ethernet(void) +{ + platform_device_register(&rt305x_eth_device); +} diff --git a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h index 0a90b3a4e1..3d6210e0ed 100644 --- a/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h +++ b/target/linux/ramips/files/arch/mips/ralink/rt305x/devices.h @@ -15,6 +15,7 @@ struct physmap_flash_data; extern void rt305x_register_flash(unsigned int id, struct physmap_flash_data *pdata) __init; +extern void rt305x_register_ethernet(void); #endif /* __RT305X_DEVICES_H */ |