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:
parent
c75416292a
commit
6c29525f42
12 changed files with 3378 additions and 67 deletions
|
@ -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
|
||||
|
|
3300
package/kernel/mac80211/patches/301-pending_work-rt2x00.patch
Normal file
3300
package/kernel/mac80211/patches/301-pending_work-rt2x00.patch
Normal file
File diff suppressed because it is too large
Load diff
|
@ -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…
Reference in a new issue