--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -1265,7 +1265,7 @@ static inline void rt2x00lib_set_if_comb
+@@ -1276,7 +1276,7 @@ static inline void rt2x00lib_set_if_comb
*/
if_limit = &rt2x00dev->if_limits_ap;
if_limit->max = rt2x00dev->ops->max_ap_intf;
-Index: compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800.h
-===================================================================
---- compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800.h 2014-08-31 05:04:55.600142409 +0200
-+++ compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800.h 2014-08-31 05:11:02.068145882 +0200
-@@ -2346,6 +2346,8 @@
+--- a/drivers/net/wireless/rt2x00/rt2800.h
++++ b/drivers/net/wireless/rt2x00/rt2800.h
+@@ -2319,6 +2319,8 @@ struct mac_iveiv_entry {
#define RFCSR30_RX_H20M FIELD8(0x04)
#define RFCSR30_RX_VCM FIELD8(0x18)
#define RFCSR30_RF_CALIBRATION FIELD8(0x80)
/*
* RFCSR 31:
-Index: compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800lib.c
-===================================================================
---- compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800lib.c 2014-08-31 05:04:55.604142409 +0200
-+++ compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800lib.c 2014-08-31 05:15:02.176148157 +0200
-@@ -3928,8 +3928,13 @@
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -3549,8 +3549,13 @@ static void rt2800_config_channel(struct
rt2x00_rf(rt2x00dev, RF5390) ||
rt2x00_rf(rt2x00dev, RF5392)) {
rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr);
phy->gmode = gmode;
b43_phy_put_into_reset(dev);
-@@ -3796,38 +3903,29 @@ static void b43_set_retry_limits(struct
+@@ -3796,38 +3903,29 @@ static void b43_set_retry_limits(struct
static int b43_op_config(struct ieee80211_hw *hw, u32 changed)
{
struct b43_wl *wl = hw_to_b43_wl(hw);
if (ops->exit)
ops->exit(dev);
}
-@@ -403,9 +411,6 @@ int b43_switch_channel(struct b43_wldev
+@@ -403,9 +411,6 @@ int b43_switch_channel(struct b43_wldev
u16 channelcookie, savedcookie;
int err;
/* First we set the channel radio code to prevent the
* firmware from sending ghost packets.
*/
-@@ -423,7 +428,6 @@ int b43_switch_channel(struct b43_wldev
+@@ -423,7 +428,6 @@ int b43_switch_channel(struct b43_wldev
if (err)
goto err_restore_cookie;
struct ssb_sprom *sprom = dev->dev->bus_sprom;
enum ieee80211_band band = b43_current_band(dev->wl);
u16 offset;
-@@ -897,7 +1230,7 @@ static void b43_radio_2056_setup(struct
+@@ -897,7 +1230,7 @@ static void b43_radio_2056_setup(struct
offset | B2056_TX_MIXG_BOOST_TUNE,
mixg_boost);
} else {
b43_radio_write(dev,
offset | B2056_TX_INTPAG_IMAIN_STAT,
bias);
-@@ -911,7 +1244,7 @@ static void b43_radio_2056_setup(struct
+@@ -911,7 +1244,7 @@ static void b43_radio_2056_setup(struct
b43_radio_write(dev, offset | B2056_TX_PA_SPARE1, 0xee);
}
} else if (dev->phy.n->ipa5g_on && band == IEEE80211_BAND_5GHZ) {
struct b43_phy_n *nphy = dev->phy.n;
int i;
u16 seq_mode;
-@@ -1261,17 +1593,35 @@ static void b43_nphy_run_samples(struct
+@@ -1261,17 +1593,35 @@ static void b43_nphy_run_samples(struct
b43_nphy_stay_in_carrier_search(dev, true);
b43_phy_write(dev, B43_NPHY_SAMP_DEPCNT, (samps - 1));
-@@ -1289,10 +1639,8 @@ static void b43_nphy_run_samples(struct
+@@ -1289,10 +1639,8 @@ static void b43_nphy_run_samples(struct
b43_phy_mask(dev, B43_NPHY_IQLOCAL_CMDGCTL, 0x7FFF);
b43_phy_set(dev, B43_NPHY_IQLOCAL_CMDGCTL, 0x8000);
} else {
b43_ntab_write(dev, B43_NTAB32(16, 3), 0x18D);
b43_ntab_write(dev, B43_NTAB32(16, 127), 0x18D);
} else {
-@@ -2930,6 +3461,7 @@ static void b43_nphy_workarounds(struct
+@@ -2930,6 +3461,7 @@ static void b43_nphy_workarounds(struct
b43_phy_set(dev, B43_NPHY_IQFLIP,
B43_NPHY_IQFLIP_ADC1 | B43_NPHY_IQFLIP_ADC2);
if (dev->phy.rev >= 7)
b43_nphy_workarounds_rev7plus(dev);
else if (dev->phy.rev >= 3)
-@@ -2950,12 +3482,13 @@ static void b43_nphy_workarounds(struct
+@@ -2950,12 +3482,13 @@ static void b43_nphy_workarounds(struct
* http://bcm-v4.sipsolutions.net/802.11/PHY/N/TXTone
*/
static int b43_nphy_tx_tone(struct b43_wldev *dev, u32 freq, u16 max_val,
}
}
-@@ -3688,7 +4285,9 @@ static void b43_nphy_pa_override(struct
+@@ -3688,7 +4285,9 @@ static void b43_nphy_pa_override(struct
nphy->rfctrl_intc2_save = b43_phy_read(dev,
B43_NPHY_RFCTL_INTC2);
band = b43_current_band(dev->wl);
if (band == IEEE80211_BAND_5GHZ)
tmp = 0x600;
else
-@@ -3709,21 +4308,28 @@ static void b43_nphy_pa_override(struct
+@@ -3709,21 +4308,28 @@ static void b43_nphy_pa_override(struct
}
}
struct b43_phy_n *nphy = dev->phy.n;
u16 coef[4];
-@@ -4562,7 +5329,26 @@ static void b43_nphy_restore_cal(struct
+@@ -4562,7 +5329,26 @@ static void b43_nphy_restore_cal(struct
}
/* TODO use some definitions */
b43_radio_write(dev, 0x2021, txcal_radio_regs[0]);
b43_radio_write(dev, 0x2022, txcal_radio_regs[1]);
b43_radio_write(dev, 0x3021, txcal_radio_regs[2]);
-@@ -4585,6 +5371,7 @@ static int b43_nphy_cal_tx_iq_lo(struct
+@@ -4585,6 +5371,7 @@ static int b43_nphy_cal_tx_iq_lo(struct
struct nphy_txgains target,
bool full, bool mphase)
{
struct b43_phy_n *nphy = dev->phy.n;
int i;
int error = 0;
-@@ -4625,7 +5412,7 @@ static int b43_nphy_cal_tx_iq_lo(struct
+@@ -4625,7 +5412,7 @@ static int b43_nphy_cal_tx_iq_lo(struct
(dev->phy.rev == 5 && nphy->ipa2g_on &&
b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ);
if (phy6or5x) {
b43_ntab_write_bulk(dev, B43_NTAB16(15, 0), 18,
tbl_tx_iqlo_cal_loft_ladder_40);
b43_ntab_write_bulk(dev, B43_NTAB16(15, 32), 18,
-@@ -4638,18 +5425,24 @@ static int b43_nphy_cal_tx_iq_lo(struct
+@@ -4638,18 +5425,24 @@ static int b43_nphy_cal_tx_iq_lo(struct
}
}
if (error == 0) {
if (nphy->mphase_cal_phase_id > 2) {
-@@ -4777,9 +5570,9 @@ static int b43_nphy_cal_tx_iq_lo(struct
+@@ -4777,9 +5570,9 @@ static int b43_nphy_cal_tx_iq_lo(struct
nphy->txiqlocal_bestc);
nphy->txiqlocal_coeffsvalid = true;
nphy->txiqlocal_chanspec.center_freq =
---- a/drivers/net/wireless/rt2x00/rt2800.h 2014-06-30 01:05:26.000000000 +0300
-+++ b/drivers/net/wireless/rt2x00/rt2800.h 2014-06-30 01:23:42.000000000 +0300
+--- a/drivers/net/wireless/rt2x00/rt2800.h
++++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -79,6 +79,7 @@
#define RF5372 0x5372
#define RF5390 0x5390
/* TX_PWR_CFG_7 */
#define TX_PWR_CFG_7 0x13d4
#define TX_PWR_CFG_7_OFDM54_CH0 FIELD32(0x0000000f)
---- a/drivers/net/wireless/rt2x00/rt2800lib.c 2014-06-30 01:05:26.000000000 +0300
-+++ b/drivers/net/wireless/rt2x00/rt2800lib.c 2014-06-30 17:31:35.000000000 +0300
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -61,6 +61,8 @@
rt2800_regbusy_read((__dev), BBP_CSR_CFG, BBP_CSR_CFG_BUSY, (__reg))
#define WAIT_FOR_RFCSR(__dev, __reg) \
default:
rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
}
-@@ -3631,7 +4010,7 @@ static void rt2800_config_channel(struct
+@@ -3636,7 +4015,7 @@ static void rt2800_config_channel(struct
else if (rt2x00_rt(rt2x00dev, RT3593) ||
rt2x00_rt(rt2x00dev, RT3883))
rt2800_bbp_write(rt2x00dev, 82, 0x82);
rt2800_bbp_write(rt2x00dev, 82, 0xf2);
if (rt2x00_rt(rt2x00dev, RT3593) ||
-@@ -3653,7 +4032,7 @@ static void rt2800_config_channel(struct
+@@ -3658,7 +4037,7 @@ static void rt2800_config_channel(struct
if (rt2x00_rt(rt2x00dev, RT3572))
rt2800_rfcsr_write(rt2x00dev, 8, 0);
switch (rt2x00dev->default_ant.tx_chain_num) {
case 3:
-@@ -3702,6 +4081,7 @@ static void rt2800_config_channel(struct
+@@ -3707,6 +4086,7 @@ static void rt2800_config_channel(struct
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFTR_EN, 1);
rt2x00_set_field32(&tx_pin, TX_PIN_CFG_TRSW_EN, 1);
rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
-@@ -4710,6 +5090,14 @@ void rt2800_vco_calibration(struct rt2x0
+@@ -4715,6 +5095,14 @@ void rt2800_vco_calibration(struct rt2x0
rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
break;
default:
return;
}
-@@ -5110,9 +5498,42 @@ static int rt2800_init_registers(struct
+@@ -5115,9 +5503,42 @@ static int rt2800_init_registers(struct
} else if (rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392) ||
rt2x00_rt(rt2x00dev, RT5592)) {
} else if (rt2x00_rt(rt2x00dev, RT5350)) {
rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
} else {
-@@ -6144,6 +6565,225 @@ static void rt2800_init_bbp_5592(struct
+@@ -6149,6 +6570,225 @@ static void rt2800_init_bbp_5592(struct
rt2800_bbp_write(rt2x00dev, 103, 0xc0);
}
static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
{
unsigned int i;
-@@ -6186,7 +6826,10 @@ static void rt2800_init_bbp(struct rt2x0
+@@ -6191,7 +6831,10 @@ static void rt2800_init_bbp(struct rt2x0
return;
case RT5390:
case RT5392:
break;
case RT5592:
rt2800_init_bbp_5592(rt2x00dev);
-@@ -7400,6 +8043,295 @@ static void rt2800_init_rfcsr_5592(struc
+@@ -7405,6 +8048,295 @@ static void rt2800_init_rfcsr_5592(struc
rt2800_led_open_drain_enable(rt2x00dev);
}
static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
{
if (rt2800_is_305x_soc(rt2x00dev)) {
-@@ -7435,7 +8367,10 @@ static void rt2800_init_rfcsr(struct rt2
+@@ -7440,7 +8372,10 @@ static void rt2800_init_rfcsr(struct rt2
rt2800_init_rfcsr_5350(rt2x00dev);
break;
case RT5390:
break;
case RT5392:
rt2800_init_rfcsr_5392(rt2x00dev);
-@@ -7866,6 +8801,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7871,6 +8806,7 @@ static int rt2800_init_eeprom(struct rt2
case RF5390:
case RF5392:
case RF5592:
break;
default:
rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n",
-@@ -8431,6 +9367,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8436,6 +9372,7 @@ static int rt2800_probe_hw_mode(struct r
case RF5372:
case RF5390:
case RF5392:
spec->num_channels = 14;
if (spec->clk_is_20mhz)
spec->channels = rf_vals_xtal20mhz_3x;
-@@ -8570,6 +9507,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8575,6 +9512,7 @@ static int rt2800_probe_hw_mode(struct r
case RF5372:
case RF5390:
case RF5392:
-diff -u -N -r compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800.h compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800.h
---- compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800.h 2014-10-10 14:53:56.000000000 +0200
-+++ compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800.h 2014-10-10 15:09:36.000000000 +0200
+--- a/drivers/net/wireless/rt2x00/rt2800.h
++++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -53,6 +53,7 @@
* RF5592 2.4G/5G 2T2R
* RF3070 2.4G 1T1R
#define RF5370 0x5370
#define RF5372 0x5372
#define RF5390 0x5390
-@@ -2207,7 +2209,7 @@
+@@ -2207,7 +2209,7 @@ struct mac_iveiv_entry {
/* Bits [7-4] for RF3320 (RT3370/RT3390), on other chipsets reserved */
#define RFCSR3_PA1_BIAS_CCK FIELD8(0x70)
#define RFCSR3_PA2_CASCODE_BIAS_CCKK FIELD8(0x80)
#define RFCSR3_VCOCAL_EN FIELD8(0x80)
/* Bits for RF3050 */
#define RFCSR3_BIT1 FIELD8(0x02)
-diff -u -N -r compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800lib.c compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800lib.c
---- compat-wireless-2014-05-22.orig/drivers/net/wireless/rt2x00/rt2800lib.c 2014-10-10 14:53:56.000000000 +0200
-+++ compat-wireless-2014-05-22/drivers/net/wireless/rt2x00/rt2800lib.c 2014-10-10 15:10:43.000000000 +0200
-@@ -3902,6 +3902,7 @@
+--- a/drivers/net/wireless/rt2x00/rt2800lib.c
++++ b/drivers/net/wireless/rt2x00/rt2800lib.c
+@@ -3902,6 +3902,7 @@ static void rt2800_config_channel(struct
case RF3070:
case RF5350:
case RF5360:
case RF5370:
case RF5372:
case RF5390:
-@@ -3923,6 +3924,7 @@
+@@ -3923,6 +3924,7 @@ static void rt2800_config_channel(struct
rt2x00_rf(rt2x00dev, RF3322) ||
rt2x00_rf(rt2x00dev, RF5350) ||
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) ||
rt2x00_rf(rt2x00dev, RF5390) ||
-@@ -5087,6 +5089,7 @@
+@@ -5087,6 +5089,7 @@ void rt2800_vco_calibration(struct rt2x0
case RF3853:
case RF5350:
case RF5360:
case RF5370:
case RF5372:
case RF5390:
-@@ -8801,6 +8804,7 @@
+@@ -8801,6 +8804,7 @@ static int rt2800_init_eeprom(struct rt2
case RF3853:
case RF5350:
case RF5360:
case RF5370:
case RF5372:
case RF5390:
-@@ -9368,6 +9372,7 @@
+@@ -9368,6 +9372,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3322:
case RF5350:
case RF5360:
case RF5370:
case RF5372:
case RF5390:
-@@ -9508,6 +9513,7 @@
+@@ -9508,6 +9513,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3853:
case RF5350:
case RF5360: