brcm47xx: b44: fix some problems with the phy
[openwrt.git] / target / linux / brcm47xx / patches-3.10 / 210-b44_phy_fix.patch
index 8cf4b0f..1cafb86 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/ethernet/broadcom/b44.c
 +++ b/drivers/net/ethernet/broadcom/b44.c
-@@ -410,10 +410,34 @@ static void b44_wap54g10_workaround(stru
+@@ -429,10 +429,34 @@ static void b44_wap54g10_workaround(stru
  error:
        pr_warning("PHY: cannot reset MII transceiver isolate bit\n");
  }
 +
 +      /* Toshiba WRC-1000, Siemens SE505 v1, Askey RT-210W, RT-220W */
 +      if (sdev->bus->sprom.board_num == 100) {
-+              bp->phy_addr = B44_PHY_ADDR_NO_PHY;
++              bp->phy_addr = B44_PHY_ADDR_NO_LOACL_PHY;
 +      } else {
 +              /* WL-HDD */
 +              if (bcm47xx_nvram_getenv("hardware_version", buf, sizeof(buf)) >= 0 &&
 +                  !strncmp(buf, "WL300-", strlen("WL300-"))) {
 +                      if (sdev->bus->sprom.et0phyaddr == 0 &&
 +                          sdev->bus->sprom.et1phyaddr == 1)
-+                              bp->phy_addr = B44_PHY_ADDR_NO_PHY;
++                              bp->phy_addr = B44_PHY_ADDR_NO_LOACL_PHY;
 +              }
 +      }
 +      return;
  #endif
  
  static int b44_setup_phy(struct b44 *bp)
-@@ -422,6 +446,7 @@ static int b44_setup_phy(struct b44 *bp)
+@@ -441,6 +465,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)
+       if (bp->phy_addr == B44_PHY_ADDR_NO_LOACL_PHY)
                return 0;
-@@ -2101,6 +2126,8 @@ static int b44_get_invariants(struct b44
+@@ -2158,6 +2183,8 @@ static int b44_get_invariants(struct b44
         * valid PHY address. */
        bp->phy_addr &= 0x1F;