Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

wifi: rtl8xxxu: Simplify setting the initial gain

The goal of writing 0x6954341e / 0x6955341e to REG_OFDM0_XA_AGC_CORE1
appears to be setting the initial gain, which is stored in bits 0..6.
Bits 7..31 are the same as what the phy init tables write.

Modify only bits 0..6 so that we don't have to care about the values
of the others. This way we don't have to add another "else if" for the
RTL8192FU.

Why we need to change the initial gain from the default 0x20 to 0x1e?
Not sure. Some of the vendor drivers change it to 0x1e before scanning
and then restore it to the original value after.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/cf91ca69-70e3-4c20-c0b1-e59d452356a1@gmail.com

authored by

Bitterblue Smith and committed by
Kalle Valo
c8bc3760 cd85c8b0

+2 -4
+2 -4
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c
··· 7034 7034 rtl8xxxu_write16(priv, REG_RXFLTMAP2, 0xffff); 7035 7035 rtl8xxxu_write16(priv, REG_RXFLTMAP0, 0xffff); 7036 7036 7037 - if (priv->rtl_chip == RTL8188E) 7038 - rtl8xxxu_write32(priv, REG_OFDM0_XA_AGC_CORE1, 0x6955341e); 7039 - else 7040 - rtl8xxxu_write32(priv, REG_OFDM0_XA_AGC_CORE1, 0x6954341e); 7037 + rtl8xxxu_write32_mask(priv, REG_OFDM0_XA_AGC_CORE1, 7038 + OFDM0_X_AGC_CORE1_IGI_MASK, 0x1e); 7041 7039 7042 7040 return ret; 7043 7041