From e04819fe321531e6d07cb0b378f938e3c7063a1a Mon Sep 17 00:00:00 2001 From: John Crispin Date: Tue, 24 Jul 2012 20:38:36 +0000 Subject: [PATCH] [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 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32820 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches-3.3/185-mi424wr_support.patch | 49 ++++++++++++++++--- 1 file 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]); ++ } +} + +