aboutsummaryrefslogtreecommitdiffstats
path: root/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch')
-rw-r--r--package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch94
1 files changed, 94 insertions, 0 deletions
diff --git a/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch b/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch
new file mode 100644
index 0000000000..9d17e882c1
--- /dev/null
+++ b/package/mac80211/patches/565-ath9k-add-fast_div_bias-configuration-for-diversity-.patch
@@ -0,0 +1,94 @@
+diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
+index 99f55b3..80bb04f 100644
+--- a/drivers/net/wireless/ath/ath9k/recv.c
++++ b/drivers/net/wireless/ath/ath9k/recv.c
+@@ -1364,6 +1364,89 @@ static void ath_ant_div_conf_fast_divbias(struct ath_hw_antcomb_conf *ant_conf,
+ default:
+ break;
+ }
++ } else if (ant_conf->div_group == 1) {
++ /* Adjust the fast_div_bias based on main and alt_lna_conf */
++ switch ((ant_conf->main_lna_conf << 4) |
++ ant_conf->alt_lna_conf) {
++ case 0x01: /* A-B LNA2 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x02: /* A-B LNA1 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x03: /* A-B A+B */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x10: /* LNA2 A-B */
++ if (!(antcomb->scan) &&
++ (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
++ ant_conf->fast_div_bias = 0x3f;
++ else
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x12: /* LNA2 LNA1 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x13: /* LNA2 A+B */
++ if (!(antcomb->scan) &&
++ (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
++ ant_conf->fast_div_bias = 0x3f;
++ else
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x20: /* LNA1 A-B */
++ if (!(antcomb->scan) &&
++ (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
++ ant_conf->fast_div_bias = 0x3f;
++ else
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x21: /* LNA1 LNA2 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x23: /* LNA1 A+B */
++ if (!(antcomb->scan) &&
++ (alt_ratio > ATH_ANT_DIV_COMB_ALT_ANT_RATIO))
++ ant_conf->fast_div_bias = 0x3f;
++ else
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x30: /* A+B A-B */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x31: /* A+B LNA2 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ case 0x32: /* A+B LNA1 */
++ ant_conf->fast_div_bias = 0x1;
++ ant_conf->main_gaintb = 0;
++ ant_conf->alt_gaintb = 0;
++ break;
++ default:
++ break;
++ }
+ } else if (ant_conf->div_group == 2) {
+ /* Adjust the fast_div_bias based on main and alt_lna_conf */
+ switch ((ant_conf->main_lna_conf << 4) |