mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
wifi: rtlwifi: rtl8192ce: fix dealing empty EEPROM values
On OpenWRT platform, RTL8192CE could be soldered on board, but not standard PCI module. In this case, some EEPROM values aren't programmed and left 0xff. Load default values when the EEPROM values are empty to avoid problems. Signed-off-by: Lu jicong <jiconglu58@gmail.com> Acked-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20230214063602.2257263-1-jiconglu58@gmail.com
This commit is contained in:
parent
f2b6cfda76
commit
59e6ded57c
|
|
@ -1428,7 +1428,9 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
|
||||
for (rf_path = 0; rf_path < 2; rf_path++) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (!autoload_fail) {
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TXPOWERCCK + rf_path * 3 + i] != 0xff &&
|
||||
hwinfo[EEPROM_TXPOWERHT40_1S + rf_path * 3 + i] != 0xff) {
|
||||
rtlefuse->
|
||||
eeprom_chnlarea_txpwr_cck[rf_path][i] =
|
||||
hwinfo[EEPROM_TXPOWERCCK + rf_path * 3 + i];
|
||||
|
|
@ -1448,7 +1450,8 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (!autoload_fail)
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TXPOWERHT40_2SDIFF + i] != 0xff)
|
||||
tempval = hwinfo[EEPROM_TXPOWERHT40_2SDIFF + i];
|
||||
else
|
||||
tempval = EEPROM_DEFAULT_HT40_2SDIFF;
|
||||
|
|
@ -1518,7 +1521,9 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
}
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (!autoload_fail) {
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TXPWR_GROUP + i] != 0xff &&
|
||||
hwinfo[EEPROM_TXPWR_GROUP + 3 + i] != 0xff) {
|
||||
rtlefuse->eeprom_pwrlimit_ht40[i] =
|
||||
hwinfo[EEPROM_TXPWR_GROUP + i];
|
||||
rtlefuse->eeprom_pwrlimit_ht20[i] =
|
||||
|
|
@ -1563,7 +1568,8 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
for (i = 0; i < 14; i++) {
|
||||
index = rtl92c_get_chnl_group((u8)i);
|
||||
|
||||
if (!autoload_fail)
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TXPOWERHT20DIFF + index] != 0xff)
|
||||
tempval = hwinfo[EEPROM_TXPOWERHT20DIFF + index];
|
||||
else
|
||||
tempval = EEPROM_DEFAULT_HT20_DIFF;
|
||||
|
|
@ -1580,7 +1586,8 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
|
||||
index = rtl92c_get_chnl_group((u8)i);
|
||||
|
||||
if (!autoload_fail)
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TXPOWER_OFDMDIFF + index] != 0xff)
|
||||
tempval = hwinfo[EEPROM_TXPOWER_OFDMDIFF + index];
|
||||
else
|
||||
tempval = EEPROM_DEFAULT_LEGACYHTTXPOWERDIFF;
|
||||
|
|
@ -1610,14 +1617,16 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
"RF-B Legacy to HT40 Diff[%d] = 0x%x\n",
|
||||
i, rtlefuse->txpwr_legacyhtdiff[RF90_PATH_B][i]);
|
||||
|
||||
if (!autoload_fail)
|
||||
if (!autoload_fail && hwinfo[RF_OPTION1] != 0xff)
|
||||
rtlefuse->eeprom_regulatory = (hwinfo[RF_OPTION1] & 0x7);
|
||||
else
|
||||
rtlefuse->eeprom_regulatory = 0;
|
||||
RTPRINT(rtlpriv, FINIT, INIT_TXPOWER,
|
||||
"eeprom_regulatory = 0x%x\n", rtlefuse->eeprom_regulatory);
|
||||
|
||||
if (!autoload_fail) {
|
||||
if (!autoload_fail &&
|
||||
hwinfo[EEPROM_TSSI_A] != 0xff &&
|
||||
hwinfo[EEPROM_TSSI_B] != 0xff) {
|
||||
rtlefuse->eeprom_tssi[RF90_PATH_A] = hwinfo[EEPROM_TSSI_A];
|
||||
rtlefuse->eeprom_tssi[RF90_PATH_B] = hwinfo[EEPROM_TSSI_B];
|
||||
} else {
|
||||
|
|
@ -1628,7 +1637,7 @@ static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
|
|||
rtlefuse->eeprom_tssi[RF90_PATH_A],
|
||||
rtlefuse->eeprom_tssi[RF90_PATH_B]);
|
||||
|
||||
if (!autoload_fail)
|
||||
if (!autoload_fail && hwinfo[EEPROM_THERMAL_METER] != 0xff)
|
||||
tempval = hwinfo[EEPROM_THERMAL_METER];
|
||||
else
|
||||
tempval = EEPROM_DEFAULT_THERMALMETER;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user