diff options
Diffstat (limited to 'package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch')
-rw-r--r-- | package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch | 89 |
1 files changed, 38 insertions, 51 deletions
diff --git a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch index 7b99312..b91e582 100644 --- a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch +++ b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch @@ -19,8 +19,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org> drivers/net/wireless/ralink/rt2x00/rt2x00.h | 1 + 5 files changed, 1578 insertions(+), 27 deletions(-) -diff --git a/drivers/net/wireless/ralink/rt2x00/Kconfig b/drivers/net/wireless/ralink/rt2x00/Kconfig -index de62f5dcb62f..a1d1cfe214d2 100644 --- a/drivers/net/wireless/ralink/rt2x00/Kconfig +++ b/drivers/net/wireless/ralink/rt2x00/Kconfig @@ -210,7 +210,7 @@ endif @@ -32,8 +30,6 @@ index de62f5dcb62f..a1d1cfe214d2 100644 select RT2X00_LIB_SOC select RT2X00_LIB_MMIO select RT2X00_LIB_CRYPTO -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h -index fd1dbd956bad..6a8c93fb6a43 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h @@ -79,6 +79,7 @@ @@ -376,8 +372,6 @@ index fd1dbd956bad..6a8c93fb6a43 100644 EEPROM_TSSI_BOUND_A1, EEPROM_TSSI_BOUND_A2, EEPROM_TSSI_BOUND_A3, -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c -index 8d00c599e47a..201b12ed90c6 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c @@ -59,6 +59,9 @@ @@ -390,7 +384,7 @@ index 8d00c599e47a..201b12ed90c6 100644 #define WAIT_FOR_RF(__dev, __reg) \ rt2800_regbusy_read((__dev), RF_CSR_CFG0, RF_CSR_CFG0_BUSY, (__reg)) #define WAIT_FOR_MCU(__dev, __reg) \ -@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev, +@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt * Wait until the RFCSR becomes available, afterwards we * can safely write the new data into the register. */ @@ -413,8 +407,7 @@ index 8d00c599e47a..201b12ed90c6 100644 + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); + } + break; - -- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); ++ + default: + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { + reg = 0; @@ -422,7 +415,8 @@ index 8d00c599e47a..201b12ed90c6 100644 + rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); + rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1); + rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); -+ + +- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); + } + break; @@ -454,7 +448,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, const unsigned int word, u8 *value) { -@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, +@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2 * doesn't become available in time, reg will be 0xffffffff * which means we return 0xff to the caller. */ @@ -479,11 +473,11 @@ index 8d00c599e47a..201b12ed90c6 100644 - } + WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®); + } - -- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA); ++ + *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620); + break; -+ + +- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA); + default: + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { + reg = 0; @@ -512,7 +506,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev, const unsigned int word, const u32 value) { -@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_map[EEPROM_WORD_COUNT] = { +@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_ [EEPROM_TSSI_BOUND_BG5] = 0x003b, [EEPROM_TXPOWER_A1] = 0x003c, [EEPROM_TXPOWER_A2] = 0x0053, @@ -520,7 +514,7 @@ index 8d00c599e47a..201b12ed90c6 100644 [EEPROM_TSSI_BOUND_A1] = 0x006a, [EEPROM_TSSI_BOUND_A2] = 0x006b, [EEPROM_TSSI_BOUND_A3] = 0x006c, -@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt2x00_dev *rt2x00dev, +@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt break; case RT5592: @@ -528,7 +522,7 @@ index 8d00c599e47a..201b12ed90c6 100644 *txwi_size = TXWI_DESC_SIZE_5WORDS; *rxwi_size = RXWI_DESC_SIZE_6WORDS; break; -@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, +@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx rt2800_rfcsr_write(rt2x00dev, 59, r59_nonbt_rev[idx]); } else if (rt2x00_rt(rt2x00dev, RT5390) || @@ -538,7 +532,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static const char r59_non_bt[] = {0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d, 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86}; -@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev, +@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F); } @@ -781,7 +775,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, const unsigned int word, const u8 value) -@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct struct channel_info *info) { u32 reg; @@ -790,7 +784,7 @@ index 8d00c599e47a..201b12ed90c6 100644 u8 bbp, rfcsr; info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, -@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct case RF5592: rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info); break; @@ -800,7 +794,7 @@ index 8d00c599e47a..201b12ed90c6 100644 default: rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); } -@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct if (rf->channel <= 14) { if (!rt2x00_rt(rt2x00dev, RT5390) && @@ -810,7 +804,7 @@ index 8d00c599e47a..201b12ed90c6 100644 if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { rt2800_bbp_write(rt2x00dev, 82, 0x62); rt2800_bbp_write(rt2x00dev, 75, 0x46); -@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct rt2800_bbp_write(rt2x00dev, 82, 0x94); else if (rt2x00_rt(rt2x00dev, RT3593)) rt2800_bbp_write(rt2x00dev, 82, 0x82); @@ -819,7 +813,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_bbp_write(rt2x00dev, 82, 0xf2); if (rt2x00_rt(rt2x00dev, RT3593)) -@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct if (rt2x00_rt(rt2x00dev, RT3572)) rt2800_rfcsr_write(rt2x00dev, 8, 0); @@ -828,7 +822,7 @@ index 8d00c599e47a..201b12ed90c6 100644 switch (rt2x00dev->default_ant.tx_chain_num) { case 3: -@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3437,6 +3746,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); @@ -836,7 +830,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); -@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, +@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct usleep_range(1000, 1500); } @@ -845,7 +839,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_bbp_write(rt2x00dev, 195, 141); rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a); -@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev, +@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593 (unsigned long) regs[i]); } @@ -974,7 +968,7 @@ index 8d00c599e47a..201b12ed90c6 100644 /* * We configure transmit power using MAC TX_PWR_CFG_{0,...,N} registers and * BBP R1 register. TX_PWR_CFG_X allow to configure per rate TX power values, -@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev, +@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct { if (rt2x00_rt(rt2x00dev, RT3593)) rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level); @@ -983,7 +977,7 @@ index 8d00c599e47a..201b12ed90c6 100644 else rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level); } -@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) +@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x0 { u32 tx_pin; u8 rfcsr; @@ -991,7 +985,7 @@ index 8d00c599e47a..201b12ed90c6 100644 /* * A voltage-controlled oscillator(VCO) is an electronic oscillator -@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) +@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x0 rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1); rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); @@ -1007,7 +1001,7 @@ index 8d00c599e47a..201b12ed90c6 100644 break; default: WARN_ONCE(1, "Not supported RF chipet %x for VCO recalibration", -@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) +@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x0 return; } @@ -1017,7 +1011,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); if (rt2x00dev->rf_channel <= 14) { -@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev) +@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x0 } rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); @@ -1060,7 +1054,7 @@ index 8d00c599e47a..201b12ed90c6 100644 } EXPORT_SYMBOL_GPL(rt2800_vco_calibration); -@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev) +@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_rt(rt2x00dev, RT3593) || rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5392) || @@ -1070,7 +1064,7 @@ index 8d00c599e47a..201b12ed90c6 100644 vgc = 0x1c + (2 * rt2x00dev->lna_gain); else vgc = 0x2e + rt2x00dev->lna_gain; -@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) +@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct 0x00000000); } } else if (rt2x00_rt(rt2x00dev, RT5390) || @@ -1080,7 +1074,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); -@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) +@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); } else if (rt2x00_rt(rt2x00dev, RT5350)) { rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); @@ -1105,7 +1099,7 @@ index 8d00c599e47a..201b12ed90c6 100644 } else { rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); -@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev) +@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct rt2800_bbp_write(rt2x00dev, 103, 0xc0); } @@ -1337,7 +1331,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) { unsigned int i; -@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) +@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x0 case RT5592: rt2800_init_bbp_5592(rt2x00dev); return; @@ -1347,7 +1341,7 @@ index 8d00c599e47a..201b12ed90c6 100644 } for (i = 0; i < EEPROM_BBP_SIZE; i++) { -@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev) +@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struc rt2800_led_open_drain_enable(rt2x00dev); } @@ -1963,7 +1957,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) { if (rt2800_is_305x_soc(rt2x00dev)) { -@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) +@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2 case RT5592: rt2800_init_rfcsr_5592(rt2x00dev); break; @@ -1973,7 +1967,7 @@ index 8d00c599e47a..201b12ed90c6 100644 } } -@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) +@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2 */ if (rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT5390) || @@ -1983,7 +1977,7 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); else if (rt2x00_rt(rt2x00dev, RT3352)) rf = RF3322; -@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev) +@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2 case RF5390: case RF5392: case RF5592: @@ -1991,7 +1985,7 @@ index 8d00c599e47a..201b12ed90c6 100644 break; default: rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n", -@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5592_xtal40[] = { +@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5 {196, 83, 0, 12, 1}, }; @@ -2015,7 +2009,7 @@ index 8d00c599e47a..201b12ed90c6 100644 static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) { struct hw_mode_spec *spec = &rt2x00dev->spec; -@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) +@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct r spec->channels = rf_vals_3x; break; @@ -2027,7 +2021,7 @@ index 8d00c599e47a..201b12ed90c6 100644 case RF3052: case RF3053: spec->num_channels = ARRAY_SIZE(rf_vals_3x); -@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) +@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct r case RF5390: case RF5392: case RF5592: @@ -2035,7 +2029,7 @@ index 8d00c599e47a..201b12ed90c6 100644 __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags); break; } -@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev) +@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00 return -ENODEV; } @@ -2045,8 +2039,6 @@ index 8d00c599e47a..201b12ed90c6 100644 rt2x00_set_rt(rt2x00dev, rt, rev); return 0; -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h -index d9ef260d542a..f357531d9488 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h @@ -33,6 +33,10 @@ @@ -2060,8 +2052,6 @@ index d9ef260d542a..f357531d9488 100644 u8 bbp25; u8 bbp26; u8 txmixer_gain_24g; -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h -index ce340bfd71a0..8fdd2f9726ee 100644 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h @@ -174,6 +174,7 @@ struct rt2x00_chip { @@ -2072,6 +2062,3 @@ index ce340bfd71a0..8fdd2f9726ee 100644 u16 rf; u16 rev; --- -2.12.1 - |