71a4ffea45879af5f8fda8dca253b23b9abd752b
[openwrt/staging/lynxis.git] / package / kernel / mac80211 / patches / 020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
1 From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
2 From: Daniel Golle <daniel@makrotopia.org>
3 Date: Mon, 10 Apr 2017 14:28:14 +0200
4 Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
5 To: Stanislaw Gruszka <sgruszka@redhat.com>
6 Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
7 linux-wireless@vger.kernel.org,
8 Kalle Valo <kvalo@codeaurora.org>
9
10 The base value used for MT7620 differs from Rt5392 which resulted in
11 quite bad RX signal quality. Fix this by using the correct base value as
12 well as the LNA calibration values for HT20.
13
14 Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
15 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
16 ---
17 drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
18 1 file changed, 16 insertions(+), 2 deletions(-)
19
20 --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
21 +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
22 @@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct
23 }
24
25 if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
26 + reg = 0x10;
27 + if (!conf_is_ht40(conf)) {
28 + if (rt2x00_rt(rt2x00dev, RT6352) &&
29 + rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
30 + reg |= 0x5;
31 + } else {
32 + reg |= 0xa;
33 + }
34 + }
35 rt2800_bbp_write(rt2x00dev, 195, 141);
36 - rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
37 + rt2800_bbp_write(rt2x00dev, 196, reg);
38
39 /* AGC init */
40 - reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
41 + if (rt2x00_rt(rt2x00dev, RT6352))
42 + reg = 0x04;
43 + else
44 + reg = rf->channel <= 14 ? 0x1c : 0x24;
45 +
46 + reg += 2 * rt2x00dev->lna_gain;
47 rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
48
49 rt2800_iq_calibrate(rt2x00dev, rf->channel);