mac80211: add a bunch of rt2x00 specific changes

Backport some rt2x00 specific changes from
wireless-testing/master-2013-08-26 to add
support for RT3573 based devices.

Also refresh the rt2x00 specific patches.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

SVN-Revision: 37843
master
Gabor Juhos 11 years ago
parent c75416292a
commit 6c29525f42
  1. 2
      package/kernel/mac80211/Makefile
  2. 3300
      package/kernel/mac80211/patches/301-pending_work-rt2x00.patch
  3. 12
      package/kernel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch
  4. 4
      package/kernel/mac80211/patches/605-rt2x00-pci-eeprom.patch
  5. 2
      package/kernel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch
  6. 2
      package/kernel/mac80211/patches/608-add_platform_data_mac_addr.patch
  7. 49
      package/kernel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch
  8. 16
      package/kernel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch
  9. 2
      package/kernel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch
  10. 2
      package/kernel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch
  11. 52
      package/kernel/mac80211/patches/616-rt2x00-support-rt5350.patch
  12. 2
      package/kernel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch

@ -1361,7 +1361,7 @@ config-$(call config_package,rt2800-pci) += RT2800PCI
config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290
config-$(call config_package,rt2800-usb) += RT2800USB
config-y += RT2800USB_RT33XX RT2800USB_RT35XX RT2800USB_RT53XX RT2800USB_RT55XX
config-y += RT2800USB_RT33XX RT2800USB_RT35XX RT2800USB_RT3573 RT2800USB_RT53XX RT2800USB_RT55XX
config-$(call config_package,iwl-legacy) += IWLEGACY
config-$(call config_package,iwl3945) += IWL3945

