1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-06-20 07:38:28 +02:00

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
This commit is contained in:
Gabor Juhos 2013-08-27 10:44:06 +00:00
parent c75416292a
commit 6c29525f42
12 changed files with 3378 additions and 67 deletions

View File

@ -1361,7 +1361,7 @@ config-$(call config_package,rt2800-pci) += RT2800PCI
config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290 config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290
config-$(call config_package,rt2800-usb) += RT2800USB 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,iwl-legacy) += IWLEGACY
config-$(call config_package,iwl3945) += IWL3945 config-$(call config_package,iwl3945) += IWL3945

File diff suppressed because it is too large Load Diff

View File

@ -101,7 +101,7 @@
+} +}
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/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); const u8 *data, const size_t len);
int (*load_firmware) (struct rt2x00_dev *rt2x00dev, int (*load_firmware) (struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len); const u8 *data, const size_t len);
@ -109,7 +109,7 @@
/* /*
* Device initialization/deinitialization handlers. * Device initialization/deinitialization handlers.
@@ -705,6 +706,7 @@ enum rt2x00_capability_flags { @@ -706,6 +707,7 @@ enum rt2x00_capability_flags {
REQUIRE_SW_SEQNO, REQUIRE_SW_SEQNO,
REQUIRE_HT_TX_DESC, REQUIRE_HT_TX_DESC,
REQUIRE_PS_AUTOWAKE, REQUIRE_PS_AUTOWAKE,
@ -117,7 +117,7 @@
/* /*
* Capabilities * Capabilities
@@ -974,6 +976,11 @@ struct rt2x00_dev { @@ -975,6 +977,11 @@ struct rt2x00_dev {
const struct firmware *fw; const struct firmware *fw;
/* /*
@ -164,7 +164,7 @@
select RT2X00_LIB_CRYPTO select RT2X00_LIB_CRYPTO
depends on CRC_CCITT depends on CRC_CCITT
depends on EEPROM_93CX6 depends on EEPROM_93CX6
@@ -238,6 +239,9 @@ config RT2X00_LIB_FIRMWARE @@ -244,6 +245,9 @@ config RT2X00_LIB_FIRMWARE
config RT2X00_LIB_CRYPTO config RT2X00_LIB_CRYPTO
boolean boolean
@ -234,7 +234,7 @@
* Initialization functions. * Initialization functions.
*/ */
static bool rt2800pci_get_entry_state(struct queue_entry *entry) 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, .get_firmware_name = rt2800pci_get_firmware_name,
.check_firmware = rt2800_check_firmware, .check_firmware = rt2800_check_firmware,
.load_firmware = rt2800_load_firmware, .load_firmware = rt2800_load_firmware,

View File

