diff options
Diffstat (limited to 'target/linux/brcm47xx/patches-2.6.34/210-b44_phy_fix.patch')
-rw-r--r-- | target/linux/brcm47xx/patches-2.6.34/210-b44_phy_fix.patch | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/target/linux/brcm47xx/patches-2.6.34/210-b44_phy_fix.patch b/target/linux/brcm47xx/patches-2.6.34/210-b44_phy_fix.patch deleted file mode 100644 index a1b322464..000000000 --- a/target/linux/brcm47xx/patches-2.6.34/210-b44_phy_fix.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- a/drivers/net/b44.c -+++ b/drivers/net/b44.c -@@ -381,11 +381,12 @@ static void b44_set_flow_ctrl(struct b44 - __b44_set_flow_ctrl(bp, pause_enab); - } - --#ifdef SSB_DRIVER_MIPS --extern char *nvram_get(char *name); -+#ifdef CONFIG_BCM47XX -+ -+#include <asm/mach-bcm47xx/nvram.h> - static void b44_wap54g10_workaround(struct b44 *bp) - { -- const char *str; -+ char buf[20]; - u32 val; - int err; - -@@ -394,10 +395,9 @@ static void b44_wap54g10_workaround(stru - * see https://dev.openwrt.org/ticket/146 - * check and reset bit "isolate" - */ -- str = nvram_get("boardnum"); -- if (!str) -+ if (nvram_getenv("boardnum", buf, sizeof(buf)) > 0) - return; -- if (simple_strtoul(str, NULL, 0) == 2) { -+ if (simple_strtoul(buf, NULL, 0) == 2) { - err = __b44_readphy(bp, 0, MII_BMCR, &val); - if (err) - goto error; -@@ -412,10 +412,43 @@ static void b44_wap54g10_workaround(stru - error: - pr_warning("PHY: cannot reset MII transceiver isolate bit\n"); - } -+ -+static inline int startswith (const char *source, const char *cmp) -+{ -+ return !strncmp(source,cmp,strlen(cmp)); -+} -+ -+static inline void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+ char buf[20]; -+ /* Toshiba WRC-1000, Siemens SE505 v1, Askey RT-210W, RT-220W */ -+ if (nvram_getenv("boardnum", buf, sizeof(buf)) > 0) -+ return; -+ if (simple_strtoul(buf, NULL, 0) == 100) { -+ bp->phy_addr = B44_PHY_ADDR_NO_PHY; -+ } else { -+ /* WL-HDD */ -+ struct ssb_device *sdev = bp->sdev; -+ if (nvram_getenv("hardware_version", buf, sizeof(buf)) > 0) -+ return; -+ if (startswith(buf, "WL300-")) { -+ if (sdev->bus->sprom.et0phyaddr == 0 && -+ sdev->bus->sprom.et1phyaddr == 1) -+ bp->phy_addr = B44_PHY_ADDR_NO_PHY; -+ } -+ } -+ return; -+} -+ - #else -+ - static inline void b44_wap54g10_workaround(struct b44 *bp) - { - } -+ -+static inline void b44_bcm47xx_workarounds(struct b44 *bp) -+{ -+} - #endif - - static int b44_setup_phy(struct b44 *bp) -@@ -424,6 +457,7 @@ static int b44_setup_phy(struct b44 *bp) - int err; - - b44_wap54g10_workaround(bp); -+ b44_bcm47xx_workarounds(bp); - - if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) - return 0; -@@ -2080,6 +2114,8 @@ static int __devinit b44_get_invariants( - * valid PHY address. */ - bp->phy_addr &= 0x1F; - -+ b44_bcm47xx_workarounds(bp); -+ - memcpy(bp->dev->dev_addr, addr, 6); - - if (!is_valid_ether_addr(&bp->dev->dev_addr[0])){ |