@ -101,7 +101,7 @@
+}
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -549,6 +549,7 @@ struct rt2x00lib_ops {
@@ -550,6 +550,7 @@ struct rt2x00lib_ops {
const u8 *data, const size_t len);
int (*load_firmware) (struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len);
@ -109,7 +109,7 @@
/*
* Device initialization/deinitialization handlers.
@@ -705,6 +706,7 @@ enum rt2x00_capability_flags {
@@ -706,6 +707,7 @@ enum rt2x00_capability_flags {
REQUIRE_SW_SEQNO,
REQUIRE_HT_TX_DESC,
REQUIRE_PS_AUTOWAKE,
@ -117,7 +117,7 @@
/*
* Capabilities
@@ -974,6 +976,11 @@ struct rt2x00_dev {
@@ -975,6 +977,11 @@ struct rt2x00_dev {
const struct firmware *fw;
/*
@ -164,7 +164,7 @@
select RT2X00_LIB_CRYPTO
depends on CRC_CCITT
depends on EEPROM_93CX6
@@ -238,6 +239,9 @@ config RT2X00_LIB_FIRMWARE
@@ -244,6 +245,9 @@ config RT2X00_LIB_FIRMWARE
config RT2X00_LIB_CRYPTO
boolean
@ -186,7 +186,7 @@
obj-$(CPTCFG_RT2X00_LIB_MMIO) += rt2x00mmio.o
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -90,25 +90,11 @@ static void rt2800pci_mcu_status(struct
@@ -90,25 +90,11 @@ static void rt2800pci_mcu_status(struct
rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0);
}
@ -234,7 +234,7 @@
* Initialization functions.
*/
static bool rt2800pci_get_entry_state(struct queue_entry *entry)
@@ -1156,6 +1156,7 @@ static const struct rt2x00lib_ops rt2800
@@ -1160,6 +1160,7 @@ static const struct rt2x00lib_ops rt2800
.get_firmware_name = rt2800pci_get_firmware_name,
.check_firmware = rt2800_check_firmware,
.load_firmware = rt2800_load_firmware,

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -90,7 +90,7 @@ static void rt2800pci_mcu_status(struct
@@ -90,7 +90,7 @@ static void rt2800pci_mcu_status(struct
rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0);
}
@ -9,7 +9,7 @@
{
memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE);
return 0;
@@ -1093,8 +1093,9 @@ static int rt2800pci_read_eeprom(struct
@@ -1097,8 +1097,9 @@ static int rt2800pci_read_eeprom(struct
{
int retval;

@ -37,7 +37,7 @@
num_rates += 4;
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -414,6 +414,7 @@ struct hw_mode_spec {
@@ -415,6 +415,7 @@ struct hw_mode_spec {
unsigned int supported_bands;
#define SUPPORT_BAND_2GHZ 0x00000001
#define SUPPORT_BAND_5GHZ 0x00000002

@ -31,7 +31,7 @@
{
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1326,6 +1326,7 @@ static inline void rt2x00debug_dump_fram
@@ -1327,6 +1327,7 @@ static inline void rt2x00debug_dump_fram
*/
u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
struct ieee80211_vif *vif);

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2631,15 +2631,18 @@ static void rt2800_config_channel(struct
@@ -3186,11 +3186,17 @@ static void rt2800_config_channel(struct
/*
* Change BBP settings
*/
@ -15,6 +15,17 @@
rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain);
+ rt2800_bbp_write(rt2x00dev, 86, 0x38);
+ rt2800_bbp_write(rt2x00dev, 83, 0x6a);
} else if (rt2x00_rt(rt2x00dev, RT3593)) {
if (rf->channel > 14) {
/* Disable CCK Packet detection on 5GHz */
@@ -3204,14 +3210,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);
@ -22,7 +33,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0);
}
@@ -4971,6 +4974,12 @@ static void rt2800_init_rfcsr_3290(struc
@@ -6086,6 +6086,12 @@ static void rt2800_init_rfcsr_3290(struc
static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
{
@ -35,7 +46,7 @@
rt2800_rf_init_calibration(rt2x00dev, 30);
rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
@@ -5006,15 +5015,30 @@ static void rt2800_init_rfcsr_3352(struc
@@ -6121,15 +6127,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);
@ -69,7 +80,7 @@
rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 45, 0xdb);
@@ -5022,15 +5046,20 @@ static void rt2800_init_rfcsr_3352(struc
@@ -6137,15 +6158,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);
@ -99,15 +110,15 @@
rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
@@ -5715,6 +5744,7 @@ static int rt2800_init_eeprom(struct rt2
@@ -6996,6 +7022,7 @@ static int rt2800_init_eeprom(struct rt2
* RT53xx: defined in "EEPROM_CHIP_ID" field
*/
if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
@@ -5804,7 +5834,8 @@ static int rt2800_init_eeprom(struct rt2
rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
@@ -7086,7 +7113,8 @@ static int rt2800_init_eeprom(struct rt2
/*
* Detect if this device has Bluetooth co-existence.
*/
@ -117,14 +128,14 @@
__set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
/*
@@ -5833,6 +5864,22 @@ static int rt2800_init_eeprom(struct rt2
@@ -7115,6 +7143,22 @@ static int rt2800_init_eeprom(struct rt2
EIRP_MAX_TX_POWER_LIMIT)
__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
+ /*
+ * Detect if device uses internal or external PA
+ */
+ rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
+
+ if (rt2x00_rt(rt2x00dev, RT3352)) {
+ if (!rt2x00_get_field16(eeprom,
@ -142,8 +153,8 @@
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -2153,6 +2153,12 @@ struct mac_iveiv_entry {
#define RFCSR31_RX_CALIB FIELD8(0x7f)
@@ -2299,6 +2299,12 @@ struct mac_iveiv_entry {
#define RFCSR36_RF_BS FIELD8(0x80)
/*
+ * RFCSR 34:
@ -155,7 +166,7 @@
* RFCSR 38:
*/
#define RFCSR38_RX_LO1_EN FIELD8(0x20)
@@ -2163,6 +2169,18 @@ struct mac_iveiv_entry {
@@ -2310,6 +2316,18 @@ struct mac_iveiv_entry {
#define RFCSR39_RX_LO2_EN FIELD8(0x80)
/*
@ -174,25 +185,25 @@
* RFCSR 49:
*/
#define RFCSR49_TX FIELD8(0x3f)
@@ -2172,6 +2190,8 @@ struct mac_iveiv_entry {
@@ -2322,6 +2340,8 @@ struct mac_iveiv_entry {
* RFCSR 50:
*/
#define RFCSR50_TX FIELD8(0x3f)
+#define RFCSR50_TX0_EXT_PA FIELD8(0x02)
+#define RFCSR50_TX1_EXT_PA FIELD8(0x10)
#define RFCSR50_EP FIELD8(0xc0)
/*
@@ -2260,6 +2280,8 @@ struct mac_iveiv_entry {
/* bits for RT3593 */
#define RFCSR50_TX_LO1_EN FIELD8(0x20)
@@ -2469,6 +2489,8 @@ enum rt2800_eeprom_word {
* INTERNAL_TX_ALC: 0: disable, 1: enable
* BT_COEXIST: 0: disable, 1: enable
* DAC_TEST: 0: disable, 1: enable
+ * EXTERNAL_TX0_PA: 0: disable, 1: enable (only on RT3352)
+ * EXTERNAL_TX1_PA: 0: disable, 1: enable (only on RT3352)
*/
#define EEPROM_NIC_CONF1 0x001b
#define EEPROM_NIC_CONF1_HW_RADIO FIELD16(0x0001)
@@ -2277,6 +2299,8 @@ struct mac_iveiv_entry {
#define EEPROM_NIC_CONF1_EXTERNAL_TX_ALC FIELD16(0x0002)
@@ -2485,6 +2507,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)
@ -203,7 +214,7 @@
* EEPROM frequency
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -726,6 +726,8 @@ enum rt2x00_capability_flags {
@@ -727,6 +727,8 @@ enum rt2x00_capability_flags {
CAPABILITY_DOUBLE_ANTENNA,
CAPABILITY_BT_COEXIST,
CAPABILITY_VCO_RECALIBRATION,

@ -1,7 +1,7 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -6156,6 +6156,27 @@ static const struct rf_channel rf_vals_5
{196, 83, 0, 12, 1},
@@ -7501,6 +7501,27 @@ static const struct rf_channel rf_vals_3
{173, 0x61, 0, 9},
};
+/*
@ -28,7 +28,7 @@
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{
struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -6235,7 +6256,6 @@ static int rt2800_probe_hw_mode(struct r
@@ -7581,7 +7602,6 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF3022) ||
rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) ||
@ -36,7 +36,7 @@
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) ||
@@ -6243,6 +6263,12 @@ static int rt2800_probe_hw_mode(struct r
@@ -7589,6 +7609,12 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14;
spec->channels = rf_vals_3x;
@ -49,7 +49,7 @@
} else if (rt2x00_rf(rt2x00dev, RF3052)) {
spec->supported_bands |= SUPPORT_BAND_5GHZ;
spec->num_channels = ARRAY_SIZE(rf_vals_3x);
@@ -6390,6 +6416,19 @@ static int rt2800_probe_rt(struct rt2x00
@@ -7761,6 +7787,19 @@ static int rt2800_probe_rt(struct rt2x00
return 0;
}
@ -69,7 +69,7 @@
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{
int retval;
@@ -6419,6 +6458,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
@@ -7790,6 +7829,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
/*
@ -87,7 +87,7 @@
retval = rt2800_probe_hw_mode(rt2x00dev);
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -409,6 +409,7 @@ static inline struct rt2x00_intf* vif_to
@@ -410,6 +410,7 @@ static inline struct rt2x00_intf* vif_to
* @channels: Device/chipset specific channel values (See &struct rf_channel).
* @channels_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@ -95,7 +95,7 @@
*/
struct hw_mode_spec {
unsigned int supported_bands;
@@ -425,6 +426,7 @@ struct hw_mode_spec {
@@ -426,6 +427,7 @@ struct hw_mode_spec {
const struct channel_info *channels_info;
struct ieee80211_sta_ht_cap ht;

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -1309,11 +1309,18 @@ static int rt2800soc_probe(struct platfo
@@ -1318,11 +1318,18 @@ static int rt2800soc_probe(struct platfo
return rt2x00soc_probe(pdev, &rt2800pci_ops);
}

@ -8,7 +8,7 @@
#include "rt2x00.h"
#include "rt2800lib.h"
@@ -6418,13 +6419,14 @@ static int rt2800_probe_rt(struct rt2x00
@@ -7789,13 +7790,14 @@ static int rt2800_probe_rt(struct rt2x00
int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
{

@ -10,7 +10,7 @@
#define RF5372 0x5372
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2141,6 +2141,15 @@ static void rt2800_config_channel_rf53xx
@@ -2675,6 +2675,15 @@ static void rt2800_config_channel_rf53xx
if (rf->channel <= 14) {
int idx = rf->channel-1;
@ -26,7 +26,7 @@
if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags)) {
if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
/* r55/r59 value array of channel 1~14 */
@@ -2598,6 +2607,7 @@ static void rt2800_config_channel(struct
@@ -3153,6 +3162,7 @@ static void rt2800_config_channel(struct
case RF3322:
rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
break;
@ -34,7 +34,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -2614,6 +2624,7 @@ static void rt2800_config_channel(struct
@@ -3169,6 +3179,7 @@ static void rt2800_config_channel(struct
if (rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3322) ||
@ -42,7 +42,7 @@
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) ||
@@ -2778,7 +2789,8 @@ static void rt2800_config_channel(struct
@@ -3393,7 +3404,8 @@ static void rt2800_config_channel(struct
/*
* Clear update flag
*/
@ -52,15 +52,15 @@
rt2800_bbp_read(rt2x00dev, 49, &bbp);
rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
rt2800_bbp_write(rt2x00dev, 49, bbp);
@@ -3224,6 +3236,7 @@ void rt2800_vco_calibration(struct rt2x0
rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
@@ -4259,6 +4271,7 @@ void rt2800_vco_calibration(struct rt2x0
break;
case RF3053:
case RF3290:
+ case RF5350:
case RF5360:
case RF5370:
case RF5372:
@@ -3569,6 +3582,8 @@ static int rt2800_init_registers(struct
@@ -4630,6 +4643,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);
@ -69,7 +69,7 @@
} else {
rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
@@ -4216,9 +4231,13 @@ static void rt2800_init_bbp_3352(struct
@@ -5271,9 +5286,13 @@ static void rt2800_init_bbp_3352(struct
rt2800_bbp_write(rt2x00dev, 82, 0x62);
@ -86,7 +86,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0x38);
@@ -4232,9 +4251,13 @@ static void rt2800_init_bbp_3352(struct
@@ -5287,9 +5306,13 @@ static void rt2800_init_bbp_3352(struct
rt2800_bbp_write(rt2x00dev, 104, 0x92);
@ -103,7 +103,7 @@
rt2800_bbp_write(rt2x00dev, 120, 0x50);
@@ -4259,6 +4282,13 @@ static void rt2800_init_bbp_3352(struct
@@ -5314,6 +5337,13 @@ static void rt2800_init_bbp_3352(struct
rt2800_bbp_write(rt2x00dev, 143, 0xa2);
rt2800_bbp_write(rt2x00dev, 148, 0xc8);
@ -117,7 +117,7 @@
}
static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev)
@@ -4543,6 +4573,7 @@ static void rt2800_init_bbp(struct rt2x0
@@ -5614,6 +5644,7 @@ static void rt2800_init_bbp(struct rt2x0
rt2800_init_bbp_3290(rt2x00dev);
break;
case RT3352:
@ -125,8 +125,8 @@
rt2800_init_bbp_3352(rt2x00dev);
break;
case RT3390:
@@ -5182,6 +5213,76 @@ static void rt2800_init_rfcsr_3572(struc
rt2800_normal_mode_setup_3xxx(rt2x00dev);
@@ -6424,6 +6455,76 @@ static void rt2800_init_rfcsr_3593(struc
/* TODO: enable stream mode support */
}
+static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev)
@ -202,9 +202,9 @@
static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
{
rt2800_rf_init_calibration(rt2x00dev, 2);
@@ -5410,6 +5511,9 @@ static void rt2800_init_rfcsr(struct rt2
case RT3572:
rt2800_init_rfcsr_3572(rt2x00dev);
@@ -6655,6 +6756,9 @@ static void rt2800_init_rfcsr(struct rt2
case RT3593:
rt2800_init_rfcsr_3593(rt2x00dev);
break;
+ case RT5350:
+ rt2800_init_rfcsr_5350(rt2x00dev);
@ -212,9 +212,9 @@
case RT5390:
rt2800_init_rfcsr_5390(rt2x00dev);
break;
@@ -5621,6 +5725,12 @@ static int rt2800_validate_eeprom(struct
@@ -6894,6 +6998,12 @@ static int rt2800_validate_eeprom(struct
rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820);
rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
+ } else if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 1);
@ -225,16 +225,16 @@
} else if (rt2x00_rt(rt2x00dev, RT2860) ||
rt2x00_rt(rt2x00dev, RT2872)) {
/*
@@ -5749,6 +5859,8 @@ static int rt2800_init_eeprom(struct rt2
@@ -7027,6 +7137,8 @@ static int rt2800_init_eeprom(struct rt2
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
+ else if (rt2x00_rt(rt2x00dev, RT5350))
+ rf = RF5350;
else
rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
@@ -5765,6 +5877,7 @@ static int rt2800_init_eeprom(struct rt2
@@ -7044,6 +7156,7 @@ static int rt2800_init_eeprom(struct rt2
case RF3290:
case RF3320:
case RF3322:
@ -242,7 +242,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -6264,7 +6377,8 @@ static int rt2800_probe_hw_mode(struct r
@@ -7610,7 +7723,8 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14;
spec->channels = rf_vals_3x;
@ -252,18 +252,18 @@
spec->num_channels = 14;
if (spec->clk_is_20mhz)
spec->channels = rf_vals_xtal20mhz_3x;
@@ -6365,6 +6479,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3320:
@@ -7735,6 +7849,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3052:
case RF3053:
case RF3290:
+ case RF5350:
case RF5360:
case RF5370:
case RF5372:
@@ -6402,6 +6517,7 @@ static int rt2800_probe_rt(struct rt2x00
case RT3352:
@@ -7773,6 +7888,7 @@ static int rt2800_probe_rt(struct rt2x00
case RT3390:
case RT3572:
case RT3593:
+ case RT5350:
case RT5390:
case RT5392:

@ -8,7 +8,7 @@
#include "rt2x00.h"
#include "rt2800lib.h"
@@ -5966,6 +5967,17 @@ static int rt2800_init_eeprom(struct rt2
@@ -7245,6 +7246,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);

Loading…
Cancel
Save