diff options
author | Hans Ulli Kroll <ulli.kroll@googlemail.com> | 2015-06-07 07:19:16 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2015-06-15 05:30:20 -0400 |
commit | 1637c1b7ebbb51de63b71c7eebcfff6407a0be72 (patch) | |
tree | 60b608d9e212dab76d85968a468c383d9f0c01ec /drivers/net/wireless/rtlwifi | |
parent | fbcaee1c6da13d10b8fb7810d76fb8ce92dd9226 (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/wireless/rtlwifi')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8188ee/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192c/dm_common.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192de/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8723be/dm.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8821ae/dm.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/wifi.h | 1 |
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) | |||
1123 | void rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw) | 1123 | void 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) | |||
1240 | void rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw) | 1240 | void 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( | |||
909 | void rtl8723be_dm_check_txpower_tracking(struct ieee80211_hw *hw) | 909 | void 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 | ||
1087 | static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) | 1085 | static void rtl8821ae_dm_iq_calibrate(struct ieee80211_hw *hw) |
@@ -2519,21 +2517,19 @@ void rtl8821ae_dm_txpower_tracking_callback_thermalmeter( | |||
2519 | void rtl8821ae_dm_check_txpower_tracking_thermalmeter(struct ieee80211_hw *hw) | 2517 | void 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. */ |