Changeset 2932


Ignore:
Timestamp:
2006-01-12T12:30:06+01:00 (12 years ago)
Author:
florian
Message:

Merged WAP54G v1.0 workaround, closes #205

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/openwrt/target/linux/brcm-2.6/patches/004-b44_bcm47xx_support.patch

    r2929 r2932  
    1 diff -urN linux.old/drivers/net/b44.c linux.dev/drivers/net/b44.c 
    2 --- linux.old/drivers/net/b44.c 2006-01-12 01:44:42.548326000 +0100 
    3 +++ linux.dev/drivers/net/b44.c 2006-01-12 03:07:38.209775500 +0100 
     1diff -urN orig/linux-2.6.15/drivers/net/b44.c linux-2.6.15/drivers/net/b44.c 
     2--- orig/linux-2.6.15/drivers/net/b44.c 2006-01-03 04:21:10.000000000 +0100 
     3+++ linux-2.6.15/drivers/net/b44.c      2006-01-12 12:22:58.760883688 +0100 
    44@@ -1,7 +1,9 @@ 
    55-/* b44.c: Broadcom 4400 device driver. 
     
    157157        if (err) 
    158158                return err; 
    159 @@ -439,6 +478,8 @@ 
     159@@ -439,6 +478,30 @@ 
    160160        u32 val; 
    161161        int err; 
    162162  
     163+#ifdef CONFIG_BCM947XX 
     164+       if (bp->pdev->device == PCI_DEVICE_ID_BCM4713) { 
     165+               /* 
     166+                * workaround for bad hardware design in Linksys WAP54G v1.0 
     167+                * see https://dev.openwrt.org/ticket/146 
     168+                * check and reset bit "isolate" 
     169+                */ 
     170+               if (!strcmp(nvram_get("boardnum"), "2\r")) { 
     171+                       u32 val; 
     172+                       if (__b44_readphy(bp, 0, MII_BMCR, &val) != 0) { 
     173+                               printk(KERN_WARNING PFX "%s: PHY WAP54G: cannot access PHY.\n",  
     174+                                       bp->dev->name); 
     175+                       } else if (val & BMCR_ISOLATE) { 
     176+                               printk(KERN_INFO PFX "%s: PHY WAP54G: resetting isolate bit.\n", 
     177+                                       bp->dev->name); 
     178+                               if (__b44_writephy(bp, 0, MII_BMCR, val & ~BMCR_ISOLATE) != 0) 
     179+                                       printk(KERN_WARNING PFX "PHY WAP54G: cannot reset isolate bit.\n"); 
     180+                       } 
     181+               } 
     182+       } 
     183+#endif 
     184+ 
    163185+       if (bp->phy_addr == B44_PHY_ADDR_NO_PHY) 
    164186+               return 0; 
     
    166188                goto out; 
    167189        if ((err = b44_writephy(bp, B44_MII_ALEDCTRL, 
    168 @@ -534,6 +575,19 @@ 
     190@@ -534,6 +597,19 @@ 
    169191 { 
    170192        u32 bmsr, aux; 
     
    186208            !b44_readphy(bp, B44_MII_AUXCTRL, &aux) && 
    187209            (bmsr != 0xffff)) { 
    188 @@ -1281,9 +1335,10 @@ 
     210@@ -1281,9 +1357,10 @@ 
    189211                bw32(bp, B44_DMARX_CTRL, 0); 
    190212                bp->rx_prod = bp->rx_cons = 0; 
     
    200222  
    201223        ssb_core_reset(bp); 
    202 @@ -1291,8 +1346,14 @@ 
     224@@ -1291,8 +1368,14 @@ 
    203225        b44_clear_stats(bp); 
    204226  
     
    216238  
    217239        if (!(br32(bp, B44_DEVCTRL) & DEVCTRL_IPP)) { 
    218 @@ -1834,18 +1895,297 @@ 
     240@@ -1834,18 +1917,297 @@ 
    219241        .get_perm_addr          = ethtool_op_get_perm_addr, 
    220242 }; 
     
    518540        return err; 
    519541 } 
    520 @@ -1865,22 +2205,43 @@ 
     542@@ -1865,22 +2227,43 @@ 
    521543 static int __devinit b44_get_invariants(struct b44 *bp) 
    522544 { 
     
    576598         * hardware, we'll land the ethernet header on a 2-byte boundary. 
    577599         */ 
    578 @@ -1889,11 +2250,7 @@ 
     600@@ -1889,11 +2272,7 @@ 
    579601        bp->imask = IMASK_DEF; 
    580602  
     
    588610        return err; 
    589611 } 
    590 @@ -2032,11 +2389,17 @@ 
     612@@ -2032,11 +2411,17 @@ 
    591613  
    592614        pci_save_state(bp->pdev); 
     
    607629  
    608630 err_out_iounmap: 
    609 diff -urN linux.old/drivers/net/b44.h linux.dev/drivers/net/b44.h 
    610 --- linux.old/drivers/net/b44.h 2006-01-12 01:44:42.548326000 +0100 
    611 +++ linux.dev/drivers/net/b44.h 2006-01-12 02:55:06.290783500 +0100 
     631diff -urN orig/linux-2.6.15/drivers/net/b44.h linux-2.6.15/drivers/net/b44.h 
     632--- orig/linux-2.6.15/drivers/net/b44.h 2006-01-03 04:21:10.000000000 +0100 
     633+++ linux-2.6.15/drivers/net/b44.h      2006-01-12 12:16:02.403179680 +0100 
    612634@@ -292,6 +292,10 @@ 
    613635 #define SSB_PCI_MASK1          0xfc000000 
Note: See TracChangeset for help on using the changeset viewer.