Skip to content

Commit 7fe1fe7

Browse files
Ping-Ke ShihKalle Valo
authored andcommitted
rtlwifi: rtl8723be: btcoex: add package_type function to btcoex
The new code handles the package-type of the chip. Signed-off-by: Ping-Ke Shih <[email protected]> Signed-off-by: Larry Finger <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 0de9b5d commit 7fe1fe7

File tree

6 files changed

+54
-3
lines changed

6 files changed

+54
-3
lines changed

drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,13 @@ u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
163163
return num;
164164
}
165165

166+
u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv)
167+
{
168+
struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
169+
170+
return rtlhal->package_type;
171+
}
172+
166173
static void halbtc_leave_lps(struct btc_coexist *btcoexist)
167174
{
168175
struct rtl_priv *rtlpriv;

drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ u8 rtl_get_hwpg_bt_exist(struct rtl_priv *rtlpriv);
5050
u8 rtl_get_hwpg_bt_type(struct rtl_priv *rtlpriv);
5151
u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv);
5252
u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv);
53+
u8 rtl_get_hwpg_package_type(struct rtl_priv *rtlpriv);
54+
5355
enum rt_media_status mgnt_link_status_query(struct ieee80211_hw *hw);
5456

5557
#endif

drivers/net/wireless/realtek/rtlwifi/efuse.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ static void efuse_word_enable_data_read(u8 word_en, u8 *sourdata,
7373
u8 *targetdata);
7474
static u8 enable_efuse_data_write(struct ieee80211_hw *hw,
7575
u16 efuse_addr, u8 word_en, u8 *data);
76-
static void efuse_power_switch(struct ieee80211_hw *hw, u8 write,
77-
u8 pwrstate);
7876
static u16 efuse_get_current_size(struct ieee80211_hw *hw);
7977
static u8 efuse_calculate_word_cnts(u8 word_en);
8078

@@ -1124,7 +1122,7 @@ static u8 enable_efuse_data_write(struct ieee80211_hw *hw,
11241122
return badworden;
11251123
}
11261124

1127-
static void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate)
1125+
void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate)
11281126
{
11291127
struct rtl_priv *rtlpriv = rtl_priv(hw);
11301128
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
@@ -1210,6 +1208,7 @@ static void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate)
12101208
}
12111209
}
12121210
}
1211+
EXPORT_SYMBOL(efuse_power_switch);
12131212

12141213
static u16 efuse_get_current_size(struct ieee80211_hw *hw)
12151214
{

drivers/net/wireless/realtek/rtlwifi/efuse.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ bool efuse_shadow_update_chk(struct ieee80211_hw *hw);
109109
void rtl_efuse_shadow_map_update(struct ieee80211_hw *hw);
110110
void efuse_force_write_vendor_Id(struct ieee80211_hw *hw);
111111
void efuse_re_pg_section(struct ieee80211_hw *hw, u8 section_idx);
112+
void efuse_power_switch(struct ieee80211_hw *hw, u8 write, u8 pwrstate);
112113
int rtl_get_hwinfo(struct ieee80211_hw *hw, struct rtl_priv *rtlpriv,
113114
int max_size, u8 *hwinfo, int *params);
114115
void rtl_fill_dummy(u8 *pfwbuf, u32 *pfwlen);

drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2020,6 +2020,37 @@ static void _rtl8723be_read_txpower_info_from_hwpg(struct ieee80211_hw *hw,
20202020
"eeprom_regulatory = 0x%x\n", rtlefuse->eeprom_regulatory);
20212021
}
20222022

2023+
static u8 _rtl8723be_read_package_type(struct ieee80211_hw *hw)
2024+
{
2025+
u8 package_type;
2026+
u8 value;
2027+
2028+
efuse_power_switch(hw, false, true);
2029+
if (!efuse_one_byte_read(hw, 0x1FB, &value))
2030+
value = 0;
2031+
efuse_power_switch(hw, false, false);
2032+
2033+
switch (value & 0x7) {
2034+
case 0x4:
2035+
package_type = PACKAGE_TFBGA79;
2036+
break;
2037+
case 0x5:
2038+
package_type = PACKAGE_TFBGA90;
2039+
break;
2040+
case 0x6:
2041+
package_type = PACKAGE_QFN68;
2042+
break;
2043+
case 0x7:
2044+
package_type = PACKAGE_TFBGA80;
2045+
break;
2046+
default:
2047+
package_type = PACKAGE_DEFAULT;
2048+
break;
2049+
}
2050+
2051+
return package_type;
2052+
}
2053+
20232054
static void _rtl8723be_read_adapter_info(struct ieee80211_hw *hw,
20242055
bool pseudo_test)
20252056
{
@@ -2078,6 +2109,8 @@ static void _rtl8723be_read_adapter_info(struct ieee80211_hw *hw,
20782109
rtlefuse->autoload_failflag,
20792110
hwinfo);
20802111

2112+
rtlhal->package_type = _rtl8723be_read_package_type(hw);
2113+
20812114
/* set channel plan from efuse */
20822115
rtlefuse->channel_plan = rtlefuse->eeprom_channelplan;
20832116

drivers/net/wireless/realtek/rtlwifi/wifi.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,14 @@ enum wolpattern_type {
925925
UNKNOWN_TYPE = 4,
926926
};
927927

928+
enum package_type {
929+
PACKAGE_DEFAULT,
930+
PACKAGE_QFN68,
931+
PACKAGE_TFBGA90,
932+
PACKAGE_TFBGA80,
933+
PACKAGE_TFBGA79
934+
};
935+
928936
struct octet_string {
929937
u8 *octet;
930938
u16 length;
@@ -1509,6 +1517,7 @@ struct rtl_hal {
15091517
u32 version; /*version of chip */
15101518
u8 state; /*stop 0, start 1 */
15111519
u8 board_type;
1520+
u8 package_type;
15121521
u8 external_pa;
15131522

15141523
u8 pa_mode;

0 commit comments

Comments
 (0)