@ -9,7 +9,7 @@
{ {
memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE);
return 0; return 0;
@@ -1093,8 +1093,9 @@ static int rt2800pci_read_eeprom(struct @@ -1097,8 +1097,9 @@ static int rt2800pci_read_eeprom(struct
{ {
int retval; int retval;

View File

@ -37,7 +37,7 @@
num_rates += 4; num_rates += 4;
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/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; unsigned int supported_bands;
#define SUPPORT_BAND_2GHZ 0x00000001 #define SUPPORT_BAND_2GHZ 0x00000001
#define SUPPORT_BAND_5GHZ 0x00000002 #define SUPPORT_BAND_5GHZ 0x00000002

View File

@ -31,7 +31,7 @@
{ {
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/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, u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
struct ieee80211_vif *vif); struct ieee80211_vif *vif);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/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 * Change BBP settings
*/ */
@ -15,6 +15,17 @@
rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain);
+ rt2800_bbp_write(rt2x00dev, 86, 0x38); + rt2800_bbp_write(rt2x00dev, 86, 0x38);
+ rt2800_bbp_write(rt2x00dev, 83, 0x6a); + 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 { } else {
- rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); - rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); - rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
@ -22,7 +33,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0); 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) static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
{ {
@ -35,7 +46,7 @@
rt2800_rf_init_calibration(rt2x00dev, 30); rt2800_rf_init_calibration(rt2x00dev, 30);
rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); 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, 31, 0x80);
rt2800_rfcsr_write(rt2x00dev, 32, 0x80); rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
rt2800_rfcsr_write(rt2x00dev, 33, 0x00); rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@ -69,7 +80,7 @@
rt2800_rfcsr_write(rt2x00dev, 43, 0xdb); rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 45, 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, 47, 0x0d);
rt2800_rfcsr_write(rt2x00dev, 48, 0x14); rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
rt2800_rfcsr_write(rt2x00dev, 49, 0x00); rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
@ -99,15 +110,15 @@
rt2800_rfcsr_write(rt2x00dev, 59, 0x00); rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
rt2800_rfcsr_write(rt2x00dev, 60, 0x00); rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
rt2800_rfcsr_write(rt2x00dev, 61, 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 * RT53xx: defined in "EEPROM_CHIP_ID" field
*/ */
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT3352) || + rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
@@ -5804,7 +5834,8 @@ static int rt2800_init_eeprom(struct rt2 @@ -7086,7 +7113,8 @@ static int rt2800_init_eeprom(struct rt2
/* /*
* Detect if this device has Bluetooth co-existence. * Detect if this device has Bluetooth co-existence.
*/ */
@ -117,14 +128,14 @@
__set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags); __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) EIRP_MAX_TX_POWER_LIMIT)
__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
+ /* + /*
+ * Detect if device uses internal or external PA + * 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_rt(rt2x00dev, RT3352)) {
+ if (!rt2x00_get_field16(eeprom, + if (!rt2x00_get_field16(eeprom,
@ -142,8 +153,8 @@
--- a/drivers/net/wireless/rt2x00/rt2800.h --- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -2153,6 +2153,12 @@ struct mac_iveiv_entry { @@ -2299,6 +2299,12 @@ struct mac_iveiv_entry {
#define RFCSR31_RX_CALIB FIELD8(0x7f) #define RFCSR36_RF_BS FIELD8(0x80)
/* /*
+ * RFCSR 34: + * RFCSR 34:
@ -155,7 +166,7 @@
* RFCSR 38: * RFCSR 38:
*/ */
#define RFCSR38_RX_LO1_EN FIELD8(0x20) #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) #define RFCSR39_RX_LO2_EN FIELD8(0x80)
/* /*
@ -174,25 +185,25 @@
* RFCSR 49: * RFCSR 49:
*/ */
#define RFCSR49_TX FIELD8(0x3f) #define RFCSR49_TX FIELD8(0x3f)
@@ -2172,6 +2190,8 @@ struct mac_iveiv_entry { @@ -2322,6 +2340,8 @@ struct mac_iveiv_entry {
* RFCSR 50: * RFCSR 50:
*/ */
#define RFCSR50_TX FIELD8(0x3f) #define RFCSR50_TX FIELD8(0x3f)
+#define RFCSR50_TX0_EXT_PA FIELD8(0x02) +#define RFCSR50_TX0_EXT_PA FIELD8(0x02)
+#define RFCSR50_TX1_EXT_PA FIELD8(0x10) +#define RFCSR50_TX1_EXT_PA FIELD8(0x10)
#define RFCSR50_EP FIELD8(0xc0) #define RFCSR50_EP FIELD8(0xc0)
/* bits for RT3593 */
/* #define RFCSR50_TX_LO1_EN FIELD8(0x20)
@@ -2260,6 +2280,8 @@ struct mac_iveiv_entry { @@ -2469,6 +2489,8 @@ enum rt2800_eeprom_word {
* INTERNAL_TX_ALC: 0: disable, 1: enable * INTERNAL_TX_ALC: 0: disable, 1: enable
* BT_COEXIST: 0: disable, 1: enable * BT_COEXIST: 0: disable, 1: enable
* DAC_TEST: 0: disable, 1: enable * DAC_TEST: 0: disable, 1: enable
+ * EXTERNAL_TX0_PA: 0: disable, 1: enable (only on RT3352) + * EXTERNAL_TX0_PA: 0: disable, 1: enable (only on RT3352)
+ * EXTERNAL_TX1_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) #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_INTERNAL_TX_ALC FIELD16(0x2000)
#define EEPROM_NIC_CONF1_BT_COEXIST FIELD16(0x4000) #define EEPROM_NIC_CONF1_BT_COEXIST FIELD16(0x4000)
#define EEPROM_NIC_CONF1_DAC_TEST FIELD16(0x8000) #define EEPROM_NIC_CONF1_DAC_TEST FIELD16(0x8000)
@ -203,7 +214,7 @@
* EEPROM frequency * EEPROM frequency
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/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_DOUBLE_ANTENNA,
CAPABILITY_BT_COEXIST, CAPABILITY_BT_COEXIST,
CAPABILITY_VCO_RECALIBRATION, CAPABILITY_VCO_RECALIBRATION,

View File

@ -1,7 +1,7 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/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 @@ -7501,6 +7501,27 @@ static const struct rf_channel rf_vals_3
{196, 83, 0, 12, 1}, {173, 0x61, 0, 9},
}; };
+/* +/*
@ -28,7 +28,7 @@
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{ {
struct hw_mode_spec *spec = &rt2x00dev->spec; 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, RF3022) ||
rt2x00_rf(rt2x00dev, RF3290) || rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) || rt2x00_rf(rt2x00dev, RF3320) ||
@ -36,7 +36,7 @@
rt2x00_rf(rt2x00dev, RF5360) || rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) || rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) || 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)) { rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14; spec->num_channels = 14;
spec->channels = rf_vals_3x; spec->channels = rf_vals_3x;
@ -49,7 +49,7 @@
} else if (rt2x00_rf(rt2x00dev, RF3052)) { } else if (rt2x00_rf(rt2x00dev, RF3052)) {
spec->supported_bands |= SUPPORT_BAND_5GHZ; spec->supported_bands |= SUPPORT_BAND_5GHZ;
spec->num_channels = ARRAY_SIZE(rf_vals_3x); 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; return 0;
} }
@ -69,7 +69,7 @@
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{ {
int retval; 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); rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
/* /*
@ -87,7 +87,7 @@
retval = rt2800_probe_hw_mode(rt2x00dev); retval = rt2800_probe_hw_mode(rt2x00dev);
--- a/drivers/net/wireless/rt2x00/rt2x00.h --- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/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: Device/chipset specific channel values (See &struct rf_channel).
* @channels_info: Additional information for channels (See &struct channel_info). * @channels_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap). * @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@ -95,7 +95,7 @@
*/ */
struct hw_mode_spec { struct hw_mode_spec {
unsigned int supported_bands; 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; const struct channel_info *channels_info;
struct ieee80211_sta_ht_cap ht; struct ieee80211_sta_ht_cap ht;

View File

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/wireless/rt2x00/rt2800pci.c --- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/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); return rt2x00soc_probe(pdev, &rt2800pci_ops);
} }

View File

@ -8,7 +8,7 @@
#include "rt2x00.h" #include "rt2x00.h"
#include "rt2800lib.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) int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
{ {

View File

@ -10,7 +10,7 @@
#define RF5372 0x5372 #define RF5372 0x5372
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/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) { if (rf->channel <= 14) {
int idx = rf->channel-1; int idx = rf->channel-1;
@ -26,7 +26,7 @@
if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags)) { if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags)) {
if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) { if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
/* r55/r59 value array of channel 1~14 */ /* 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: case RF3322:
rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
break; break;
@ -34,7 +34,7 @@
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: 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) || if (rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3322) || rt2x00_rf(rt2x00dev, RF3322) ||
@ -42,7 +42,7 @@
rt2x00_rf(rt2x00dev, RF5360) || rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) || rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) || 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 * Clear update flag
*/ */
@ -52,15 +52,15 @@
rt2800_bbp_read(rt2x00dev, 49, &bbp); rt2800_bbp_read(rt2x00dev, 49, &bbp);
rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0); rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
rt2800_bbp_write(rt2x00dev, 49, bbp); rt2800_bbp_write(rt2x00dev, 49, bbp);
@@ -3224,6 +3236,7 @@ void rt2800_vco_calibration(struct rt2x0 @@ -4259,6 +4271,7 @@ void rt2800_vco_calibration(struct rt2x0
rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
break; break;
case RF3053:
case RF3290: case RF3290:
+ case RF5350: + case RF5350:
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: 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_CFG0, 0x00000404);
rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
@ -69,7 +69,7 @@
} else { } else {
rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); 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); rt2800_bbp_write(rt2x00dev, 82, 0x62);
@ -86,7 +86,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0x38); 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); rt2800_bbp_write(rt2x00dev, 104, 0x92);
@ -103,7 +103,7 @@
rt2800_bbp_write(rt2x00dev, 120, 0x50); 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, 143, 0xa2);
rt2800_bbp_write(rt2x00dev, 148, 0xc8); rt2800_bbp_write(rt2x00dev, 148, 0xc8);
@ -117,7 +117,7 @@
} }
static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev) 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); rt2800_init_bbp_3290(rt2x00dev);
break; break;
case RT3352: case RT3352:
@ -125,8 +125,8 @@
rt2800_init_bbp_3352(rt2x00dev); rt2800_init_bbp_3352(rt2x00dev);
break; break;
case RT3390: case RT3390:
@@ -5182,6 +5213,76 @@ static void rt2800_init_rfcsr_3572(struc @@ -6424,6 +6455,76 @@ static void rt2800_init_rfcsr_3593(struc
rt2800_normal_mode_setup_3xxx(rt2x00dev); /* TODO: enable stream mode support */
} }
+static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev) +static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev)
@ -202,9 +202,9 @@
static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
{ {
rt2800_rf_init_calibration(rt2x00dev, 2); rt2800_rf_init_calibration(rt2x00dev, 2);
@@ -5410,6 +5511,9 @@ static void rt2800_init_rfcsr(struct rt2 @@ -6655,6 +6756,9 @@ static void rt2800_init_rfcsr(struct rt2
case RT3572: case RT3593:
rt2800_init_rfcsr_3572(rt2x00dev); rt2800_init_rfcsr_3593(rt2x00dev);
break; break;
+ case RT5350: + case RT5350:
+ rt2800_init_rfcsr_5350(rt2x00dev); + rt2800_init_rfcsr_5350(rt2x00dev);
@ -212,9 +212,9 @@
case RT5390: case RT5390:
rt2800_init_rfcsr_5390(rt2x00dev); rt2800_init_rfcsr_5390(rt2x00dev);
break; 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_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); rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
+ } else if (rt2x00_rt(rt2x00dev, RT5350)) { + } else if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 1); + rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 1);
@ -225,16 +225,16 @@
} else if (rt2x00_rt(rt2x00dev, RT2860) || } else if (rt2x00_rt(rt2x00dev, RT2860) ||
rt2x00_rt(rt2x00dev, RT2872)) { 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, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) 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)) + else if (rt2x00_rt(rt2x00dev, RT5350))
+ rf = RF5350; + rf = RF5350;
else else
rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); 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 RF3290:
case RF3320: case RF3320:
case RF3322: case RF3322:
@ -242,7 +242,7 @@
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: 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)) { rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14; spec->num_channels = 14;
spec->channels = rf_vals_3x; spec->channels = rf_vals_3x;
@ -252,18 +252,18 @@
spec->num_channels = 14; spec->num_channels = 14;
if (spec->clk_is_20mhz) if (spec->clk_is_20mhz)
spec->channels = rf_vals_xtal20mhz_3x; spec->channels = rf_vals_xtal20mhz_3x;
@@ -6365,6 +6479,7 @@ static int rt2800_probe_hw_mode(struct r @@ -7735,6 +7849,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3320:
case RF3052: case RF3052:
case RF3053:
case RF3290: case RF3290:
+ case RF5350: + case RF5350:
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: case RF5372:
@@ -6402,6 +6517,7 @@ static int rt2800_probe_rt(struct rt2x00 @@ -7773,6 +7888,7 @@ static int rt2800_probe_rt(struct rt2x00
case RT3352:
case RT3390: case RT3390:
case RT3572: case RT3572:
case RT3593:
+ case RT5350: + case RT5350:
case RT5390: case RT5390:
case RT5392: case RT5392:

View File

@ -8,7 +8,7 @@
#include "rt2x00.h" #include "rt2x00.h"
#include "rt2800lib.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_assoc, LED_TYPE_ASSOC);
rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY); rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);