aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorHans Ulli Kroll <ulli.kroll@googlemail.com>2015-06-07 07:19:16 -0400
committerKalle Valo <kvalo@codeaurora.org>2015-06-15 05:30:20 -0400
commit1637c1b7ebbb51de63b71c7eebcfff6407a0be72 (patch)
tree60b608d9e212dab76d85968a468c383d9f0c01ec /drivers/net
parentfbcaee1c6da13d10b8fb7810d76fb8ce92dd9226 (diff)
rtlwifi: fix tm_trigger usage
While working on getting my rtl8821au driver in pretty shape for inclusion, it is dicosvered that the tm_trigger flag is used only for the first device using this driver. This flag handles the thermal power management in the hardware. To change this add a entry in sttruct rtl_dm, so each device can handle is separately. Signed-off-by: Hans Ulli Kroll <ulli.kroll@googlemail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8188ee/dm.c7
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c7
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192de/dm.c7
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8192se/dm.c7
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8723be/dm.c7
-rw-r--r--drivers/net/wireless/rtlwifi/rtl8821ae/dm.c14
-rw-r--r--drivers/net/wireless/rtlwifi/wifi.h1
7 files changed, 21 insertions, 29 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c
index d930c1f78721..ce4da9d79fbd 100644
--- a/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8188ee/dm.c
@@ -1123,23 +1123,22 @@ static void rtl88e_dm_init_txpower_tracking(struct ieee80211_hw *hw)
1123void rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw) 1123void rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw)
1124{ 1124{
1125 struct rtl_priv *rtlpriv = rtl_priv(hw); 1125 struct rtl_priv *rtlpriv = rtl_priv(hw);
1126 static u8 tm_trigger;
1127 1126
1128 if (!rtlpriv->dm.txpower_tracking) 1127 if (!rtlpriv->dm.txpower_tracking)
1129 return; 1128 return;
1130 1129
1131 if (!tm_trigger) { 1130 if (!rtlpriv->dm.tm_trigger) {
1132 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17)|BIT(16), 1131 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17)|BIT(16),
1133 0x03); 1132 0x03);
1134 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1133 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1135 "Trigger 88E Thermal Meter!!\n"); 1134 "Trigger 88E Thermal Meter!!\n");
1136 tm_trigger = 1; 1135 rtlpriv->dm.tm_trigger = 1;
1137 return; 1136 return;
1138 } else { 1137 } else {
1139 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1138 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1140 "Schedule TxPowerTracking !!\n"); 1139 "Schedule TxPowerTracking !!\n");
1141 dm_txpower_track_cb_therm(hw); 1140 dm_txpower_track_cb_therm(hw);
1142 tm_trigger = 0; 1141 rtlpriv->dm.tm_trigger = 0;
1143 } 1142 }
1144} 1143}
1145 1144
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
index f5ee67cda73a..0aca6f47487c 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c
@@ -1169,23 +1169,22 @@ static void rtl92c_dm_check_txpower_tracking_thermal_meter(
1169 struct ieee80211_hw *hw) 1169 struct ieee80211_hw *hw)
1170{ 1170{
1171 struct rtl_priv *rtlpriv = rtl_priv(hw); 1171 struct rtl_priv *rtlpriv = rtl_priv(hw);
1172 static u8 tm_trigger;
1173 1172
1174 if (!rtlpriv->dm.txpower_tracking) 1173 if (!rtlpriv->dm.txpower_tracking)
1175 return; 1174 return;
1176 1175
1177 if (!tm_trigger) { 1176 if (!rtlpriv->dm.tm_trigger) {
1178 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, RFREG_OFFSET_MASK, 1177 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, RFREG_OFFSET_MASK,
1179 0x60); 1178 0x60);
1180 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1179 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1181 "Trigger 92S Thermal Meter!!\n"); 1180 "Trigger 92S Thermal Meter!!\n");
1182 tm_trigger = 1; 1181 rtlpriv->dm.tm_trigger = 1;
1183 return; 1182 return;
1184 } else { 1183 } else {
1185 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1184 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1186 "Schedule TxPowerTracking direct call!!\n"); 1185 "Schedule TxPowerTracking direct call!!\n");
1187 rtl92c_dm_txpower_tracking_directcall(hw); 1186 rtl92c_dm_txpower_tracking_directcall(hw);
1188 tm_trigger = 0; 1187 rtlpriv->dm.tm_trigger = 0;
1189 } 1188 }
1190} 1189}
1191 1190
diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c
index a1be5a68edfb..587b8c505a76 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192de/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192de/dm.c
@@ -1240,23 +1240,22 @@ static void rtl92d_dm_initialize_txpower_tracking(struct ieee80211_hw *hw)
1240void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw) 1240void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw)
1241{ 1241{
1242 struct rtl_priv *rtlpriv = rtl_priv(hw); 1242 struct rtl_priv *rtlpriv = rtl_priv(hw);
1243 static u8 tm_trigger;
1244 1243
1245 if (!rtlpriv->dm.txpower_tracking) 1244 if (!rtlpriv->dm.txpower_tracking)
1246 return; 1245 return;
1247 1246
1248 if (!tm_trigger) { 1247 if (!rtlpriv->dm.tm_trigger) {
1249 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | 1248 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) |
1250 BIT(16), 0x03); 1249 BIT(16), 0x03);
1251 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1250 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1252 "Trigger 92S Thermal Meter!!\n"); 1251 "Trigger 92S Thermal Meter!!\n");
1253 tm_trigger = 1; 1252 rtlpriv->dm.tm_trigger = 1;
1254 return; 1253 return;
1255 } else { 1254 } else {
1256 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1255 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1257 "Schedule TxPowerTracking direct call!!\n"); 1256 "Schedule TxPowerTracking direct call!!\n");
1258 rtl92d_dm_txpower_tracking_callback_thermalmeter(hw); 1257 rtl92d_dm_txpower_tracking_callback_thermalmeter(hw);
1259 tm_trigger = 0; 1258 rtlpriv->dm.tm_trigger = 0;
1260 } 1259 }
1261} 1260}
1262 1261
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c
index 575980b88658..9bae5a92e30f 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/dm.c
@@ -200,7 +200,6 @@ static void _rtl92s_dm_check_txpowertracking_thermalmeter(
200{ 200{
201 struct rtl_priv *rtlpriv = rtl_priv(hw); 201 struct rtl_priv *rtlpriv = rtl_priv(hw);
202 struct rtl_phy *rtlphy = &(rtlpriv->phy); 202 struct rtl_phy *rtlphy = &(rtlpriv->phy);
203 static u8 tm_trigger;
204 u8 tx_power_checkcnt = 5; 203 u8 tx_power_checkcnt = 5;
205 204
206 /* 2T2R TP issue */ 205 /* 2T2R TP issue */
@@ -215,13 +214,13 @@ static void _rtl92s_dm_check_txpowertracking_thermalmeter(
215 return; 214 return;
216 } 215 }
217 216
218 if (!tm_trigger) { 217 if (!rtlpriv->dm.tm_trigger) {
219 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, 218 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER,
220 RFREG_OFFSET_MASK, 0x60); 219 RFREG_OFFSET_MASK, 0x60);
221 tm_trigger = 1; 220 rtlpriv->dm.tm_trigger = 1;
222 } else { 221 } else {
223 _rtl92s_dm_txpowertracking_callback_thermalmeter(hw); 222 _rtl92s_dm_txpowertracking_callback_thermalmeter(hw);
224 tm_trigger = 0; 223 rtlpriv->dm.tm_trigger = 0;
225 } 224 }
226} 225}
227 226
diff --git a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
index e77c3a46c94a..3a81cdba8ca3 100644
--- a/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8723be/dm.c
@@ -909,23 +909,22 @@ static void rtl8723be_dm_txpower_tracking_callback_thermalmeter(
909void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) 909void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw)
910{ 910{
911 struct rtl_priv *rtlpriv = rtl_priv(hw); 911 struct rtl_priv *rtlpriv = rtl_priv(hw);
912 static u8 tm_trigger;
913 912
914 if (!rtlpriv->dm.txpower_tracking) 913 if (!rtlpriv->dm.txpower_tracking)
915 return; 914 return;
916 915
917 if (!tm_trigger) { 916 if (!rtlpriv->dm.tm_trigger) {
918 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | BIT(16), 917 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER, BIT(17) | BIT(16),
919 0x03); 918 0x03);
920 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 919 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
921 "Trigger 8723be Thermal Meter!!\n"); 920 "Trigger 8723be Thermal Meter!!\n");
922 tm_trigger = 1; 921 rtlpriv->dm.tm_trigger = 1;
923 return; 922 return;
924 } else { 923 } else {
925 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 924 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
926 "Schedule TxPowerTracking !!\n"); 925 "Schedule TxPowerTracking !!\n");
927 rtl8723be_dm_txpower_tracking_callback_thermalmeter(hw); 926 rtl8723be_dm_txpower_tracking_callback_thermalmeter(hw);
928 tm_trigger = 0; 927 rtlpriv->dm.tm_trigger = 0;
929 } 928 }
930} 929}
931 930
diff --git a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
index 342678d2ed42..b57cfd965196 100644
--- a/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/dm.c
@@ -1068,20 +1068,18 @@ static void rtl8812ae_dm_check_txpower_tracking_thermalmeter(
1068 struct ieee80211_hw *hw) 1068 struct ieee80211_hw *hw)
1069{ 1069{
1070 struct rtl_priv *rtlpriv = rtl_priv(hw); 1070 struct rtl_priv *rtlpriv = rtl_priv(hw);
1071 static u8 tm_trigger;
1072 1071
1073 if (!tm_trigger) { 1072 if (!rtlpriv->dm.tm_trigger) {
1074 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, 1073 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E,
1075 BIT(17) | BIT(16), 0x03); 1074 BIT(17) | BIT(16), 0x03);
1076 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1075 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1077 "Trigger 8812 Thermal Meter!!\n"); 1076 "Trigger 8812 Thermal Meter!!\n");
1078 tm_trigger = 1; 1077 rtlpriv->dm.tm_trigger = 1;
1079 return; 1078 return;
1080 } 1079 }
1081 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 1080 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
1082 "Schedule TxPowerTracking direct call!!\n"); 1081 "Schedule TxPowerTracking direct call!!\n");
1083 rtl8812ae_dm_txpower_tracking_callback_thermalmeter(hw); 1082 rtl8812ae_dm_txpower_tracking_callback_thermalmeter(hw);
1084 tm_trigger = 0;
1085} 1083}
1086 1084
1087static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) 1085static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw)
@@ -2519,21 +2517,19 @@ void rtl8821ae_dm_txpower_tracking_callback_thermalmeter(
2519void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw) 2517void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw)
2520{ 2518{
2521 struct rtl_priv *rtlpriv = rtl_priv(hw); 2519 struct rtl_priv *rtlpriv = rtl_priv(hw);
2522 static u8 tm_trigger; 2520 if (!rtlpriv->dm.tm_trigger) {
2523
2524 if (!tm_trigger) {
2525 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16), 2521 rtl_set_rfreg(hw, RF90_PATH_A, RF_T_METER_88E, BIT(17)|BIT(16),
2526 0x03); 2522 0x03);
2527 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 2523 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
2528 "Trigger 8821ae Thermal Meter!!\n"); 2524 "Trigger 8821ae Thermal Meter!!\n");
2529 tm_trigger = 1; 2525 rtlpriv->dm.tm_trigger = 1;
2530 return; 2526 return;
2531 } else { 2527 } else {
2532 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD, 2528 RT_TRACE(rtlpriv, COMP_POWER_TRACKING, DBG_LOUD,
2533 "Schedule TxPowerTracking !!\n"); 2529 "Schedule TxPowerTracking !!\n");
2534 2530
2535 rtl8821ae_dm_txpower_tracking_callback_thermalmeter(hw); 2531 rtl8821ae_dm_txpower_tracking_callback_thermalmeter(hw);
2536 tm_trigger = 0; 2532 rtlpriv->dm.tm_trigger = 0;
2537 } 2533 }
2538} 2534}
2539 2535
diff --git a/drivers/net/wireless/rtlwifi/wifi.h b/drivers/net/wireless/rtlwifi/wifi.h
index 51572912c53d..2b770b5e2620 100644
--- a/drivers/net/wireless/rtlwifi/wifi.h
+++ b/drivers/net/wireless/rtlwifi/wifi.h
@@ -1665,6 +1665,7 @@ struct rtl_dm {
1665 u8 last_dtp_lvl; 1665 u8 last_dtp_lvl;
1666 u8 thermalvalue_avg[AVG_THERMAL_NUM]; 1666 u8 thermalvalue_avg[AVG_THERMAL_NUM];
1667 u8 thermalvalue_avg_index; 1667 u8 thermalvalue_avg_index;
1668 u8 tm_trigger;
1668 bool done_txpower; 1669 bool done_txpower;
1669 u8 dynamic_txhighpower_lvl; /*Tx high power level */ 1670 u8 dynamic_txhighpower_lvl; /*Tx high power level */
1670 u8 dm_flag; /*Indicate each dynamic mechanism's status. */ 1671 u8 dm_flag; /*Indicate each dynamic mechanism's status. */