Changeset 42021


Ignore:
Timestamp:
2014-08-07T00:02:14+02:00 (3 years ago)
Author:
hauke
Message:

BB: mac80211: b43: update b43 to version master-2014-07-29-1

This add 5GHz support for N-PHY to b43, thanks Rafał Miłecki.

b43_wflush16 was put into an extra function because it is pretty big in asm.

Signed-off-by: Hauke Mehrtens <hauke@…>

backport: r41900

Location:
branches/barrier_breaker/package/kernel/mac80211/patches
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/barrier_breaker/package/kernel/mac80211/patches/800-b43-backports-form-wireless-testing-master-master-20.patch

    r41805 r42021  
    11backport b43 patches from wireless testing 
    22 
    3 This brings b43 up to wireless-testing/master master-2014-07-15 
     3This brings b43 up to wireless-testing/master master-2014-07-29-1 
    44 
    55--- a/drivers/net/wireless/b43/main.c 
     
    2727  
    2828 #define CHAN4G(_channel, _flags) {                             \ 
    29 @@ -331,6 +338,14 @@ static struct ieee80211_supported_band b 
     29@@ -283,6 +290,14 @@ static struct ieee80211_channel b43_5ghz 
     30        CHAN5G(182, 0), 
     31 }; 
     32  
     33+static struct ieee80211_channel b43_5ghz_nphy_chantable_limited[] = { 
     34+       CHAN5G(36, 0),          CHAN5G(40, 0), 
     35+       CHAN5G(44, 0),          CHAN5G(48, 0), 
     36+       CHAN5G(149, 0),         CHAN5G(153, 0), 
     37+       CHAN5G(157, 0),         CHAN5G(161, 0), 
     38+       CHAN5G(165, 0), 
     39+}; 
     40+ 
     41 static struct ieee80211_channel b43_5ghz_aphy_chantable[] = { 
     42        CHAN5G(34, 0),          CHAN5G(36, 0), 
     43        CHAN5G(38, 0),          CHAN5G(40, 0), 
     44@@ -315,6 +330,14 @@ static struct ieee80211_supported_band b 
     45        .n_bitrates     = b43_a_ratetable_size, 
     46 }; 
     47  
     48+static struct ieee80211_supported_band b43_band_5GHz_nphy_limited = { 
     49+       .band           = IEEE80211_BAND_5GHZ, 
     50+       .channels       = b43_5ghz_nphy_chantable_limited, 
     51+       .n_channels     = ARRAY_SIZE(b43_5ghz_nphy_chantable_limited), 
     52+       .bitrates       = b43_a_ratetable, 
     53+       .n_bitrates     = b43_a_ratetable_size, 
     54+}; 
     55+ 
     56 static struct ieee80211_supported_band b43_band_5GHz_aphy = { 
     57        .band           = IEEE80211_BAND_5GHZ, 
     58        .channels       = b43_5ghz_aphy_chantable, 
     59@@ -331,6 +354,14 @@ static struct ieee80211_supported_band b 
    3060        .n_bitrates     = b43_g_ratetable_size, 
    3161 }; 
     
    4272 static int b43_wireless_core_init(struct b43_wldev *dev); 
    4373 static struct b43_wldev * b43_wireless_core_stop(struct b43_wldev *dev); 
    44 @@ -2201,52 +2216,82 @@ err_format: 
     74@@ -2201,52 +2232,82 @@ err_format: 
    4575        return -EPROTO; 
    4676 } 
     
    160190        if (err) 
    161191                goto err_load; 
    162 @@ -2268,117 +2313,121 @@ static int b43_try_request_fw(struct b43 
     192@@ -2268,117 +2329,121 @@ static int b43_try_request_fw(struct b43 
    163193                goto err_load; 
    164194  
     
    346376        if (err) 
    347377                goto err_load; 
    348 @@ -2915,6 +2964,45 @@ void b43_mac_phy_clock_set(struct b43_wl 
     378@@ -2915,6 +2980,46 @@ void b43_mac_phy_clock_set(struct b43_wl 
    349379        } 
    350380 } 
     
    355385+       u16 chip_id = dev->dev->chip_id; 
    356386+ 
    357 +       if (chip_id == BCMA_CHIP_ID_BCM43217 || 
     387+       if (chip_id == BCMA_CHIP_ID_BCM43131 || 
     388+           chip_id == BCMA_CHIP_ID_BCM43217 || 
    358389+           chip_id == BCMA_CHIP_ID_BCM43222 || 
    359390+           chip_id == BCMA_CHIP_ID_BCM43224 || 
     
    392423 { 
    393424        struct b43_wl *wl = dev->wl; 
    394 @@ -3742,7 +3830,9 @@ static int b43_switch_band(struct b43_wl 
     425@@ -3742,7 +3847,9 @@ static int b43_switch_band(struct b43_wl 
    395426        b43dbg(dev->wl, "Switching to %s GHz band\n", 
    396427               band_to_string(chan->band)); 
     
    403434        phy->gmode = gmode; 
    404435        b43_phy_put_into_reset(dev); 
    405 @@ -3796,38 +3886,29 @@ static void b43_set_retry_limits(struct 
     436@@ -3796,38 +3903,29 @@ static void b43_set_retry_limits(struct 
    406437 static int b43_op_config(struct ieee80211_hw *hw, u32 changed) 
    407438 { 
     
    456487        if (changed & IEEE80211_CONF_CHANGE_RETRY_LIMITS) 
    457488                b43_set_retry_limits(dev, conf->short_frame_max_tx_count, 
    458 @@ -3836,11 +3917,6 @@ static int b43_op_config(struct ieee8021 
     489@@ -3836,11 +3934,6 @@ static int b43_op_config(struct ieee8021 
    459490        if (!changed) 
    460491                goto out_mac_enable; 
     
    468499  
    469500        /* Adjust the desired TX power level. */ 
    470 @@ -3876,12 +3952,8 @@ static int b43_op_config(struct ieee8021 
     501@@ -3876,12 +3969,8 @@ static int b43_op_config(struct ieee8021 
    471502  
    472503 out_mac_enable: 
     
    481512 } 
    482513  
    483 @@ -4307,13 +4379,15 @@ static char *b43_phy_name(struct b43_wld 
     514@@ -4307,13 +4396,15 @@ static char *b43_phy_name(struct b43_wld 
    484515 static int b43_phy_versioning(struct b43_wldev *dev) 
    485516 { 
     
    498529  
    499530        /* Get PHY versioning */ 
    500 @@ -4321,23 +4395,23 @@ static int b43_phy_versioning(struct b43 
     531@@ -4321,23 +4412,23 @@ static int b43_phy_versioning(struct b43 
    501532        analog_type = (tmp & B43_PHYVER_ANALOG) >> B43_PHYVER_ANALOG_SHIFT; 
    502533        phy_type = (tmp & B43_PHYVER_TYPE) >> B43_PHYVER_TYPE_SHIFT; 
     
    532563                break; 
    533564 #endif 
    534 @@ -4372,7 +4446,17 @@ static int b43_phy_versioning(struct b43 
     565@@ -4372,7 +4463,17 @@ static int b43_phy_versioning(struct b43 
    535566                analog_type, phy_type, b43_phy_name(dev, phy_type), phy_rev); 
    536567  
     
    551582  
    552583                for (tmp = 0; tmp < 3; tmp++) { 
    553 @@ -4380,12 +4464,10 @@ static int b43_phy_versioning(struct b43 
     584@@ -4380,12 +4481,10 @@ static int b43_phy_versioning(struct b43 
    554585                        radio24[tmp] = b43_read16(dev, B43_MMIO_RADIO24_DATA); 
    555586                } 
     
    566597                if (dev->dev->chip_id == 0x4317) { 
    567598                        if (dev->dev->chip_rev == 0) 
    568 @@ -4404,15 +4486,16 @@ static int b43_phy_versioning(struct b43 
     599@@ -4404,15 +4503,16 @@ static int b43_phy_versioning(struct b43 
    569600                                << 16; 
    570601                } 
     
    585616                if (radio_rev != 1) 
    586617                        unsupported = 1; 
    587 @@ -4420,43 +4503,49 @@ static int b43_phy_versioning(struct b43 
     618@@ -4420,43 +4520,49 @@ static int b43_phy_versioning(struct b43 
    588619                        unsupported = 1; 
    589620                break; 
     
    647678  
    648679        phy->analog = analog_type; 
    649 @@ -5064,9 +5153,16 @@ static int b43_setup_bands(struct b43_wl 
     680@@ -5064,12 +5170,24 @@ static int b43_setup_bands(struct b43_wl 
    650681                           bool have_2ghz_phy, bool have_5ghz_phy) 
    651682 { 
     
    653684+       struct b43_phy *phy = &dev->phy; 
    654685+       bool limited_2g; 
     686+       bool limited_5g; 
    655687+ 
    656688+       /* We don't support all 2 GHz channels on some devices */ 
    657689+       limited_2g = phy->radio_ver == 0x2057 && 
    658690+                    (phy->radio_rev == 9 || phy->radio_rev == 14); 
     691+       limited_5g = phy->radio_ver == 0x2057 && 
     692+                    phy->radio_rev == 9; 
    659693  
    660694        if (have_2ghz_phy) 
     
    664698        if (dev->phy.type == B43_PHYTYPE_N) { 
    665699                if (have_5ghz_phy) 
    666                         hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &b43_band_5GHz_nphy; 
    667 @@ -5164,6 +5260,7 @@ static void b43_supported_bands(struct b 
     700-                       hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &b43_band_5GHz_nphy; 
     701+                       hw->wiphy->bands[IEEE80211_BAND_5GHZ] = limited_5g ? 
     702+                               &b43_band_5GHz_nphy_limited : 
     703+                               &b43_band_5GHz_nphy; 
     704        } else { 
     705                if (have_5ghz_phy) 
     706                        hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &b43_band_5GHz_aphy; 
     707@@ -5164,6 +5282,7 @@ static void b43_supported_bands(struct b 
    668708 static int b43_wireless_core_attach(struct b43_wldev *dev) 
    669709 { 
     
    673713        u32 tmp; 
    674714        bool have_2ghz_phy = false, have_5ghz_phy = false; 
    675 @@ -5181,6 +5278,8 @@ static int b43_wireless_core_attach(stru 
     715@@ -5181,6 +5300,8 @@ static int b43_wireless_core_attach(stru 
    676716                goto out; 
    677717        } 
     
    682722        switch (dev->dev->bus_type) { 
    683723 #ifdef CPTCFG_B43_BCMA 
    684 @@ -5214,14 +5313,16 @@ static int b43_wireless_core_attach(stru 
     724@@ -5214,14 +5335,15 @@ static int b43_wireless_core_attach(stru 
    685725        b43_supported_bands(dev, &have_2ghz_phy, &have_5ghz_phy); 
    686726  
     
    698738+               case B43_PHYTYPE_A: 
    699739+               case B43_PHYTYPE_G: 
    700 +               case B43_PHYTYPE_N: 
    701740+               case B43_PHYTYPE_LP: 
    702741+               case B43_PHYTYPE_HT: 
     
    10001039+               b43_nphy_rf_ctl_override_rev7(dev, 0x1, value, core, off, 1); 
    10011040+               b43_nphy_rf_ctl_override_rev7(dev, 0x2, value, core, off, 2); 
    1002 +               b43_nphy_rf_ctl_override_rev7(dev, 0x0800, value, core, off, 1); 
     1041+               b43_nphy_rf_ctl_override_rev7(dev, 0x0800, 0, core, off, 1); 
    10031042+               break; 
    10041043+       case N_RF_CTL_OVER_CMD_TX_PU: 
     
    10061045+               b43_nphy_rf_ctl_override_rev7(dev, 0x2, value, core, off, 1); 
    10071046+               b43_nphy_rf_ctl_override_rev7(dev, 0x1, value, core, off, 2); 
    1008 +               b43_nphy_rf_ctl_override_rev7(dev, 0x0800, value, core, off, 1); 
     1047+               b43_nphy_rf_ctl_override_rev7(dev, 0x0800, 1, core, off, 1); 
    10091048+               break; 
    10101049+       case N_RF_CTL_OVER_CMD_RX_GAIN: 
     
    10351074                if ((core_sel == 1 && core != 0) || 
    10361075                    (core_sel == 2 && core != 1)) 
    1037 @@ -505,6 +574,14 @@ static void b43_nphy_stay_in_carrier_sea 
     1076@@ -274,6 +343,7 @@ static void b43_nphy_rf_ctl_intc_overrid 
     1077                switch (intc_override) { 
     1078                case N_INTC_OVERRIDE_OFF: 
     1079                        b43_phy_write(dev, reg, 0); 
     1080+                       b43_phy_mask(dev, 0x2ff, ~0x2000); 
     1081                        b43_nphy_force_rf_sequence(dev, B43_RFSEQ_RESET2RX); 
     1082                        break; 
     1083                case N_INTC_OVERRIDE_TRSW: 
     1084@@ -505,6 +575,14 @@ static void b43_nphy_stay_in_carrier_sea 
    10381085        } 
    10391086 } 
     
    10501097 static void b43_nphy_adjust_lna_gain_table(struct b43_wldev *dev) 
    10511098 { 
    1052 @@ -590,44 +667,270 @@ static void b43_nphy_set_rf_sequence(str 
     1099@@ -590,44 +668,270 @@ static void b43_nphy_set_rf_sequence(str 
    10531100  * Radio 0x2057 
    10541101  **************************************************/ 
     
    13341381 { 
    13351382        struct b43_phy *phy = &dev->phy; 
    1336 @@ -635,49 +938,76 @@ static u16 b43_radio_2057_rccal(struct b 
     1383@@ -635,49 +939,76 @@ static u16 b43_radio_2057_rccal(struct b 
    13371384                        phy->radio_rev == 6); 
    13381385        u16 tmp; 
     
    14181465 } 
    14191466  
    1420 @@ -694,19 +1024,20 @@ static void b43_radio_2057_init_post(str 
     1467@@ -694,19 +1025,20 @@ static void b43_radio_2057_init_post(str 
    14211468 { 
    14221469        b43_radio_set(dev, R2057_XTALPUOVR_PINCTRL, 0x1); 
     
    14421489  
    14431490 /* http://bcm-v4.sipsolutions.net/802.11/Radio/2057/Init */ 
    1444 @@ -800,6 +1131,7 @@ static void b43_chantab_radio_2056_uploa 
     1491@@ -800,6 +1132,7 @@ static void b43_chantab_radio_2056_uploa 
    14451492 static void b43_radio_2056_setup(struct b43_wldev *dev, 
    14461493                                const struct b43_nphy_channeltab_entry_rev3 *e) 
     
    14501497        enum ieee80211_band band = b43_current_band(dev->wl); 
    14511498        u16 offset; 
    1452 @@ -897,7 +1229,7 @@ static void b43_radio_2056_setup(struct 
     1499@@ -897,7 +1230,7 @@ static void b43_radio_2056_setup(struct 
    14531500                                        offset | B2056_TX_MIXG_BOOST_TUNE, 
    14541501                                        mixg_boost); 
     
    14591506                                        offset | B2056_TX_INTPAG_IMAIN_STAT, 
    14601507                                        bias); 
    1461 @@ -911,7 +1243,7 @@ static void b43_radio_2056_setup(struct 
     1508@@ -911,7 +1244,7 @@ static void b43_radio_2056_setup(struct 
    14621509                        b43_radio_write(dev, offset | B2056_TX_PA_SPARE1, 0xee); 
    14631510                } 
     
    14681515                        paa_boost = 0xA; 
    14691516                        pada_boost = 0x77; 
    1470 @@ -1028,7 +1360,7 @@ static void b43_radio_init2056_post(stru 
     1517@@ -1028,7 +1361,7 @@ static void b43_radio_init2056_post(stru 
    14711518        b43_radio_mask(dev, B2056_SYN_COM_RESET, ~0x2); 
    14721519        b43_radio_mask(dev, B2056_SYN_PLL_MAST2, ~0xFC); 
     
    14771524 } 
    14781525  
    1479 @@ -1041,8 +1373,6 @@ static void b43_radio_init2056(struct b4 
     1526@@ -1041,8 +1374,6 @@ static void b43_radio_init2056(struct b4 
    14801527        b43_radio_init2056_pre(dev); 
    14811528        b2056_upload_inittabs(dev, 0, 0); 
     
    14861533  
    14871534 /************************************************** 
    1488 @@ -1214,8 +1544,7 @@ static u16 b43_nphy_gen_load_samples(str 
     1535@@ -1214,8 +1545,7 @@ static u16 b43_nphy_gen_load_samples(str 
    14891536        u16 bw, len, rot, angle; 
    14901537        struct b43_c32 *samples; 
     
    14961543  
    14971544        if (test) { 
    1498 @@ -1224,7 +1553,7 @@ static u16 b43_nphy_gen_load_samples(str 
     1545@@ -1224,7 +1554,7 @@ static u16 b43_nphy_gen_load_samples(str 
    14991546                else 
    15001547                        bw = 80; 
     
    15051552  
    15061553                len = bw << 1; 
    1507 @@ -1252,8 +1581,10 @@ static u16 b43_nphy_gen_load_samples(str 
     1554@@ -1252,8 +1582,10 @@ static u16 b43_nphy_gen_load_samples(str 
    15081555  
    15091556 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RunSamples */ 
     
    15171564        int i; 
    15181565        u16 seq_mode; 
    1519 @@ -1261,17 +1592,35 @@ static void b43_nphy_run_samples(struct 
     1566@@ -1261,17 +1593,35 @@ static void b43_nphy_run_samples(struct 
    15201567  
    15211568        b43_nphy_stay_in_carrier_search(dev, true); 
     
    15251572+ 
    15261573+               lpf_bw3 = b43_phy_read(dev, B43_NPHY_REV7_RF_CTL_OVER3) & 0x80; 
    1527 +               lpf_bw4 = b43_phy_read(dev, B43_NPHY_REV7_RF_CTL_OVER3) & 0x80; 
     1574+               lpf_bw4 = b43_phy_read(dev, B43_NPHY_REV7_RF_CTL_OVER4) & 0x80; 
    15281575+ 
    15291576+               if (lpf_bw3 || lpf_bw4) { 
     
    15591606        b43_phy_write(dev, B43_NPHY_SAMP_DEPCNT, (samps - 1)); 
    15601607  
    1561 @@ -1289,10 +1638,8 @@ static void b43_nphy_run_samples(struct 
     1608@@ -1289,10 +1639,8 @@ static void b43_nphy_run_samples(struct 
    15621609                b43_phy_mask(dev, B43_NPHY_IQLOCAL_CMDGCTL, 0x7FFF); 
    15631610                b43_phy_set(dev, B43_NPHY_IQLOCAL_CMDGCTL, 0x8000); 
     
    15721619        for (i = 0; i < 100; i++) { 
    15731620                if (!(b43_phy_read(dev, B43_NPHY_RFSEQST) & 1)) { 
    1574 @@ -1392,6 +1739,12 @@ static void b43_nphy_scale_offset_rssi(s 
     1621@@ -1392,6 +1740,12 @@ static void b43_nphy_scale_offset_rssi(s 
    15751622        } 
    15761623 } 
     
    15851632                                      enum n_rssi_type rssi_type) 
    15861633 { 
    1587 @@ -1461,13 +1814,15 @@ static void b43_nphy_rev3_rssi_select(st 
     1634@@ -1461,13 +1815,15 @@ static void b43_nphy_rev3_rssi_select(st 
    15881635                                        enum ieee80211_band band = 
    15891636                                                b43_current_band(dev->wl); 
     
    16081655                                        reg = (i == 0) ? 
    16091656                                                B43_NPHY_AFECTL_OVER1 : 
    1610 @@ -1554,7 +1909,9 @@ static void b43_nphy_rev2_rssi_select(st 
     1657@@ -1554,7 +1910,9 @@ static void b43_nphy_rev2_rssi_select(st 
    16111658 static void b43_nphy_rssi_select(struct b43_wldev *dev, u8 code, 
    16121659                                 enum n_rssi_type type) 
     
    16191666        else 
    16201667                b43_nphy_rev2_rssi_select(dev, code, type); 
    1621 @@ -1598,6 +1955,8 @@ static int b43_nphy_poll_rssi(struct b43 
     1668@@ -1598,6 +1956,8 @@ static int b43_nphy_poll_rssi(struct b43 
    16221669        u16 save_regs_phy[9]; 
    16231670        u16 s[2]; 
     
    16281675                save_regs_phy[0] = b43_phy_read(dev, B43_NPHY_AFECTL_C1); 
    16291676                save_regs_phy[1] = b43_phy_read(dev, B43_NPHY_AFECTL_C2); 
    1630 @@ -1679,6 +2038,7 @@ static int b43_nphy_poll_rssi(struct b43 
     1677@@ -1679,6 +2039,7 @@ static int b43_nphy_poll_rssi(struct b43 
    16311678 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RSSICalRev3 */ 
    16321679 static void b43_nphy_rev3_rssi_cal(struct b43_wldev *dev) 
     
    16361683  
    16371684        u16 saved_regs_phy_rfctl[2]; 
    1638 @@ -1696,12 +2056,14 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1685@@ -1696,12 +2057,14 @@ static void b43_nphy_rev3_rssi_cal(struc 
    16391686                B43_NPHY_AFECTL_OVER1, B43_NPHY_AFECTL_OVER, 
    16401687                B43_NPHY_AFECTL_C1, B43_NPHY_AFECTL_C2, 
     
    16531700        }; 
    16541701        u16 *regs_to_store; 
    1655 @@ -1748,9 +2110,24 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1702@@ -1748,9 +2111,24 @@ static void b43_nphy_rev3_rssi_cal(struc 
    16561703        b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, 1, 7); 
    16571704  
     
    16651712+                                                    1, 0, false); 
    16661713+               b43_nphy_rf_ctl_override_rev7(dev, 0x80, 1, 0, false, 0); 
    1667 +               b43_nphy_rf_ctl_override_rev7(dev, 0x80, 1, 0, false, 0); 
     1714+               b43_nphy_rf_ctl_override_rev7(dev, 0x40, 1, 0, false, 0); 
    16681715                if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) { 
    16691716+                       b43_nphy_rf_ctl_override_rev7(dev, 0x20, 0, 0, false, 
     
    16791726        } else { 
    16801727                b43_nphy_rf_ctl_override(dev, 0x1, 0, 0, false); 
    1681 @@ -1779,7 +2156,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1728@@ -1779,7 +2157,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
    16821729                /* Grab RSSI results for every possible VCM */ 
    16831730                for (vcm = 0; vcm < 8; vcm++) { 
     
    16911738                                b43_radio_maskset(dev, r | B2056_RX_RSSI_MISC, 
    16921739                                                  0xE3, vcm << 2); 
    1693 @@ -1810,7 +2190,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1740@@ -1810,7 +2191,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
    16941741  
    16951742                /* Select the best VCM */ 
     
    17031750                        b43_radio_maskset(dev, r | B2056_RX_RSSI_MISC, 
    17041751                                          0xE3, vcm_final << 2); 
    1705 @@ -1880,6 +2263,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1752@@ -1880,6 +2264,10 @@ static void b43_nphy_rev3_rssi_cal(struc 
    17061753                rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; 
    17071754        } 
     
    17141761                rssical_radio_regs[0] = b43_radio_read(dev, B2056_RX0 | 
    17151762                                                       B2056_RX_RSSI_MISC); 
    1716 @@ -1901,9 +2288,9 @@ static void b43_nphy_rev3_rssi_cal(struc 
     1763@@ -1901,9 +2289,9 @@ static void b43_nphy_rev3_rssi_cal(struc 
    17171764  
    17181765        /* Remember for which channel we store configuration */ 
     
    17261773        /* End of calibration, restore configuration */ 
    17271774        b43_nphy_classifier(dev, 7, class); 
    1728 @@ -2080,7 +2467,9 @@ static void b43_nphy_rev2_rssi_cal(struc 
     1775@@ -2080,7 +2468,9 @@ static void b43_nphy_rev2_rssi_cal(struc 
    17291776  */ 
    17301777 static void b43_nphy_rssi_cal(struct b43_wldev *dev) 
     
    17371784        } else { 
    17381785                b43_nphy_rev2_rssi_cal(dev, N_RSSI_NB); 
    1739 @@ -2093,7 +2482,21 @@ static void b43_nphy_rssi_cal(struct b43 
     1786@@ -2093,7 +2483,21 @@ static void b43_nphy_rssi_cal(struct b43 
    17401787  * Workarounds 
    17411788  **************************************************/ 
     
    17601807        struct ssb_sprom *sprom = dev->dev->bus_sprom; 
    17611808  
    1762 @@ -2196,7 +2599,7 @@ static void b43_nphy_gain_ctl_workaround 
     1809@@ -2196,7 +2600,7 @@ static void b43_nphy_gain_ctl_workaround 
    17631810        b43_phy_write(dev, B43_NPHY_C1_NBCLIPTHRES, 0x84); 
    17641811        b43_phy_write(dev, B43_NPHY_C2_NBCLIPTHRES, 0x84); 
     
    17691816                b43_phy_write(dev, B43_NPHY_CLIP1_NBDWELL_LEN, 0x002B); 
    17701817                b43_phy_write(dev, B43_NPHY_CLIP2_NBDWELL_LEN, 0x002B); 
    1771 @@ -2210,7 +2613,7 @@ static void b43_nphy_gain_ctl_workaround 
     1818@@ -2210,7 +2614,7 @@ static void b43_nphy_gain_ctl_workaround 
    17721819        b43_phy_maskset(dev, B43_NPHY_C2_CLIPWBTHRES, 
    17731820                        ~B43_NPHY_C2_CLIPWBTHRES_CLIP2, 21); 
     
    17781825                        ~B43_NPHY_C1_CGAINI_GAINBKOFF, 0x1); 
    17791826                b43_phy_maskset(dev, B43_NPHY_C2_CGAINI, 
    1780 @@ -2225,12 +2628,12 @@ static void b43_nphy_gain_ctl_workaround 
     1827@@ -2225,12 +2629,12 @@ static void b43_nphy_gain_ctl_workaround 
    17811828  
    17821829        if (nphy->gain_boost) { 
     
    17931840  
    17941841        /* Set HPVGA2 index */ 
    1795 @@ -2290,46 +2693,54 @@ static void b43_nphy_gain_ctl_workaround 
     1842@@ -2290,46 +2694,54 @@ static void b43_nphy_gain_ctl_workaround 
    17961843 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/WorkaroundsGainCtrl */ 
    17971844 static void b43_nphy_gain_ctl_workarounds(struct b43_wldev *dev) 
     
    18641911                b43_phy_set(dev, B43_NPHY_FINERX2_CGC, 0x10); 
    18651912                b43_phy_maskset(dev, B43_NPHY_FREQGAIN0, 0xFF80, 0x0020); 
    1866 @@ -2349,11 +2760,18 @@ static void b43_nphy_workarounds_rev7plu 
     1913@@ -2349,11 +2761,18 @@ static void b43_nphy_workarounds_rev7plu 
    18671914                b43_phy_maskset(dev, B43_NPHY_FREQGAIN7, 0xFF80, 0x0040); 
    18681915                b43_phy_maskset(dev, B43_NPHY_FREQGAIN7, 0x80FF, 0x4000); 
     
    18851932  
    18861933        b43_ntab_write(dev, B43_NTAB16(8, 0x00), 2); 
    1887 @@ -2361,9 +2779,11 @@ static void b43_nphy_workarounds_rev7plu 
     1934@@ -2361,9 +2780,11 @@ static void b43_nphy_workarounds_rev7plu 
    18881935        tmp32 = b43_ntab_read(dev, B43_NTAB32(30, 0)); 
    18891936        tmp32 &= 0xffffff; 
     
    18991946                b43_nphy_set_rf_sequence(dev, 0, rx2tx_events_ipa, 
    19001947                                rx2tx_delays_ipa, ARRAY_SIZE(rx2tx_events_ipa)); 
    1901 @@ -2371,84 +2791,176 @@ static void b43_nphy_workarounds_rev7plu 
     1948@@ -2371,84 +2792,176 @@ static void b43_nphy_workarounds_rev7plu 
    19021949        b43_phy_maskset(dev, B43_NPHY_EPS_OVERRIDEI_0, 0x3FFF, 0x4000); 
    19031950        b43_phy_maskset(dev, B43_NPHY_EPS_OVERRIDEI_1, 0x3FFF, 0x4000); 
     
    21292176                b43_nphy_rf_ctl_override_rev7(dev, 4, 1, 3, false, 0); 
    21302177  
    2131 @@ -2496,7 +3008,8 @@ static void b43_nphy_workarounds_rev7plu 
     2178@@ -2496,7 +3009,8 @@ static void b43_nphy_workarounds_rev7plu 
    21322179                                                                0x7f); 
    21332180                                } 
     
    21392186                                        if (core == 0) { 
    21402187                                                b43_radio_write(dev, 0x64, 
    2141 @@ -2522,17 +3035,34 @@ static void b43_nphy_workarounds_rev7plu 
     2188@@ -2522,17 +3036,34 @@ static void b43_nphy_workarounds_rev7plu 
    21422189                                                                0x3E); 
    21432190                                        } 
     
    21772224                            (freq >= 5745 && freq <= 5805)) { 
    21782225                                b43_radio_write(dev, 0x7D, 0xFF); 
    2179 @@ -2577,8 +3107,8 @@ static void b43_nphy_workarounds_rev7plu 
     2226@@ -2577,8 +3108,8 @@ static void b43_nphy_workarounds_rev7plu 
    21802227                b43_phy_set(dev, B43_NPHY_AFECTL_OVER1, 0x1); 
    21812228                b43_phy_mask(dev, B43_NPHY_AFECTL_C2, ~0x1); 
     
    21882235                b43_phy_mask(dev, B43_NPHY_AFECTL_C1, ~0x4); 
    21892236                b43_phy_mask(dev, B43_NPHY_AFECTL_OVER1, ~0x4); 
    2190 @@ -2589,20 +3119,20 @@ static void b43_nphy_workarounds_rev7plu 
     2237@@ -2589,20 +3120,20 @@ static void b43_nphy_workarounds_rev7plu 
    21912238        b43_phy_write(dev, B43_NPHY_ENDROP_TLEN, 0x2); 
    21922239  
     
    22192266        b43_nphy_gain_ctl_workarounds(dev); 
    22202267  
    2221 @@ -2695,7 +3225,7 @@ static void b43_nphy_workarounds_rev3plu 
     2268@@ -2695,7 +3226,7 @@ static void b43_nphy_workarounds_rev3plu 
    22222269  
    22232270        b43_phy_maskset(dev, B43_NPHY_SGILTRNOFFSET, 0xF0FF, 0x0700); 
     
    22282275                b43_ntab_write(dev, B43_NTAB32(16, 127), 0x18D); 
    22292276        } else { 
    2230 @@ -2930,6 +3460,7 @@ static void b43_nphy_workarounds(struct 
     2277@@ -2930,6 +3461,7 @@ static void b43_nphy_workarounds(struct 
    22312278        b43_phy_set(dev, B43_NPHY_IQFLIP, 
    22322279                    B43_NPHY_IQFLIP_ADC1 | B43_NPHY_IQFLIP_ADC2); 
     
    22362283                b43_nphy_workarounds_rev7plus(dev); 
    22372284        else if (dev->phy.rev >= 3) 
    2238 @@ -2950,12 +3481,13 @@ static void b43_nphy_workarounds(struct 
     2285@@ -2950,12 +3482,13 @@ static void b43_nphy_workarounds(struct 
    22392286  * http://bcm-v4.sipsolutions.net/802.11/PHY/N/TXTone 
    22402287  */ 
     
    22522299 } 
    22532300  
    2254 @@ -2990,6 +3522,7 @@ static void b43_nphy_update_txrx_chain(s 
     2301@@ -2990,6 +3523,7 @@ static void b43_nphy_update_txrx_chain(s 
    22552302 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/stop-playback */ 
    22562303 static void b43_nphy_stop_playback(struct b43_wldev *dev) 
     
    22602307        u16 tmp; 
    22612308  
    2262 @@ -3010,6 +3543,15 @@ static void b43_nphy_stop_playback(struc 
     2309@@ -3010,6 +3544,15 @@ static void b43_nphy_stop_playback(struc 
    22632310                nphy->bb_mult_save = 0; 
    22642311        } 
    22652312  
    2266 +       if (phy->rev >= 7) { 
     2313+       if (phy->rev >= 7 && nphy->lpf_bw_overrode_for_sample_play) { 
    22672314+               if (phy->rev >= 19) 
    22682315+                       b43_nphy_rf_ctl_override_rev19(dev, 0x80, 0, 0, true, 
     
    22762323                b43_nphy_stay_in_carrier_search(dev, 0); 
    22772324 } 
    2278 @@ -3019,16 +3561,23 @@ static void b43_nphy_iq_cal_gain_params( 
     2325@@ -3019,16 +3562,23 @@ static void b43_nphy_iq_cal_gain_params( 
    22792326                                        struct nphy_txgains target, 
    22802327                                        struct nphy_iqcal_params *params) 
     
    23022349                        params->ncorr[j] = 0x79; 
    23032350        } else { 
    2304 @@ -3069,6 +3618,7 @@ static enum b43_txpwr_result b43_nphy_op 
     2351@@ -3069,6 +3619,7 @@ static enum b43_txpwr_result b43_nphy_op 
    23052352 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/TxPwrCtrlEnable */ 
    23062353 static void b43_nphy_tx_power_ctrl(struct b43_wldev *dev, bool enable) 
     
    23102357        u8 i; 
    23112358        u16 bmask, val, tmp; 
    2312 @@ -3118,7 +3668,7 @@ static void b43_nphy_tx_power_ctrl(struc 
     2359@@ -3118,7 +3669,7 @@ static void b43_nphy_tx_power_ctrl(struc 
    23132360                        b43_phy_maskset(dev, B43_NPHY_BPHY_CTL3, 
    23142361                                ~B43_NPHY_BPHY_CTL3_SCALE, 0x5A); 
     
    23192366        } else { 
    23202367                b43_ntab_write_bulk(dev, B43_NTAB16(26, 64), 84, 
    2321 @@ -3138,12 +3688,25 @@ static void b43_nphy_tx_power_ctrl(struc 
     2368@@ -3138,12 +3689,25 @@ static void b43_nphy_tx_power_ctrl(struc 
    23222369                b43_phy_maskset(dev, B43_NPHY_TXPCTL_CMD, ~(bmask), val); 
    23232370  
     
    23482395  
    23492396                if (dev->phy.rev >= 3) { 
    2350 @@ -3160,6 +3723,10 @@ static void b43_nphy_tx_power_ctrl(struc 
     2397@@ -3160,6 +3724,10 @@ static void b43_nphy_tx_power_ctrl(struc 
    23512398                        } 
    23522399                } 
     
    23592406                        b43_phy_mask(dev, B43_NPHY_AFECTL_OVER1, ~0x100); 
    23602407                        b43_phy_mask(dev, B43_NPHY_AFECTL_OVER, ~0x100); 
    2361 @@ -3172,7 +3739,7 @@ static void b43_nphy_tx_power_ctrl(struc 
     2408@@ -3172,7 +3740,7 @@ static void b43_nphy_tx_power_ctrl(struc 
    23622409                else if (dev->phy.rev < 2) 
    23632410                        b43_phy_maskset(dev, B43_NPHY_BPHY_CTL3, ~0xFF, 0x40); 
     
    23682415  
    23692416                if (b43_nphy_ipa(dev)) { 
    2370 @@ -3188,18 +3755,20 @@ static void b43_nphy_tx_power_ctrl(struc 
     2417@@ -3188,18 +3756,20 @@ static void b43_nphy_tx_power_ctrl(struc 
    23712418 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/TxPwrFix */ 
    23722419 static void b43_nphy_tx_power_fix(struct b43_wldev *dev) 
     
    23902437                txpi[0] = txpi[1] = 30; 
    23912438        } else if (dev->phy.rev >= 3) { 
    2392 @@ -3238,7 +3807,11 @@ static void b43_nphy_tx_power_fix(struct 
     2439@@ -3238,7 +3808,11 @@ static void b43_nphy_tx_power_fix(struct 
    23932440        */ 
    23942441  
     
    24032450                if (dev->phy.rev >= 3) 
    24042451                        radio_gain = (txgain >> 16) & 0x1FFFF; 
    2405 @@ -3298,7 +3871,9 @@ static void b43_nphy_ipa_internal_tssi_s 
     2452@@ -3298,7 +3872,9 @@ static void b43_nphy_ipa_internal_tssi_s 
    24062453        u8 core; 
    24072454        u16 r; /* routing */ 
     
    24142461                        r = core ? 0x190 : 0x170; 
    24152462                        if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) { 
    2416 @@ -3386,24 +3961,32 @@ static void b43_nphy_tx_power_ctl_idle_t 
     2463@@ -3381,29 +3957,38 @@ static void b43_nphy_tx_power_ctl_idle_t 
     2464        u32 tmp; 
     2465        s32 rssi[4] = { }; 
     2466  
     2467-       /* TODO: check if we can transmit */ 
     2468+       if (phy->chandef->chan->flags & IEEE80211_CHAN_NO_IR) 
     2469+               return; 
     2470  
    24172471        if (b43_nphy_ipa(dev)) 
    24182472                b43_nphy_ipa_internal_tssi_setup(dev); 
    24192473  
    24202474-       if (phy->rev >= 7) 
     2475-               b43_nphy_rf_ctl_override_rev7(dev, 0x2000, 0, 3, false, 0); 
    24212476+       if (phy->rev >= 19) 
    2422 +               b43_nphy_rf_ctl_override_rev19(dev, 0x2000, 0, 3, false, 0); 
     2477+               b43_nphy_rf_ctl_override_rev19(dev, 0x1000, 0, 3, false, 0); 
    24232478+       else if (phy->rev >= 7) 
    2424                 b43_nphy_rf_ctl_override_rev7(dev, 0x2000, 0, 3, false, 0); 
     2479+               b43_nphy_rf_ctl_override_rev7(dev, 0x1000, 0, 3, false, 0); 
    24252480        else if (phy->rev >= 3) 
    24262481                b43_nphy_rf_ctl_override(dev, 0x2000, 0, 3, false); 
     
    24362491  
    24372492-       if (phy->rev >= 7) 
     2493-               b43_nphy_rf_ctl_override_rev7(dev, 0x2000, 0, 3, true, 0); 
    24382494+       if (phy->rev >= 19) 
    2439 +               b43_nphy_rf_ctl_override_rev19(dev, 0x2000, 0, 3, true, 0); 
     2495+               b43_nphy_rf_ctl_override_rev19(dev, 0x1000, 0, 3, true, 0); 
    24402496+       else if (phy->rev >= 7) 
    2441                 b43_nphy_rf_ctl_override_rev7(dev, 0x2000, 0, 3, true, 0); 
     2497+               b43_nphy_rf_ctl_override_rev7(dev, 0x1000, 0, 3, true, 0); 
    24422498        else if (phy->rev >= 3) 
    24432499                b43_nphy_rf_ctl_override(dev, 0x2000, 0, 3, true); 
     
    24512507                nphy->pwr_ctl_info[1].idle_tssi_5g = (tmp >> 8) & 0xFF; 
    24522508        } else { 
    2453 @@ -3443,21 +4026,21 @@ static void b43_nphy_tx_prepare_adjusted 
     2509@@ -3443,21 +4028,21 @@ static void b43_nphy_tx_prepare_adjusted 
    24542510                delta = 0; 
    24552511                switch (stf_mode) { 
     
    24782534                } 
    24792535  
    2480 @@ -3478,6 +4061,7 @@ static void b43_nphy_tx_prepare_adjusted 
     2536@@ -3478,6 +4063,7 @@ static void b43_nphy_tx_prepare_adjusted 
    24812537 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/TxPwrCtrlSetup */ 
    24822538 static void b43_nphy_tx_power_ctl_setup(struct b43_wldev *dev) 
     
    24862542        struct ssb_sprom *sprom = dev->dev->bus_sprom; 
    24872543  
    2488 @@ -3487,7 +4071,7 @@ static void b43_nphy_tx_power_ctl_setup( 
     2544@@ -3487,7 +4073,7 @@ static void b43_nphy_tx_power_ctl_setup( 
    24892545        s32 num, den, pwr; 
    24902546        u32 regval[64]; 
     
    24952551        u16 r; /* routing */ 
    24962552        u8 i, c; 
    2497 @@ -3594,7 +4178,9 @@ static void b43_nphy_tx_power_ctl_setup( 
     2553@@ -3594,7 +4180,9 @@ static void b43_nphy_tx_power_ctl_setup( 
    24982554                udelay(1); 
    24992555        } 
     
    25062562                                ~B43_NPHY_TXPCTL_CMD_INIT, 0x19); 
    25072563                b43_phy_maskset(dev, B43_NPHY_TXPCTL_INIT, 
    2508 @@ -3651,27 +4237,36 @@ static void b43_nphy_tx_gain_table_uploa 
     2564@@ -3651,27 +4239,36 @@ static void b43_nphy_tx_gain_table_uploa 
    25092565        int i; 
    25102566  
     
    25542610 } 
    25552611  
    2556 @@ -3688,7 +4283,9 @@ static void b43_nphy_pa_override(struct 
     2612@@ -3688,7 +4285,9 @@ static void b43_nphy_pa_override(struct 
    25572613                nphy->rfctrl_intc2_save = b43_phy_read(dev, 
    25582614                                                       B43_NPHY_RFCTL_INTC2); 
     
    25652621                                tmp = 0x600; 
    25662622                        else 
    2567 @@ -3709,21 +4306,28 @@ static void b43_nphy_pa_override(struct 
     2623@@ -3709,21 +4308,28 @@ static void b43_nphy_pa_override(struct 
    25682624        } 
    25692625 } 
     
    26042660 } 
    26052661  
    2606 @@ -3996,7 +4600,7 @@ static void b43_nphy_spur_workaround(str 
     2662@@ -3996,7 +4602,7 @@ static void b43_nphy_spur_workaround(str 
    26072663  
    26082664        if (nphy->gband_spurwar_en) { 
     
    26132669                else 
    26142670                        ; /* TODO: N PHY Adjust Min Noise Var(0, NULL, NULL)*/ 
    2615 @@ -4128,7 +4732,13 @@ static void b43_nphy_restore_rssi_cal(st 
     2671@@ -4128,7 +4734,13 @@ static void b43_nphy_restore_rssi_cal(st 
    26162672                rssical_phy_regs = nphy->rssical_cache.rssical_phy_regs_5G; 
    26172673        } 
     
    26282684                b43_radio_maskset(dev, B2056_RX0 | B2056_RX_RSSI_MISC, 0xE3, 
    26292685                                  rssical_radio_regs[0]); 
    2630 @@ -4152,15 +4762,78 @@ static void b43_nphy_restore_rssi_cal(st 
     2686@@ -4152,15 +4764,78 @@ static void b43_nphy_restore_rssi_cal(st 
    26312687        b43_phy_write(dev, B43_NPHY_RSSIMC_1Q_RSSI_Y, rssical_phy_regs[11]); 
    26322688 } 
     
    27082764                tmp = (i == 0) ? 0x2000 : 0x3000; 
    27092765                offset = i * 11; 
    2710 @@ -4269,41 +4942,61 @@ static void b43_nphy_update_tx_cal_ladde 
     2766@@ -4269,41 +4944,62 @@ static void b43_nphy_update_tx_cal_ladde 
    27112767        } 
    27122768 } 
     
    27732829+               b43_nphy_pa_set_tx_dig_filter(dev, 0x186, dig_filter_phy_rev16); 
    27742830+ 
    2775 +       if (dev->dev->chip_id == BCMA_CHIP_ID_BCM43217) { 
     2831+       /* Verified with BCM43131 and BCM43217 */ 
     2832+       if (dev->phy.rev == 17) { 
    27762833+               b43_nphy_pa_set_tx_dig_filter(dev, 0x186, dig_filter_phy_rev16); 
    27772834+               b43_nphy_pa_set_tx_dig_filter(dev, 0x195, 
     
    27932850  
    27942851 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/GetTxGain */ 
    2795 @@ -4325,7 +5018,13 @@ static struct nphy_txgains b43_nphy_get_ 
     2852@@ -4325,7 +5021,13 @@ static struct nphy_txgains b43_nphy_get_ 
    27962853                        b43_nphy_stay_in_carrier_search(dev, false); 
    27972854  
     
    28082865                                target.pad[i] = (curr_gain[i] & 0x00F0) >> 4; 
    28092866                                target.pga[i] = (curr_gain[i] & 0x0F00) >> 8; 
    2810 @@ -4349,7 +5048,16 @@ static struct nphy_txgains b43_nphy_get_ 
     2867@@ -4349,7 +5051,16 @@ static struct nphy_txgains b43_nphy_get_ 
    28112868  
    28122869                for (i = 0; i < 2; ++i) { 
     
    28262883                                target.pad[i] = (table[index[i]] >> 20) & 0xF; 
    28272884                                target.pga[i] = (table[index[i]] >> 24) & 0xF; 
    2828 @@ -4398,6 +5106,8 @@ static void b43_nphy_tx_cal_phy_cleanup( 
     2885@@ -4398,6 +5109,8 @@ static void b43_nphy_tx_cal_phy_cleanup( 
    28292886 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/TxCalPhySetup */ 
    28302887 static void b43_nphy_tx_cal_phy_setup(struct b43_wldev *dev) 
     
    28352892        u16 tmp; 
    28362893  
    2837 @@ -4429,7 +5139,12 @@ static void b43_nphy_tx_cal_phy_setup(st 
     2894@@ -4429,7 +5142,12 @@ static void b43_nphy_tx_cal_phy_setup(st 
    28382895                regs[7] = b43_phy_read(dev, B43_NPHY_RFCTL_INTC1); 
    28392896                regs[8] = b43_phy_read(dev, B43_NPHY_RFCTL_INTC2); 
     
    28492906                b43_nphy_rf_ctl_intc_override(dev, N_INTC_OVERRIDE_TRSW, 8, 2); 
    28502907  
    2851 @@ -4437,6 +5152,33 @@ static void b43_nphy_tx_cal_phy_setup(st 
     2908@@ -4437,6 +5155,33 @@ static void b43_nphy_tx_cal_phy_setup(st 
    28522909                regs[10] = b43_phy_read(dev, B43_NPHY_PAPD_EN1); 
    28532910                b43_phy_mask(dev, B43_NPHY_PAPD_EN0, ~0x0001); 
     
    28832940                b43_phy_maskset(dev, B43_NPHY_AFECTL_C1, 0x0FFF, 0xA000); 
    28842941                b43_phy_maskset(dev, B43_NPHY_AFECTL_C2, 0x0FFF, 0xA000); 
    2885 @@ -4465,6 +5207,7 @@ static void b43_nphy_tx_cal_phy_setup(st 
     2942@@ -4465,6 +5210,7 @@ static void b43_nphy_tx_cal_phy_setup(st 
    28862943 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/SaveCal */ 
    28872944 static void b43_nphy_save_cal(struct b43_wldev *dev) 
     
    28912948  
    28922949        struct b43_phy_n_iq_comp *rxcal_coeffs = NULL; 
    2893 @@ -4489,7 +5232,26 @@ static void b43_nphy_save_cal(struct b43 
     2950@@ -4489,7 +5235,26 @@ static void b43_nphy_save_cal(struct b43 
    28942951  
    28952952        b43_nphy_rx_iq_coeffs(dev, false, rxcal_coeffs); 
     
    29192976                txcal_radio_regs[1] = b43_radio_read(dev, 0x2022); 
    29202977                txcal_radio_regs[2] = b43_radio_read(dev, 0x3021); 
    2921 @@ -4504,8 +5266,9 @@ static void b43_nphy_save_cal(struct b43 
     2978@@ -4504,8 +5269,9 @@ static void b43_nphy_save_cal(struct b43 
    29222979                txcal_radio_regs[2] = b43_radio_read(dev, 0x8D); 
    29232980                txcal_radio_regs[3] = b43_radio_read(dev, 0xBC); 
     
    29312988  
    29322989        if (nphy->hang_avoid) 
    2933 @@ -4515,6 +5278,7 @@ static void b43_nphy_save_cal(struct b43 
     2990@@ -4515,6 +5281,7 @@ static void b43_nphy_save_cal(struct b43 
    29342991 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RestoreCal */ 
    29352992 static void b43_nphy_restore_cal(struct b43_wldev *dev) 
     
    29392996  
    29402997        u16 coef[4]; 
    2941 @@ -4562,7 +5326,26 @@ static void b43_nphy_restore_cal(struct 
     2998@@ -4562,7 +5329,26 @@ static void b43_nphy_restore_cal(struct 
    29422999        } 
    29433000  
     
    29673024                b43_radio_write(dev, 0x2022, txcal_radio_regs[1]); 
    29683025                b43_radio_write(dev, 0x3021, txcal_radio_regs[2]); 
    2969 @@ -4585,6 +5368,7 @@ static int b43_nphy_cal_tx_iq_lo(struct 
     3026@@ -4585,6 +5371,7 @@ static int b43_nphy_cal_tx_iq_lo(struct 
    29703027                                struct nphy_txgains target, 
    29713028                                bool full, bool mphase) 
     
    29753032        int i; 
    29763033        int error = 0; 
    2977 @@ -4625,7 +5409,7 @@ static int b43_nphy_cal_tx_iq_lo(struct 
     3034@@ -4625,7 +5412,7 @@ static int b43_nphy_cal_tx_iq_lo(struct 
    29783035                (dev->phy.rev == 5 && nphy->ipa2g_on && 
    29793036                b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ); 
     
    29843041                                        tbl_tx_iqlo_cal_loft_ladder_40); 
    29853042                        b43_ntab_write_bulk(dev, B43_NTAB16(15, 32), 18, 
    2986 @@ -4638,18 +5422,24 @@ static int b43_nphy_cal_tx_iq_lo(struct 
     3043@@ -4638,18 +5425,24 @@ static int b43_nphy_cal_tx_iq_lo(struct 
    29873044                } 
    29883045        } 
     
    30143071        if (error == 0) { 
    30153072                if (nphy->mphase_cal_phase_id > 2) { 
    3016 @@ -4777,9 +5567,9 @@ static int b43_nphy_cal_tx_iq_lo(struct 
     3073@@ -4777,9 +5570,9 @@ static int b43_nphy_cal_tx_iq_lo(struct 
    30173074                                                nphy->txiqlocal_bestc); 
    30183075                        nphy->txiqlocal_coeffsvalid = true; 
     
    30263083                        length = 11; 
    30273084                        if (dev->phy.rev < 3) 
    3028 @@ -4815,8 +5605,8 @@ static void b43_nphy_reapply_tx_cal_coef 
     3085@@ -4815,8 +5608,8 @@ static void b43_nphy_reapply_tx_cal_coef 
    30293086        bool equal = true; 
    30303087  
     
    30373094  
    30383095        b43_ntab_read_bulk(dev, B43_NTAB16(15, 80), 7, buffer); 
    3039 @@ -4972,11 +5762,11 @@ static int b43_nphy_rev2_cal_rx_iq(struc 
     3096@@ -4972,11 +5765,11 @@ static int b43_nphy_rev2_cal_rx_iq(struc 
    30403097                        if (playtone) { 
    30413098                                ret = b43_nphy_tx_tone(dev, 4000, 
     
    30523109  
    30533110                        if (ret == 0) { 
    3054 @@ -5032,6 +5822,9 @@ static int b43_nphy_rev3_cal_rx_iq(struc 
     3111@@ -5032,6 +5825,9 @@ static int b43_nphy_rev3_cal_rx_iq(struc 
    30553112 static int b43_nphy_cal_rx_iq(struct b43_wldev *dev, 
    30563113                        struct nphy_txgains target, u8 type, bool debug) 
     
    30623119                return b43_nphy_rev3_cal_rx_iq(dev, target, type, debug); 
    30633120        else 
    3064 @@ -5118,6 +5911,9 @@ static void b43_nphy_bphy_init(struct b4 
     3121@@ -5118,6 +5914,9 @@ static void b43_nphy_bphy_init(struct b4 
    30653122 /* http://bcm-v4.sipsolutions.net/802.11/PHY/N/SuperSwitchInit */ 
    30663123 static void b43_nphy_superswitch_init(struct b43_wldev *dev, bool init) 
     
    30723129                if (!init) 
    30733130                        return; 
    3074 @@ -5193,6 +5989,10 @@ static int b43_phy_initn(struct b43_wlde 
     3131@@ -5193,6 +5992,10 @@ static int b43_phy_initn(struct b43_wlde 
    30753132 #endif 
    30763133                } 
     
    30833140        b43_nphy_tables_init(dev); 
    30843141        nphy->crsminpwr_adjusted = false; 
    3085 @@ -5202,6 +6002,16 @@ static int b43_phy_initn(struct b43_wlde 
     3142@@ -5202,6 +6005,16 @@ static int b43_phy_initn(struct b43_wlde 
    30863143        if (dev->phy.rev >= 3) { 
    30873144                b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S1, 0); 
     
    31003157                b43_phy_write(dev, B43_NPHY_TXF_40CO_B32S1, 0); 
    31013158        } else { 
    3102 @@ -5239,7 +6049,9 @@ static int b43_phy_initn(struct b43_wlde 
     3159@@ -5239,7 +6052,9 @@ static int b43_phy_initn(struct b43_wlde 
    31033160        b43_phy_write(dev, B43_NPHY_PLOAD_CSENSE_EXTLEN, 0x50); 
    31043161        b43_phy_write(dev, B43_NPHY_TXRIFS_FRDEL, 0x30); 
     
    31113168  
    31123169        if (phy->rev < 2) { 
    3113 @@ -5271,10 +6083,12 @@ static int b43_phy_initn(struct b43_wlde 
     3170@@ -5271,10 +6086,12 @@ static int b43_phy_initn(struct b43_wlde 
    31143171  
    31153172        b43_mac_phy_clock_set(dev, true); 
     
    31283185        b43_nphy_classifier(dev, 0, 0); 
    31293186        b43_nphy_read_clip_detection(dev, clip); 
    3130 @@ -5348,7 +6162,7 @@ static int b43_phy_initn(struct b43_wlde 
     3187@@ -5348,7 +6165,7 @@ static int b43_phy_initn(struct b43_wlde 
    31313188        b43_phy_write(dev, B43_NPHY_TXMACDELAY, 0x0320); 
    31323189        if (phy->rev >= 3 && phy->rev <= 6) 
     
    31373194                b43_nphy_spur_workaround(dev); 
    31383195  
    3139 @@ -5397,23 +6211,23 @@ static void b43_nphy_channel_setup(struc 
     3196@@ -5397,23 +6214,23 @@ static void b43_nphy_channel_setup(struc 
    31403197        struct b43_phy *phy = &dev->phy; 
    31413198        struct b43_phy_n *nphy = dev->phy.n; 
     
    31693226        } 
    31703227  
    3171 @@ -5434,35 +6248,49 @@ static void b43_nphy_channel_setup(struc 
     3228@@ -5434,35 +6251,49 @@ static void b43_nphy_channel_setup(struc 
    31723229        if (dev->phy.rev < 3) 
    31733230                b43_nphy_adjust_lna_gain_table(dev); 
     
    32393296                else 
    32403297                        b43_phy_mask(dev, B43_NPHY_BBCFG, 
    3241 @@ -5488,10 +6316,20 @@ static int b43_nphy_set_channel(struct b 
     3298@@ -5488,10 +6319,20 @@ static int b43_nphy_set_channel(struct b 
    32423299  
    32433300        const struct b43_nphy_channeltab_entry_rev2 *tabent_r2 = NULL; 
     
    32613318                                                        channel->center_freq); 
    32623319                if (!tabent_r3) 
    3263 @@ -5506,20 +6344,38 @@ static int b43_nphy_set_channel(struct b 
     3320@@ -5506,20 +6347,38 @@ static int b43_nphy_set_channel(struct b 
    32643321        /* Channel is set later in common code, but we need to set it on our 
    32653322           own to let this function's subcalls work properly. */ 
     
    33083365                b43_radio_maskset(dev, 0x08, 0xFFFB, tmp); 
    33093366                b43_radio_2056_setup(dev, tabent_r3); 
    3310 @@ -5561,7 +6417,6 @@ static void b43_nphy_op_prepare_structs( 
     3367@@ -5561,7 +6420,6 @@ static void b43_nphy_op_prepare_structs( 
    33113368        nphy->hang_avoid = (phy->rev == 3 || phy->rev == 4); 
    33123369        nphy->spur_avoid = (phy->rev >= 3) ? 
     
    33163373        nphy->txrx_chain = 2; /* sth different than 0 and 1 for now */ 
    33173374        nphy->phyrxchain = 3; /* to avoid b43_nphy_set_rx_core_state like wl */ 
    3318 @@ -5602,8 +6457,6 @@ static void b43_nphy_op_prepare_structs( 
     3375@@ -5602,8 +6460,6 @@ static void b43_nphy_op_prepare_structs( 
    33193376                nphy->ipa2g_on = sprom->fem.ghz2.extpa_gain == 2; 
    33203377                nphy->ipa5g_on = sprom->fem.ghz5.extpa_gain == 2; 
     
    33253382  
    33263383 static void b43_nphy_op_free(struct b43_wldev *dev) 
    3327 @@ -5663,7 +6516,7 @@ static void b43_nphy_op_maskset(struct b 
     3384@@ -5663,7 +6519,7 @@ static void b43_nphy_op_maskset(struct b 
    33283385 static u16 b43_nphy_op_radio_read(struct b43_wldev *dev, u16 reg) 
    33293386 { 
     
    33343391        if (dev->phy.rev >= 7) 
    33353392                reg |= 0x200; /* Radio 0x2057 */ 
    3336 @@ -5677,7 +6530,7 @@ static u16 b43_nphy_op_radio_read(struct 
     3393@@ -5677,7 +6533,7 @@ static u16 b43_nphy_op_radio_read(struct 
    33373394 static void b43_nphy_op_radio_write(struct b43_wldev *dev, u16 reg, u16 value) 
    33383395 { 
     
    33433400        b43_write16(dev, B43_MMIO_RADIO_CONTROL, reg); 
    33443401        b43_write16(dev, B43_MMIO_RADIO_DATA_LOW, value); 
    3345 @@ -5687,15 +6540,23 @@ static void b43_nphy_op_radio_write(stru 
     3402@@ -5687,15 +6543,23 @@ static void b43_nphy_op_radio_write(stru 
    33463403 static void b43_nphy_op_software_rfkill(struct b43_wldev *dev, 
    33473404                                        bool blocked) 
     
    33713428  
    33723429                        b43_radio_write(dev, 0x204D, 0); 
    3373 @@ -5713,11 +6574,15 @@ static void b43_nphy_op_software_rfkill( 
     3430@@ -5713,11 +6577,15 @@ static void b43_nphy_op_software_rfkill( 
    33743431                        b43_radio_write(dev, 0x3064, 0); 
    33753432                } 
     
    33913448                } else { 
    33923449                        b43_radio_init2055(dev); 
    3393 @@ -5728,10 +6593,13 @@ static void b43_nphy_op_software_rfkill( 
     3450@@ -5728,10 +6596,13 @@ static void b43_nphy_op_software_rfkill( 
    33943451 /* http://bcm-v4.sipsolutions.net/802.11/PHY/Anacore */ 
    33953452 static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on) 
     
    39564013        -114, -108, -98, -91, -84, -78, -70, -62, 
    39574014        -54, -46, -39, -31, -23, -15, -8, 0 
     4015@@ -2698,11 +3109,11 @@ static const struct nphy_rf_control_over 
     4016        { 0x0010, 0x07A, 0x07D, 0x0010, 4 }, 
     4017        { 0x0020, 0x07A, 0x07D, 0x0020, 5 }, 
     4018        { 0x0040, 0x07A, 0x07D, 0x0040, 6 }, 
     4019-       { 0x0080, 0x0F8, 0x0FA, 0x0080, 7 }, 
     4020+       { 0x0080, 0x07A, 0x07D, 0x0080, 7 }, 
     4021        { 0x0400, 0x0F8, 0x0FA, 0x0070, 4 }, 
     4022        { 0x0800, 0x07B, 0x07E, 0xFFFF, 0 }, 
     4023        { 0x1000, 0x07C, 0x07F, 0xFFFF, 0 }, 
     4024-       { 0x6000, 0x348, 0x349, 0xFFFF, 0 }, 
     4025+       { 0x6000, 0x348, 0x349, 0x00FF, 0 }, 
     4026        { 0x2000, 0x348, 0x349, 0x000F, 0 }, 
     4027 }; 
     4028  
    39584029@@ -3031,31 +3442,8 @@ void b43_ntab_write_bulk(struct b43_wlde 
    39594030                b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \ 
     
    50965167 #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_20_SIZE       18 
    50975168 #define B43_NTAB_TX_IQLO_CAL_IQIMB_LADDER_40_SIZE      18 
     5169--- a/drivers/net/wireless/b43/xmit.c 
     5170+++ b/drivers/net/wireless/b43/xmit.c 
     5171@@ -80,9 +80,10 @@ static int b43_plcp_get_bitrate_idx_cck( 
     5172 } 
     5173  
     5174 /* Extract the bitrate index out of an OFDM PLCP header. */ 
     5175-static int b43_plcp_get_bitrate_idx_ofdm(struct b43_plcp_hdr6 *plcp, bool aphy) 
     5176+static int b43_plcp_get_bitrate_idx_ofdm(struct b43_plcp_hdr6 *plcp, bool ghz5) 
     5177 { 
     5178-       int base = aphy ? 0 : 4; 
     5179+       /* For 2 GHz band first OFDM rate is at index 4, see main.c */ 
     5180+       int base = ghz5 ? 0 : 4; 
     5181  
     5182        switch (plcp->raw[0] & 0xF) { 
     5183        case 0xB: 
     5184@@ -767,7 +768,7 @@ void b43_rx(struct b43_wldev *dev, struc 
     5185  
     5186        if (phystat0 & B43_RX_PHYST0_OFDM) 
     5187                rate_idx = b43_plcp_get_bitrate_idx_ofdm(plcp, 
     5188-                                               phytype == B43_PHYTYPE_A); 
     5189+                                       !!(chanstat & B43_RX_CHAN_5GHZ)); 
     5190        else 
     5191                rate_idx = b43_plcp_get_bitrate_idx_cck(plcp); 
     5192        if (unlikely(rate_idx == -1)) { 
    50985193--- a/.local-symbols 
    50995194+++ b/.local-symbols 
  • branches/barrier_breaker/package/kernel/mac80211/patches/805-b43-gpio-mask-module-option.patch

    r41668 r42021  
    2323 module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); 
    2424 MODULE_PARM_DESC(bad_frames_preempt, 
    25 @@ -2798,10 +2803,10 @@ static int b43_gpio_init(struct b43_wlde 
     25@@ -2814,10 +2819,10 @@ static int b43_gpio_init(struct b43_wlde 
    2626        u32 mask, set; 
    2727  
  • branches/barrier_breaker/package/kernel/mac80211/patches/810-b43_no_pio.patch

    r41668 r42021  
    1212--- a/drivers/net/wireless/b43/main.c 
    1313+++ b/drivers/net/wireless/b43/main.c 
    14 @@ -1924,10 +1924,12 @@ static void b43_do_interrupt_thread(stru 
     14@@ -1940,10 +1940,12 @@ static void b43_do_interrupt_thread(stru 
    1515                        dma_reason[0], dma_reason[1], 
    1616                        dma_reason[2], dma_reason[3], 
  • branches/barrier_breaker/package/kernel/mac80211/patches/820-b43-add-antenna-control.patch

    r41805 r42021  
    11--- a/drivers/net/wireless/b43/main.c 
    22+++ b/drivers/net/wireless/b43/main.c 
    3 @@ -1571,7 +1571,7 @@ static void b43_write_beacon_template(st 
     3@@ -1587,7 +1587,7 @@ static void b43_write_beacon_template(st 
    44                                  len, ram_offset, shm_size_offset, rate); 
    55  
     
    1010        ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL); 
    1111        /* We can't send beacons with short preamble. Would get PHY errors. */ 
    12 @@ -3201,8 +3201,8 @@ static int b43_chip_init(struct b43_wlde 
     12@@ -3218,8 +3218,8 @@ static int b43_chip_init(struct b43_wlde 
    1313  
    1414        /* Select the antennae */ 
     
    2121        if (phy->type == B43_PHYTYPE_B) { 
    2222                value16 = b43_read16(dev, 0x005E); 
    23 @@ -3896,7 +3896,6 @@ static int b43_op_config(struct ieee8021 
     23@@ -3913,7 +3913,6 @@ static int b43_op_config(struct ieee8021 
    2424        struct b43_wldev *dev = wl->current_dev; 
    2525        struct b43_phy *phy = &dev->phy; 
     
    2929  
    3030        mutex_lock(&wl->mutex); 
    31 @@ -3936,11 +3935,9 @@ static int b43_op_config(struct ieee8021 
     31@@ -3953,11 +3952,9 @@ static int b43_op_config(struct ieee8021 
    3232        } 
    3333  
     
    4343        if (wl->radio_enabled != phy->radio_on) { 
    4444                if (wl->radio_enabled) { 
    45 @@ -5077,6 +5074,47 @@ static int b43_op_get_survey(struct ieee 
     45@@ -5094,6 +5091,47 @@ static int b43_op_get_survey(struct ieee 
    4646        return 0; 
    4747 } 
     
    9191        .tx                     = b43_op_tx, 
    9292        .conf_tx                = b43_op_conf_tx, 
    93 @@ -5098,6 +5136,8 @@ static const struct ieee80211_ops b43_hw 
     93@@ -5115,6 +5153,8 @@ static const struct ieee80211_ops b43_hw 
    9494        .sw_scan_complete       = b43_op_sw_scan_complete_notifier, 
    9595        .get_survey             = b43_op_get_survey, 
     
    100100  
    101101 /* Hard-reset the chip. Do not call this directly. 
    102 @@ -5397,6 +5437,8 @@ static int b43_one_core_attach(struct b4 
     102@@ -5418,6 +5458,8 @@ static int b43_one_core_attach(struct b4 
    103103        if (!wldev) 
    104104                goto out; 
     
    109109        wldev->dev = dev; 
    110110        wldev->wl = wl; 
    111 @@ -5487,6 +5529,9 @@ static struct b43_wl *b43_wireless_init( 
     111@@ -5508,6 +5550,9 @@ static struct b43_wl *b43_wireless_init( 
    112112  
    113113        hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; 
  • branches/barrier_breaker/package/kernel/mac80211/patches/830-b43-workaround-pcie-bcm4716.patch

    r41805 r42021  
    2020--- a/drivers/net/wireless/b43/b43.h 
    2121+++ b/drivers/net/wireless/b43/b43.h 
    22 @@ -1054,6 +1054,31 @@ static inline bool b43_using_pio_transfe 
     22@@ -1054,6 +1054,15 @@ static inline bool b43_using_pio_transfe 
    2323        return dev->__using_pio_transfers; 
    2424 } 
    2525  
    26 +/* 
    27 + * bcm4716 (which includes 4717 & 4718), plus 4706 on PCIe can reorder 
    28 + * transactions. As a fix, a read after write is performed on certain places 
    29 + * in the code. Older chips and the newer 5357 family don't require this fix. 
    30 + */ 
    3126+#ifdef CONFIG_BCM47XX_BCMA 
    32 +#include <asm/mach-bcm47xx/bcm47xx.h> 
    33 +static inline void b43_wflush16(struct b43_wldev *dev, u16 offset, u16 value) 
    34 +{ 
    35 +       if (b43_bus_host_is_pci(dev->dev) && 
    36 +           bcm47xx_bus_type == BCM47XX_BUS_TYPE_BCMA && 
    37 +           bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4716) { 
    38 +               b43_write16(dev, offset, value); 
    39 +               b43_read16(dev, offset); 
    40 +       } else { 
    41 +               b43_write16(dev, offset, value); 
    42 +       } 
    43 +} 
     27+void b43_wflush16(struct b43_wldev *dev, u16 offset, u16 value); 
    4428+#else 
    4529+static inline void b43_wflush16(struct b43_wldev *dev, u16 offset, u16 value) 
     
    7559--- a/drivers/net/wireless/b43/main.c 
    7660+++ b/drivers/net/wireless/b43/main.c 
    77 @@ -4464,7 +4464,7 @@ static int b43_phy_versioning(struct b43 
     61@@ -4481,7 +4481,7 @@ static int b43_phy_versioning(struct b43 
    7862                u16 radio24[3]; 
    7963  
     
    8468                } 
    8569  
    86 @@ -4481,10 +4481,10 @@ static int b43_phy_versioning(struct b43 
     70@@ -4498,10 +4498,10 @@ static int b43_phy_versioning(struct b43 
    8771                        else 
    8872                                tmp = 0x5205017F; 
     
    9781                        tmp |= (u32)b43_read16(dev, B43_MMIO_RADIO_DATA_HIGH) 
    9882                                << 16; 
     83@@ -4576,6 +4576,26 @@ static int b43_phy_versioning(struct b43 
     84        return 0; 
     85 } 
     86  
     87+/* 
     88+ * bcm4716 (which includes 4717 & 4718), plus 4706 on PCIe can reorder 
     89+ * transactions. As a fix, a read after write is performed on certain places 
     90+ * in the code. Older chips and the newer 5357 family don't require this fix. 
     91+ */ 
     92+#ifdef CONFIG_BCM47XX_BCMA 
     93+#include <asm/mach-bcm47xx/bcm47xx.h> 
     94+void b43_wflush16(struct b43_wldev *dev, u16 offset, u16 value) 
     95+{ 
     96+       if (b43_bus_host_is_pci(dev->dev) && 
     97+           bcm47xx_bus_type == BCM47XX_BUS_TYPE_BCMA && 
     98+           bcm47xx_bus.bcma.bus.chipinfo.id == BCMA_CHIP_ID_BCM4716) { 
     99+               b43_write16(dev, offset, value); 
     100+               b43_read16(dev, offset); 
     101+       } else { 
     102+               b43_write16(dev, offset, value); 
     103+       } 
     104+} 
     105+#endif 
     106+ 
     107 static void setup_struct_phy_for_init(struct b43_wldev *dev, 
     108                                      struct b43_phy *phy) 
     109 { 
    99110--- a/drivers/net/wireless/b43/phy_common.c 
    100111+++ b/drivers/net/wireless/b43/phy_common.c 
     
    200211--- a/drivers/net/wireless/b43/phy_n.c 
    201212+++ b/drivers/net/wireless/b43/phy_n.c 
    202 @@ -6494,14 +6494,14 @@ static inline void check_phyreg(struct b 
     213@@ -6500,14 +6500,14 @@ static inline void check_phyreg(struct b 
    203214 static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg) 
    204215 { 
     
    217228 } 
    218229  
    219 @@ -6509,7 +6509,7 @@ static void b43_nphy_op_maskset(struct b 
     230@@ -6515,7 +6515,7 @@ static void b43_nphy_op_maskset(struct b 
    220231                                 u16 set) 
    221232 { 
     
    226237 } 
    227238  
    228 @@ -6523,7 +6523,7 @@ static u16 b43_nphy_op_radio_read(struct 
     239@@ -6529,7 +6529,7 @@ static u16 b43_nphy_op_radio_read(struct 
    229240        else 
    230241                reg |= 0x100; 
     
    235246 } 
    236247  
    237 @@ -6532,7 +6532,7 @@ static void b43_nphy_op_radio_write(stru 
     248@@ -6538,7 +6538,7 @@ static void b43_nphy_op_radio_write(stru 
    238249        /* Register 1 is a 32-bit register. */ 
    239250        B43_WARN_ON(dev->phy.rev < 7 && reg == 1); 
  • branches/barrier_breaker/package/kernel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch

    r41668 r42021  
    11--- a/drivers/net/wireless/b43/main.c 
    22+++ b/drivers/net/wireless/b43/main.c 
    3 @@ -2815,6 +2815,14 @@ static int b43_gpio_init(struct b43_wlde 
     3@@ -2831,6 +2831,14 @@ static int b43_gpio_init(struct b43_wlde 
    44        } else if (dev->dev->chip_id == 0x5354) { 
    55                /* Don't allow overtaking buttons GPIOs */ 
Note: See TracChangeset for help on using the changeset viewer.