diff options
author | John Crispin <blogic@openwrt.org> | 2012-07-24 20:38:36 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2012-07-24 20:38:36 +0000 |
commit | e04819fe321531e6d07cb0b378f938e3c7063a1a (patch) | |
tree | 8fa6646858c9e63313410d966a9390230a7e0514 | |
parent | 0e8ecb48249b6e5e1343a8ff92682ebca768cfcc (diff) | |
download | upstream-e04819fe321531e6d07cb0b378f938e3c7063a1a.tar.gz upstream-e04819fe321531e6d07cb0b378f938e3c7063a1a.tar.bz2 upstream-e04819fe321531e6d07cb0b378f938e3c7063a1a.zip |
[ixp4xx] MI424WR - add rev D support
Add support for revision D of the MI424WR.
Rev D swaps LAN & WAN ports so this patch maintains
eth0 for LAN and eth1 for WAN. For details on rev D usage,
see http://wiki.openwrt.org/toh/actiontec/mi424wr
Signed-off-by: Jose Vasconcellos <jvasco@verizon.net>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32820 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | target/linux/ixp4xx/patches-3.3/185-mi424wr_support.patch | 49 |
1 files changed, 42 insertions, 7 deletions
diff --git a/target/linux/ixp4xx/patches-3.3/185-mi424wr_support.patch b/target/linux/ixp4xx/patches-3.3/185-mi424wr_support.patch index 7228860015..08ad726407 100644 --- a/target/linux/ixp4xx/patches-3.3/185-mi424wr_support.patch +++ b/target/linux/ixp4xx/patches-3.3/185-mi424wr_support.patch @@ -74,7 +74,7 @@ + --- /dev/null +++ b/arch/arm/mach-ixp4xx/mi424wr-setup.c -@@ -0,0 +1,345 @@ +@@ -0,0 +1,380 @@ +/* + * arch/arm/mach-ixp4xx/mi424wr-setup.c + * @@ -350,13 +350,13 @@ + .dev.platform_data = &mi424wr_spi_bus_data, +}; + -+static struct eth_plat_info mi424wr_npeb_data = { ++static struct eth_plat_info mi424wr_wan_data = { + .phy = 17, /* KS8721 */ + .rxq = 3, + .txreadyq = 20, +}; + -+static struct eth_plat_info mi424wr_npec_data = { ++static struct eth_plat_info mi424wr_lan_data = { + .phy = IXP4XX_ETH_PHY_MAX_ADDR, + .phy_mask = 0x1e, /* ports 1-4 of the KS8995 switch */ + .rxq = 4, @@ -367,11 +367,36 @@ + { + .name = "ixp4xx_eth", + .id = IXP4XX_ETH_NPEC, -+ .dev.platform_data = &mi424wr_npec_data, ++ .dev.platform_data = &mi424wr_lan_data, + }, { + .name = "ixp4xx_eth", + .id = IXP4XX_ETH_NPEB, -+ .dev.platform_data = &mi424wr_npeb_data, ++ .dev.platform_data = &mi424wr_wan_data, ++ } ++}; ++ ++static struct eth_plat_info mi424wr_wanD_data = { ++ .phy = 5, ++ .rxq = 4, ++ .txreadyq = 21, ++}; ++ ++static struct eth_plat_info mi424wr_lanD_data = { ++ .phy = IXP4XX_ETH_PHY_MAX_ADDR, ++ .phy_mask = 0x1e, /* ports 1-4 of the KS8995 switch */ ++ .rxq = 3, ++ .txreadyq = 20, ++}; ++ ++static struct platform_device mi424wr_npeD_devices[] = { ++ { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEB, ++ .dev.platform_data = &mi424wr_lanD_data, ++ }, { ++ .name = "ixp4xx_eth", ++ .id = IXP4XX_ETH_NPEC, ++ .dev.platform_data = &mi424wr_wanD_data, + } +}; + @@ -381,8 +406,6 @@ + &mi424wr_gpio_leds, + &mi424wr_latch_leds, + &mi424wr_spi_bus, -+ &mi424wr_npe_devices[0], -+ &mi424wr_npe_devices[1], +}; + +static void __init mi424wr_init(void) @@ -405,6 +428,18 @@ + __raw_writew(latch_value, iobase); + + platform_add_devices(mi424wr_devices, ARRAY_SIZE(mi424wr_devices)); ++ ++ /* Need to figure out how to detect revD. ++ * Look for a revision argument sent by redboot. ++ */ ++#define revD 4 ++ if (system_rev == revD) { ++ platform_device_register(&mi424wr_npeD_devices[0]); ++ platform_device_register(&mi424wr_npeD_devices[1]); ++ } else { ++ platform_device_register(&mi424wr_npe_devices[0]); ++ platform_device_register(&mi424wr_npe_devices[1]); ++ } +} + + |