mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-01 17:26:39 +07:00
rt2x00: rt2800lib: fix frequency offset boundary calculation
The current code in the 'rt2800_adjust_freq_offset' function limits the device specific frequency offset value to FREQ_BOUND but ignores the fact that the uppermost bit is not part of the frequency offset value. As the result, the driver always uses the FREQ_BOUND value if the uppermost bit is set. Update the code to use the correct source value for calculating the boundary. Based on the DPO_RT5572_LinuxSTA_2.6.0.1_20120629 driver. Reference: RTMPAdjustFrequencyOffset function in common/rt_rf.c Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
77f7c0f3b8
commit
c1fada4e5e
@ -2496,13 +2496,14 @@ static void rt2800_config_channel_rf3053(struct rt2x00_dev *rt2x00dev,
|
||||
|
||||
static void rt2800_adjust_freq_offset(struct rt2x00_dev *rt2x00dev)
|
||||
{
|
||||
u8 freq_offset;
|
||||
u8 rfcsr;
|
||||
|
||||
freq_offset = rt2x00_get_field8(rt2x00dev->freq_offset, RFCSR17_CODE);
|
||||
freq_offset = min_t(u8, freq_offset, FREQ_OFFSET_BOUND);
|
||||
|
||||
rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr);
|
||||
if (rt2x00dev->freq_offset > FREQ_OFFSET_BOUND)
|
||||
rt2x00_set_field8(&rfcsr, RFCSR17_CODE, FREQ_OFFSET_BOUND);
|
||||
else
|
||||
rt2x00_set_field8(&rfcsr, RFCSR17_CODE, rt2x00dev->freq_offset);
|
||||
rt2x00_set_field8(&rfcsr, RFCSR17_CODE, freq_offset);
|
||||
rt2800_rfcsr_write(rt2x00dev, 17, rfcsr);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user