mac80211: refresh rt2x00 patches
authorJohn Crispin <john@openwrt.org>
Wed, 23 Apr 2014 07:52:37 +0000 (07:52 +0000)
committerJohn Crispin <john@openwrt.org>
Wed, 23 Apr 2014 07:52:37 +0000 (07:52 +0000)
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 40559

package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch
package/kernel/mac80211/patches/608-add_platform_data_mac_addr.patch
package/kernel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch
package/kernel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch
package/kernel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch
package/kernel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch
package/kernel/mac80211/patches/616-rt2x00-support-rt5350.patch
package/kernel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch
package/kernel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch

index 3d7a94514b758122d07a3cd6615db844224498c4..c7d71e2c73f4c80a8eeea5d5a795d2e63656dc67 100644 (file)
  obj-$(CPTCFG_RT2X00_LIB_MMIO)         += rt2x00mmio.o
 --- a/drivers/net/wireless/rt2x00/rt2800lib.h
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.h
-@@ -20,6 +20,8 @@
- #ifndef RT2800LIB_H
- #define RT2800LIB_H
+@@ -43,6 +43,8 @@ struct rt2800_drv_data {
+       } shmem_lock;
+ };
  
 +#include "rt2800.h"
 +
  struct rt2800_ops {
        void (*register_read)(struct rt2x00_dev *rt2x00dev,
                              const unsigned int offset, u32 *value);
-@@ -119,6 +121,15 @@ static inline int rt2800_read_eeprom(str
+@@ -176,6 +178,15 @@ static inline int rt2800_read_eeprom(str
  {
        const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv;
  
@@ -75,7 +75,7 @@
  
 --- a/drivers/net/wireless/rt2x00/rt2800soc.c
 +++ b/drivers/net/wireless/rt2x00/rt2800soc.c
-@@ -95,19 +95,6 @@ static int rt2800soc_set_device_state(st
+@@ -102,19 +102,6 @@ static int rt2800soc_set_device_state(st
        return retval;
  }
  
@@ -95,7 +95,7 @@
  /* Firmware functions */
  static char *rt2800soc_get_firmware_name(struct rt2x00_dev *rt2x00dev)
  {
-@@ -171,7 +158,6 @@ static const struct rt2800_ops rt2800soc
+@@ -178,7 +165,6 @@ static const struct rt2800_ops rt2800soc
        .register_multiread     = rt2x00mmio_register_multiread,
        .register_multiwrite    = rt2x00mmio_register_multiwrite,
        .regbusy_read           = rt2x00mmio_regbusy_read,
index a910cc36c051a1fc8e4ddc6190fb49d08e28b705..1db09a324f09607d5734c9a00338837861ab7071 100644 (file)
@@ -31,7 +31,7 @@
  {
 --- a/drivers/net/wireless/rt2x00/rt2x00.h
 +++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -1401,6 +1401,7 @@ static inline void rt2x00debug_dump_fram
+@@ -1406,6 +1406,7 @@ static inline void rt2x00debug_dump_fram
   */
  u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
                         struct ieee80211_vif *vif);
index 83fbcd0fccf1c214c459dd6d92bb92f283a4ca44..3d32ecc434ce7aa29f8e83754fd14a4d2d07bf41 100644 (file)
@@ -1,14 +1,15 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -3176,11 +3176,17 @@ static void rt2800_config_channel(struct
+@@ -3506,11 +3506,18 @@ static void rt2800_config_channel(struct
        /*
         * Change BBP settings
         */
-+      rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
-+      rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
-+      rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
 +
        if (rt2x00_rt(rt2x00dev, RT3352)) {
++              rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
++              rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
++              rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
++
                rt2800_bbp_write(rt2x00dev, 27, 0x0);
                rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain);
                rt2800_bbp_write(rt2x00dev, 27, 0x20);
        } else if (rt2x00_rt(rt2x00dev, RT3593)) {
                if (rf->channel > 14) {
                        /* Disable CCK Packet detection on 5GHz */
-@@ -3194,14 +3200,8 @@ static void rt2800_config_channel(struct
-               else
-                       rt2800_bbp_write(rt2x00dev, 105, 0x34);
--              rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
--              rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
--              rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
-               rt2800_bbp_write(rt2x00dev, 77, 0x98);
-       } else {
--              rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
--              rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
--              rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
-               rt2800_bbp_write(rt2x00dev, 86, 0);
-       }
-@@ -6125,6 +6125,12 @@ static void rt2800_init_rfcsr_3290(struc
+@@ -6586,6 +6593,12 @@ static void rt2800_init_rfcsr_3290(struc
  
  static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
  {
@@ -46,7 +32,7 @@
        rt2800_rf_init_calibration(rt2x00dev, 30);
  
        rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
-@@ -6160,15 +6166,30 @@ static void rt2800_init_rfcsr_3352(struc
+@@ -6621,15 +6634,30 @@ static void rt2800_init_rfcsr_3352(struc
        rt2800_rfcsr_write(rt2x00dev, 31, 0x80);
        rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
        rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@@ -80,7 +66,7 @@
        rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
        rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
        rt2800_rfcsr_write(rt2x00dev, 45, 0xdb);
-@@ -6176,15 +6197,20 @@ static void rt2800_init_rfcsr_3352(struc
+@@ -6637,15 +6665,20 @@ static void rt2800_init_rfcsr_3352(struc
        rt2800_rfcsr_write(rt2x00dev, 47, 0x0d);
        rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
        rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
        rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
        rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
        rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
-@@ -7051,6 +7077,7 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7666,6 +7699,7 @@ static int rt2800_init_eeprom(struct rt2
         * RT53xx: defined in "EEPROM_CHIP_ID" field
         */
        if (rt2x00_rt(rt2x00dev, RT3290) ||
            rt2x00_rt(rt2x00dev, RT5390) ||
            rt2x00_rt(rt2x00dev, RT5392))
                rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
-@@ -7142,7 +7169,8 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7760,7 +7794,8 @@ static int rt2800_init_eeprom(struct rt2
        /*
         * Detect if this device has Bluetooth co-existence.
         */
                __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
  
        /*
-@@ -7171,6 +7199,22 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7789,6 +7824,22 @@ static int rt2800_init_eeprom(struct rt2
                                        EIRP_MAX_TX_POWER_LIMIT)
                __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
  
  
 --- a/drivers/net/wireless/rt2x00/rt2800.h
 +++ b/drivers/net/wireless/rt2x00/rt2800.h
-@@ -2299,6 +2299,12 @@ struct mac_iveiv_entry {
+@@ -2333,6 +2333,12 @@ struct mac_iveiv_entry {
  #define RFCSR36_RF_BS                 FIELD8(0x80)
  
  /*
   * RFCSR 38:
   */
  #define RFCSR38_RX_LO1_EN             FIELD8(0x20)
-@@ -2310,6 +2316,18 @@ struct mac_iveiv_entry {
+@@ -2344,6 +2350,18 @@ struct mac_iveiv_entry {
  #define RFCSR39_RX_LO2_EN             FIELD8(0x80)
  
  /*
   * RFCSR 49:
   */
  #define RFCSR49_TX                    FIELD8(0x3f)
-@@ -2322,6 +2340,8 @@ struct mac_iveiv_entry {
+@@ -2356,6 +2374,8 @@ struct mac_iveiv_entry {
   * RFCSR 50:
   */
  #define RFCSR50_TX                    FIELD8(0x3f)
  #define RFCSR50_EP                    FIELD8(0xc0)
  /* bits for RT3593 */
  #define RFCSR50_TX_LO1_EN             FIELD8(0x20)
-@@ -2469,6 +2489,8 @@ enum rt2800_eeprom_word {
+@@ -2503,6 +2523,8 @@ enum rt2800_eeprom_word {
   * INTERNAL_TX_ALC: 0: disable, 1: enable
   * BT_COEXIST: 0: disable, 1: enable
   * DAC_TEST: 0: disable, 1: enable
   */
  #define EEPROM_NIC_CONF1_HW_RADIO             FIELD16(0x0001)
  #define EEPROM_NIC_CONF1_EXTERNAL_TX_ALC      FIELD16(0x0002)
-@@ -2485,6 +2507,8 @@ enum rt2800_eeprom_word {
+@@ -2519,6 +2541,8 @@ enum rt2800_eeprom_word {
  #define EEPROM_NIC_CONF1_INTERNAL_TX_ALC      FIELD16(0x2000)
  #define EEPROM_NIC_CONF1_BT_COEXIST           FIELD16(0x4000)
  #define EEPROM_NIC_CONF1_DAC_TEST             FIELD16(0x8000)
index 7137834aa73f6a103bc58b6d7b7be1c8e48bbb5e..c69344cdbd92f5004738766e817b0f6aac431503 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7491,6 +7491,27 @@ static const struct rf_channel rf_vals_5
+@@ -8176,6 +8176,27 @@ static const struct rf_channel rf_vals_5
        {196, 83, 0, 12, 1},
  };
  
@@ -28,7 +28,7 @@
  static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
  {
        struct hw_mode_spec *spec = &rt2x00dev->spec;
-@@ -7578,7 +7599,10 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8263,7 +8284,10 @@ static int rt2800_probe_hw_mode(struct r
        case RF5390:
        case RF5392:
                spec->num_channels = 14;
@@ -40,7 +40,7 @@
                break;
  
        case RF3052:
-@@ -7754,6 +7778,19 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -8446,6 +8470,19 @@ static int rt2800_probe_rt(struct rt2x00
        return 0;
  }
  
@@ -59,8 +59,8 @@
 +
  int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
  {
-       int retval;
-@@ -7783,6 +7820,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
+       struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
+@@ -8488,6 +8525,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
        rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
  
        /*
index f6b4808e42674ce7cf4c76368e0fb9069e6d0b23..119e95c413e30c6a50c40af58ec78d6b58bcdc6b 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- a/drivers/net/wireless/rt2x00/rt2800soc.c
 +++ b/drivers/net/wireless/rt2x00/rt2800soc.c
-@@ -227,11 +227,18 @@ static int rt2800soc_probe(struct platfo
+@@ -237,11 +237,18 @@ static int rt2800soc_probe(struct platfo
        return rt2x00soc_probe(pdev, &rt2800soc_ops);
  }
  
index e95487395d0bba8e9b2b652dd7bbb3673dbd998a..aaabffc629ca7a26f61fd02adf1d7e9bd7479c88 100644 (file)
@@ -8,7 +8,7 @@
  
  #include "rt2x00.h"
  #include "rt2800lib.h"
-@@ -7780,13 +7781,14 @@ static int rt2800_probe_rt(struct rt2x00
+@@ -8472,13 +8473,14 @@ static int rt2800_probe_rt(struct rt2x00
  
  int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
  {
index a62ad157ed025f04fa39dac922d35ac0f09dd05e..2cc136cca091df74e8755fae76e40da52bccf69d 100644 (file)
@@ -1,16 +1,16 @@
 --- a/drivers/net/wireless/rt2x00/rt2800.h
 +++ b/drivers/net/wireless/rt2x00/rt2800.h
-@@ -71,6 +71,7 @@
- #define RF5592                                0x000f
+@@ -73,6 +73,7 @@
  #define RF3070                                0x3070
  #define RF3290                                0x3290
+ #define RF3853                                0x3853
 +#define RF5350                                0x5350
  #define RF5360                                0x5360
  #define RF5370                                0x5370
  #define RF5372                                0x5372
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -2705,6 +2705,13 @@ static void rt2800_config_channel_rf53xx
+@@ -2994,6 +2994,13 @@ static void rt2800_config_channel_rf53xx
  
                                rt2800_rfcsr_write(rt2x00dev, 59,
                                                   r59_non_bt[idx]);
                        }
                }
        }
-@@ -3142,6 +3149,7 @@ static void rt2800_config_channel(struct
-               rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
+@@ -3472,6 +3479,7 @@ static void rt2800_config_channel(struct
+               rt2800_config_channel_rf3853(rt2x00dev, conf, rf, info);
                break;
        case RF3070:
 +      case RF5350:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -3159,6 +3167,7 @@ static void rt2800_config_channel(struct
+@@ -3489,6 +3497,7 @@ static void rt2800_config_channel(struct
        if (rt2x00_rf(rt2x00dev, RF3070) ||
            rt2x00_rf(rt2x00dev, RF3290) ||
            rt2x00_rf(rt2x00dev, RF3322) ||
@@ -40,7 +40,7 @@
            rt2x00_rf(rt2x00dev, RF5360) ||
            rt2x00_rf(rt2x00dev, RF5370) ||
            rt2x00_rf(rt2x00dev, RF5372) ||
-@@ -3399,7 +3408,8 @@ static void rt2800_config_channel(struct
+@@ -3766,7 +3775,8 @@ static void rt2800_config_channel(struct
        /*
         * Clear update flag
         */
                rt2800_bbp_read(rt2x00dev, 49, &bbp);
                rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
                rt2800_bbp_write(rt2x00dev, 49, bbp);
-@@ -4273,6 +4283,7 @@ void rt2800_vco_calibration(struct rt2x0
-       case RF3053:
+@@ -4645,6 +4655,7 @@ void rt2800_vco_calibration(struct rt2x0
        case RF3070:
        case RF3290:
+       case RF3853:
 +      case RF5350:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -4669,6 +4680,8 @@ static int rt2800_init_registers(struct 
+@@ -5079,6 +5090,8 @@ static int rt2800_init_registers(struct
                rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
                rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
                rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
@@ -67,7 +67,7 @@
        } else {
                rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
                rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
-@@ -5310,9 +5323,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5734,9 +5747,13 @@ static void rt2800_init_bbp_3352(struct
  
        rt2800_bbp_write(rt2x00dev, 82, 0x62);
  
@@ -84,7 +84,7 @@
  
        rt2800_bbp_write(rt2x00dev, 86, 0x38);
  
-@@ -5326,9 +5343,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5750,9 +5767,13 @@ static void rt2800_init_bbp_3352(struct
  
        rt2800_bbp_write(rt2x00dev, 104, 0x92);
  
  
        rt2800_bbp_write(rt2x00dev, 120, 0x50);
  
-@@ -5353,6 +5374,13 @@ static void rt2800_init_bbp_3352(struct 
+@@ -5777,6 +5798,13 @@ static void rt2800_init_bbp_3352(struct
        rt2800_bbp_write(rt2x00dev, 143, 0xa2);
  
        rt2800_bbp_write(rt2x00dev, 148, 0xc8);
  }
  
  static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev)
-@@ -5653,6 +5681,7 @@ static void rt2800_init_bbp(struct rt2x0
+@@ -6118,6 +6146,7 @@ static void rt2800_init_bbp(struct rt2x0
                rt2800_init_bbp_3290(rt2x00dev);
                break;
        case RT3352:
                rt2800_init_bbp_3352(rt2x00dev);
                break;
        case RT3390:
-@@ -6463,6 +6492,76 @@ static void rt2800_init_rfcsr_3593(struc
-       /* TODO: enable stream mode support */
+@@ -7069,6 +7098,76 @@ static void rt2800_init_rfcsr_3883(struc
+       rt2800_rfcsr_write(rt2x00dev, 20, rfcsr);
  }
  
 +static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev)
  static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
  {
        rt2800_rf_init_calibration(rt2x00dev, 2);
-@@ -6700,6 +6799,9 @@ static void rt2800_init_rfcsr(struct rt2
+@@ -7309,6 +7408,9 @@ static void rt2800_init_rfcsr(struct rt2
        case RT3593:
                rt2800_init_rfcsr_3593(rt2x00dev);
                break;
        case RT5390:
                rt2800_init_rfcsr_5390(rt2x00dev);
                break;
-@@ -6949,6 +7051,12 @@ static int rt2800_validate_eeprom(struct
+@@ -7568,6 +7670,12 @@ static int rt2800_validate_eeprom(struct
                rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820);
                rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
                rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
        } else if (rt2x00_rt(rt2x00dev, RT2860) ||
                   rt2x00_rt(rt2x00dev, RT2872)) {
                /*
-@@ -7082,6 +7190,8 @@ static int rt2800_init_eeprom(struct rt2
-           rt2x00_rt(rt2x00dev, RT5390) ||
-           rt2x00_rt(rt2x00dev, RT5392))
+@@ -7706,6 +7814,8 @@ static int rt2800_init_eeprom(struct rt2
                rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
+       else if (rt2x00_rt(rt2x00dev, RT3883))
+               rf = RF3853;
 +      else if (rt2x00_rt(rt2x00dev, RT5350))
 +              rf = RF5350;
        else
                rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
  
-@@ -7100,6 +7210,7 @@ static int rt2800_init_eeprom(struct rt2
-       case RF3290:
+@@ -7725,6 +7835,7 @@ static int rt2800_init_eeprom(struct rt2
        case RF3320:
        case RF3322:
+       case RF3853:
 +      case RF5350:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -7594,6 +7705,7 @@ static int rt2800_probe_hw_mode(struct r
+@@ -8279,6 +8390,7 @@ static int rt2800_probe_hw_mode(struct r
        case RF3290:
        case RF3320:
        case RF3322:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -7726,6 +7838,7 @@ static int rt2800_probe_hw_mode(struct r
-       case RF3053:
+@@ -8417,6 +8529,7 @@ static int rt2800_probe_hw_mode(struct r
        case RF3070:
        case RF3290:
+       case RF3853:
 +      case RF5350:
        case RF5360:
        case RF5370:
        case RF5372:
-@@ -7764,6 +7877,7 @@ static int rt2800_probe_rt(struct rt2x00
-       case RT3390:
+@@ -8456,6 +8569,7 @@ static int rt2800_probe_rt(struct rt2x00
        case RT3572:
        case RT3593:
+       case RT3883:
 +      case RT5350:
        case RT5390:
        case RT5392:
index f820b96f6e9ef243d649d1273f14388aa05aa609..d2271d36b5506fa98f8cdf17e6e37f5a34075ca4 100644 (file)
@@ -8,7 +8,7 @@
  
  #include "rt2x00.h"
  #include "rt2800lib.h"
-@@ -7299,6 +7300,17 @@ static int rt2800_init_eeprom(struct rt2
+@@ -7924,6 +7925,17 @@ static int rt2800_init_eeprom(struct rt2
        rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
        rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);
  
index 51c223d12ca6eb63119443d1d0c9c63b883e0adf..a33c01fb08e06b476fc0cfe8c64f012f0467b1f1 100644 (file)
@@ -1,15 +1,11 @@
 --- a/drivers/net/wireless/rt2x00/rt2800lib.c
 +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
-@@ -7187,10 +7187,11 @@ static int rt2800_init_eeprom(struct rt2
-        * RT53xx: defined in "EEPROM_CHIP_ID" field
-        */
-       if (rt2x00_rt(rt2x00dev, RT3290) ||
--          rt2x00_rt(rt2x00dev, RT3352) ||
+@@ -7813,6 +7813,8 @@ static int rt2800_init_eeprom(struct rt2
            rt2x00_rt(rt2x00dev, RT5390) ||
            rt2x00_rt(rt2x00dev, RT5392))
                rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
 +      else if (rt2x00_rt(rt2x00dev, RT3352))
 +              rf = RF3322;
+       else if (rt2x00_rt(rt2x00dev, RT3883))
+               rf = RF3853;
        else if (rt2x00_rt(rt2x00dev, RT5350))
-               rf = RF5350;
-       else