|
@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
}
|
|
}
|
|
|
|
|
|
if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
|
|
if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
|
+ reg = 0x10;
|
|
|
|
+ if (!conf_is_ht40(conf)) {
|
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT6352) &&
|
|
|
|
+ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
|
+ reg |= 0x5;
|
|
|
|
+ } else {
|
|
|
|
+ reg |= 0xa;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
rt2800_bbp_write(rt2x00dev, 195, 141);
|
|
rt2800_bbp_write(rt2x00dev, 195, 141);
|
|
- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
|
|
|
|
|
|
+ rt2800_bbp_write(rt2x00dev, 196, reg);
|
|
|
|
|
|
/* AGC init */
|
|
/* AGC init */
|
|
- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
|
|
|
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT6352))
|
|
|
|
+ reg = 0x04;
|
|
|
|
+ else
|
|
|
|
+ reg = rf->channel <= 14 ? 0x1c : 0x24;
|
|
|
|
+
|
|
|
|
+ reg += 2 * rt2x00dev->lna_gain;
|
|
rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
|
rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
|
|
|
|
|
rt2800_iq_calibrate(rt2x00dev, rf->channel);
|
|
rt2800_iq_calibrate(rt2x00dev, rf->channel);
|