mac80211: rt2x00: backport accepted and pending patches from upstream
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / rt2x00 / 600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
diff --git a/package/kernel/mac80211/patches/rt2x00/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch b/package/kernel/mac80211/patches/rt2x00/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
deleted file mode 100644 (file)
index 7a8d1c0..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-From 269f19c848a2380db03a3f207cafb88e28d71c53 Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <juhosg@openwrt.org>
-Date: Sun, 24 Mar 2013 19:26:28 +0100
-Subject: [PATCH] rt2x00: rt2800lib: add channel configuration code for RT3883
-
-Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
----
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c |   72 +++++++++++++++++++++++++++++--
- 1 file changed, 69 insertions(+), 3 deletions(-)
-
---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
-@@ -3741,6 +3741,36 @@ static char rt2800_txpower_to_dev(struct
-               return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
- }
-+static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev,
-+                            struct rf_channel *rf)
-+{
-+      u8 bbp;
-+
-+      bbp = (rf->channel > 14) ? 0x48 : 0x38;
-+      rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, bbp);
-+
-+      rt2800_bbp_write(rt2x00dev, 69, 0x12);
-+
-+      if (rf->channel <= 14) {
-+              rt2800_bbp_write(rt2x00dev, 70, 0x0a);
-+      } else {
-+              /* Disable CCK packet detection */
-+              rt2800_bbp_write(rt2x00dev, 70, 0x00);
-+      }
-+
-+      rt2800_bbp_write(rt2x00dev, 73, 0x10);
-+
-+      if (rf->channel > 14) {
-+              rt2800_bbp_write(rt2x00dev, 62, 0x1d);
-+              rt2800_bbp_write(rt2x00dev, 63, 0x1d);
-+              rt2800_bbp_write(rt2x00dev, 64, 0x1d);
-+      } else {
-+              rt2800_bbp_write(rt2x00dev, 62, 0x2d);
-+              rt2800_bbp_write(rt2x00dev, 63, 0x2d);
-+              rt2800_bbp_write(rt2x00dev, 64, 0x2d);
-+      }
-+}
-+
- static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
-                                 struct ieee80211_conf *conf,
-                                 struct rf_channel *rf,
-@@ -3759,6 +3789,12 @@ static void rt2800_config_channel(struct
-                       rt2800_txpower_to_dev(rt2x00dev, rf->channel,
-                                             info->default_power3);
-+      switch (rt2x00dev->chip.rt) {
-+      case RT3883:
-+              rt3883_bbp_adjust(rt2x00dev, rf);
-+              break;
-+      }
-+
-       switch (rt2x00dev->chip.rf) {
-       case RF2020:
-       case RF3020:
-@@ -3863,6 +3899,15 @@ static void rt2800_config_channel(struct
-               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 if (rt2x00_rt(rt2x00dev, RT3883)) {
-+              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);
-+
-+              if (rt2x00dev->default_ant.rx_chain_num > 1)
-+                      rt2800_bbp_write(rt2x00dev, 86, 0x46);
-+              else
-+                      rt2800_bbp_write(rt2x00dev, 86, 0);
-       } else {
-               rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
-               rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
-@@ -3876,6 +3921,7 @@ static void rt2800_config_channel(struct
-                   !rt2x00_rt(rt2x00dev, RT6352)) {
-                       if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
-                               rt2800_bbp_write(rt2x00dev, 82, 0x62);
-+                              rt2800_bbp_write(rt2x00dev, 82, 0x62);
-                               rt2800_bbp_write(rt2x00dev, 75, 0x46);
-                       } else {
-                               if (rt2x00_rt(rt2x00dev, RT3593))
-@@ -3884,19 +3930,22 @@ static void rt2800_config_channel(struct
-                                       rt2800_bbp_write(rt2x00dev, 82, 0x84);
-                               rt2800_bbp_write(rt2x00dev, 75, 0x50);
-                       }
--                      if (rt2x00_rt(rt2x00dev, RT3593))
-+                      if (rt2x00_rt(rt2x00dev, RT3593) ||
-+                          rt2x00_rt(rt2x00dev, RT3883))
-                               rt2800_bbp_write(rt2x00dev, 83, 0x8a);
-               }
-       } else {
-               if (rt2x00_rt(rt2x00dev, RT3572))
-                       rt2800_bbp_write(rt2x00dev, 82, 0x94);
--              else if (rt2x00_rt(rt2x00dev, RT3593))
-+              else if (rt2x00_rt(rt2x00dev, RT3593) ||
-+                       rt2x00_rt(rt2x00dev, RT3883))
-                       rt2800_bbp_write(rt2x00dev, 82, 0x82);
-               else if (!rt2x00_rt(rt2x00dev, RT6352))
-                       rt2800_bbp_write(rt2x00dev, 82, 0xf2);
--              if (rt2x00_rt(rt2x00dev, RT3593))
-+              if (rt2x00_rt(rt2x00dev, RT3593) ||
-+                  rt2x00_rt(rt2x00dev, RT3883))
-                       rt2800_bbp_write(rt2x00dev, 83, 0x9a);
-               if (rt2x00_has_cap_external_lna_a(rt2x00dev))
-@@ -4022,6 +4071,23 @@ static void rt2800_config_channel(struct
-               rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
-+              usleep_range(1000, 1500);
-+      }
-+
-+      if (rt2x00_rt(rt2x00dev, RT3883)) {
-+              if (!conf_is_ht40(conf))
-+                      rt2800_bbp_write(rt2x00dev, 105, 0x34);
-+              else
-+                      rt2800_bbp_write(rt2x00dev, 105, 0x04);
-+
-+              /* AGC init */
-+              if (rf->channel <= 14)
-+                      reg = 0x2e + rt2x00dev->lna_gain;
-+              else
-+                      reg = 0x20 + ((rt2x00dev->lna_gain * 5) / 3);
-+
-+              rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
-+
-               usleep_range(1000, 1500);
-       }