
This patch contains some performance and stability improvements for RT5592: 1. Fix RFCSR register init values for RT5592. 2. Fix BBP register init values for RT5592. Signed-off-by: Shiji Yang <yangshiji66@qq.com> Link: https://github.com/openwrt/openwrt/pull/16845 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
120 lines
4.7 KiB
Diff
120 lines
4.7 KiB
Diff
From 1847d817df5585f9d957d16ed2a56ceb41cf6df7 Mon Sep 17 00:00:00 2001
|
|
From: Shiji Yang <yangshiji66@outlook.com>
|
|
Date: Sun, 22 Dec 2024 17:06:59 +0800
|
|
Subject: [PATCH 2/2] rt2x00: fix BBP register init values for RT5592
|
|
|
|
Based on Raink proprietary driver 2.7.1.5, correct the initial
|
|
values of some BBP registers for RT5592.
|
|
|
|
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
|
|
---
|
|
.../net/wireless/ralink/rt2x00/rt2800lib.c | 32 +++++++++----------
|
|
1 file changed, 15 insertions(+), 17 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
@@ -3746,6 +3746,7 @@ static void rt2800_config_channel_rf55xx
|
|
rt2800_bbp_write(rt2x00dev, 80, (rf->channel <= 14) ? 0x0E : 0x08);
|
|
rt2800_bbp_write(rt2x00dev, 81, (rf->channel <= 14) ? 0x3A : 0x38);
|
|
rt2800_bbp_write(rt2x00dev, 82, (rf->channel <= 14) ? 0x62 : 0x92);
|
|
+ rt2800_bbp_write(rt2x00dev, 95, (rf->channel <= 14) ? 0x9A : 0x1A);
|
|
|
|
/* GLRT band configuration */
|
|
rt2800_bbp_write(rt2x00dev, 195, 128);
|
|
@@ -3758,7 +3759,7 @@ static void rt2800_config_channel_rf55xx
|
|
rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x32 : 0x20);
|
|
rt2800_bbp_write(rt2x00dev, 195, 133);
|
|
rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x28 : 0x7F);
|
|
- rt2800_bbp_write(rt2x00dev, 195, 124);
|
|
+ rt2800_bbp_write(rt2x00dev, 195, 134);
|
|
rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F);
|
|
}
|
|
|
|
@@ -4304,7 +4305,8 @@ static void rt2800_config_channel(struct
|
|
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 (rt2x00_rt(rt2x00dev, RT6352))
|
|
+ if (rt2x00_rt(rt2x00dev, RT5592) ||
|
|
+ rt2x00_rt(rt2x00dev, RT6352))
|
|
rt2800_bbp_write(rt2x00dev, 86, 0x38);
|
|
else
|
|
rt2800_bbp_write(rt2x00dev, 86, 0);
|
|
@@ -4313,6 +4315,7 @@ static void rt2800_config_channel(struct
|
|
if (rf->channel <= 14) {
|
|
if (!rt2x00_rt(rt2x00dev, RT5390) &&
|
|
!rt2x00_rt(rt2x00dev, RT5392) &&
|
|
+ !rt2x00_rt(rt2x00dev, RT5592) &&
|
|
!rt2x00_rt(rt2x00dev, RT6352)) {
|
|
if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
rt2800_bbp_write(rt2x00dev, 82, 0x62);
|
|
@@ -4336,17 +4339,20 @@ static void rt2800_config_channel(struct
|
|
else if (rt2x00_rt(rt2x00dev, RT3593) ||
|
|
rt2x00_rt(rt2x00dev, RT3883))
|
|
rt2800_bbp_write(rt2x00dev, 82, 0x82);
|
|
- else if (!rt2x00_rt(rt2x00dev, RT6352))
|
|
+ else if (!rt2x00_rt(rt2x00dev, RT5592) &&
|
|
+ !rt2x00_rt(rt2x00dev, RT6352))
|
|
rt2800_bbp_write(rt2x00dev, 82, 0xf2);
|
|
|
|
if (rt2x00_rt(rt2x00dev, RT3593) ||
|
|
rt2x00_rt(rt2x00dev, RT3883))
|
|
rt2800_bbp_write(rt2x00dev, 83, 0x9a);
|
|
|
|
- if (rt2x00_has_cap_external_lna_a(rt2x00dev))
|
|
- rt2800_bbp_write(rt2x00dev, 75, 0x46);
|
|
- else
|
|
- rt2800_bbp_write(rt2x00dev, 75, 0x50);
|
|
+ if (!rt2x00_rt(rt2x00dev, RT5592)) {
|
|
+ if (rt2x00_has_cap_external_lna_a(rt2x00dev))
|
|
+ rt2800_bbp_write(rt2x00dev, 75, 0x46);
|
|
+ else
|
|
+ rt2800_bbp_write(rt2x00dev, 75, 0x50);
|
|
+ }
|
|
}
|
|
|
|
reg = rt2800_register_read(rt2x00dev, TX_BAND_CFG);
|
|
@@ -5783,12 +5789,10 @@ static inline void rt2800_set_vgc(struct
|
|
if (rt2x00_rt(rt2x00dev, RT3572) ||
|
|
rt2x00_rt(rt2x00dev, RT3593) ||
|
|
rt2x00_rt(rt2x00dev, RT3883) ||
|
|
+ rt2x00_rt(rt2x00dev, RT5592) ||
|
|
rt2x00_rt(rt2x00dev, RT6352)) {
|
|
rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
|
|
vgc_level);
|
|
- } else if (rt2x00_rt(rt2x00dev, RT5592)) {
|
|
- rt2800_bbp_write(rt2x00dev, 83, qual->rssi > -65 ? 0x4a : 0x7a);
|
|
- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, vgc_level);
|
|
} else {
|
|
rt2800_bbp_write(rt2x00dev, 66, vgc_level);
|
|
}
|
|
@@ -7016,7 +7020,6 @@ static void rt2800_init_bbp_5592(struct
|
|
rt2800_bbp_write(rt2x00dev, 88, 0x90);
|
|
rt2800_bbp_write(rt2x00dev, 91, 0x04);
|
|
rt2800_bbp_write(rt2x00dev, 92, 0x02);
|
|
- rt2800_bbp_write(rt2x00dev, 95, 0x9a);
|
|
rt2800_bbp_write(rt2x00dev, 98, 0x12);
|
|
rt2800_bbp_write(rt2x00dev, 103, 0xC0);
|
|
rt2800_bbp_write(rt2x00dev, 104, 0x92);
|
|
@@ -7027,6 +7030,7 @@ static void rt2800_init_bbp_5592(struct
|
|
rt2800_bbp_write(rt2x00dev, 134, 0xD0);
|
|
rt2800_bbp_write(rt2x00dev, 135, 0xF6);
|
|
rt2800_bbp_write(rt2x00dev, 137, 0x0F);
|
|
+ rt2800_bbp_write(rt2x00dev, 148, 0x84);
|
|
|
|
/* Initialize GLRT (Generalized Likehood Radio Test) */
|
|
rt2800_init_bbp_5592_glrt(rt2x00dev);
|
|
@@ -7051,12 +7055,6 @@ static void rt2800_init_bbp_5592(struct
|
|
rt2x00_set_field8(&value, BBP254_BIT7, 1);
|
|
rt2800_bbp_write(rt2x00dev, 254, value);
|
|
}
|
|
-
|
|
- rt2800_init_freq_calibration(rt2x00dev);
|
|
-
|
|
- rt2800_bbp_write(rt2x00dev, 84, 0x19);
|
|
- if (rt2x00_rt_rev_gte(rt2x00dev, RT5592, REV_RT5592C))
|
|
- rt2800_bbp_write(rt2x00dev, 103, 0xc0);
|
|
}
|
|
|
|
static void rt2800_init_bbp_6352(struct rt2x00_dev *rt2x00dev)
|