diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/def.h | 144 | ||||
-rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 13 |
2 files changed, 144 insertions, 13 deletions
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h index 83cd64895292..2f577c8828fc 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/def.h | |||
@@ -121,11 +121,37 @@ | |||
121 | #define CHIP_92C 0x01 | 121 | #define CHIP_92C 0x01 |
122 | #define CHIP_88C 0x00 | 122 | #define CHIP_88C 0x00 |
123 | 123 | ||
124 | /* Add vendor information into chip version definition. | ||
125 | * Add UMC B-Cut and RTL8723 chip info definition. | ||
126 | * | ||
127 | * BIT 7 Reserved | ||
128 | * BIT 6 UMC BCut | ||
129 | * BIT 5 Manufacturer(TSMC/UMC) | ||
130 | * BIT 4 TEST/NORMAL | ||
131 | * BIT 3 8723 Version | ||
132 | * BIT 2 8723? | ||
133 | * BIT 1 1T2R? | ||
134 | * BIT 0 88C/92C | ||
135 | */ | ||
136 | |||
124 | enum version_8192c { | 137 | enum version_8192c { |
125 | VERSION_A_CHIP_92C = 0x01, | 138 | VERSION_A_CHIP_92C = 0x01, |
126 | VERSION_A_CHIP_88C = 0x00, | 139 | VERSION_A_CHIP_88C = 0x00, |
127 | VERSION_B_CHIP_92C = 0x11, | 140 | VERSION_B_CHIP_92C = 0x11, |
128 | VERSION_B_CHIP_88C = 0x10, | 141 | VERSION_B_CHIP_88C = 0x10, |
142 | VERSION_TEST_CHIP_88C = 0x00, | ||
143 | VERSION_TEST_CHIP_92C = 0x01, | ||
144 | VERSION_NORMAL_TSMC_CHIP_88C = 0x10, | ||
145 | VERSION_NORMAL_TSMC_CHIP_92C = 0x11, | ||
146 | VERSION_NORMAL_TSMC_CHIP_92C_1T2R = 0x13, | ||
147 | VERSION_NORMAL_UMC_CHIP_88C_A_CUT = 0x30, | ||
148 | VERSION_NORMAL_UMC_CHIP_92C_A_CUT = 0x31, | ||
149 | VERSION_NORMAL_UMC_CHIP_92C_1T2R_A_CUT = 0x33, | ||
150 | VERSION_NORMA_UMC_CHIP_8723_1T1R_A_CUT = 0x34, | ||
151 | VERSION_NORMA_UMC_CHIP_8723_1T1R_B_CUT = 0x3c, | ||
152 | VERSION_NORMAL_UMC_CHIP_88C_B_CUT = 0x70, | ||
153 | VERSION_NORMAL_UMC_CHIP_92C_B_CUT = 0x71, | ||
154 | VERSION_NORMAL_UMC_CHIP_92C_1T2R_B_CUT = 0x73, | ||
129 | VERSION_UNKNOWN = 0x88, | 155 | VERSION_UNKNOWN = 0x88, |
130 | }; | 156 | }; |
131 | 157 | ||
@@ -254,4 +280,122 @@ struct h2c_cmd_8192c { | |||
254 | u8 *p_cmdbuffer; | 280 | u8 *p_cmdbuffer; |
255 | }; | 281 | }; |
256 | 282 | ||
283 | static inline u8 _rtl92c_get_chnl_group(u8 chnl) | ||
284 | { | ||
285 | u8 group = 0; | ||
286 | |||
287 | if (chnl < 3) | ||
288 | group = 0; | ||
289 | else if (chnl < 9) | ||
290 | group = 1; | ||
291 | else | ||
292 | group = 2; | ||
293 | |||
294 | return group; | ||
295 | } | ||
296 | |||
297 | /* NOTE: reference to rtl8192c_rates struct */ | ||
298 | static inline int _rtl92c_rate_mapping(struct ieee80211_hw *hw, bool isHT, | ||
299 | u8 desc_rate, bool first_ampdu) | ||
300 | { | ||
301 | struct rtl_priv *rtlpriv = rtl_priv(hw); | ||
302 | int rate_idx = 0; | ||
303 | |||
304 | if (first_ampdu) { | ||
305 | if (false == isHT) { | ||
306 | switch (desc_rate) { | ||
307 | case DESC92C_RATE1M: | ||
308 | rate_idx = 0; | ||
309 | break; | ||
310 | case DESC92C_RATE2M: | ||
311 | rate_idx = 1; | ||
312 | break; | ||
313 | case DESC92C_RATE5_5M: | ||
314 | rate_idx = 2; | ||
315 | break; | ||
316 | case DESC92C_RATE11M: | ||
317 | rate_idx = 3; | ||
318 | break; | ||
319 | case DESC92C_RATE6M: | ||
320 | rate_idx = 4; | ||
321 | break; | ||
322 | case DESC92C_RATE9M: | ||
323 | rate_idx = 5; | ||
324 | break; | ||
325 | case DESC92C_RATE12M: | ||
326 | rate_idx = 6; | ||
327 | break; | ||
328 | case DESC92C_RATE18M: | ||
329 | rate_idx = 7; | ||
330 | break; | ||
331 | case DESC92C_RATE24M: | ||
332 | rate_idx = 8; | ||
333 | break; | ||
334 | case DESC92C_RATE36M: | ||
335 | rate_idx = 9; | ||
336 | break; | ||
337 | case DESC92C_RATE48M: | ||
338 | rate_idx = 10; | ||
339 | break; | ||
340 | case DESC92C_RATE54M: | ||
341 | rate_idx = 11; | ||
342 | break; | ||
343 | default: | ||
344 | RT_TRACE(rtlpriv, COMP_ERR, DBG_DMESG, | ||
345 | ("Rate %d is not support, set to " | ||
346 | "1M rate.\n", desc_rate)); | ||
347 | rate_idx = 0; | ||
348 | break; | ||
349 | } | ||
350 | } else { | ||
351 | rate_idx = 11; | ||
352 | } | ||
353 | return rate_idx; | ||
354 | } | ||
355 | switch (desc_rate) { | ||
356 | case DESC92C_RATE1M: | ||
357 | rate_idx = 0; | ||
358 | break; | ||
359 | case DESC92C_RATE2M: | ||
360 | rate_idx = 1; | ||
361 | break; | ||
362 | case DESC92C_RATE5_5M: | ||
363 | rate_idx = 2; | ||
364 | break; | ||
365 | case DESC92C_RATE11M: | ||
366 | rate_idx = 3; | ||
367 | break; | ||
368 | case DESC92C_RATE6M: | ||
369 | rate_idx = 4; | ||
370 | break; | ||
371 | case DESC92C_RATE9M: | ||
372 | rate_idx = 5; | ||
373 | break; | ||
374 | case DESC92C_RATE12M: | ||
375 | rate_idx = 6; | ||
376 | break; | ||
377 | case DESC92C_RATE18M: | ||
378 | rate_idx = 7; | ||
379 | break; | ||
380 | case DESC92C_RATE24M: | ||
381 | rate_idx = 8; | ||
382 | break; | ||
383 | case DESC92C_RATE36M: | ||
384 | rate_idx = 9; | ||
385 | break; | ||
386 | case DESC92C_RATE48M: | ||
387 | rate_idx = 10; | ||
388 | break; | ||
389 | case DESC92C_RATE54M: | ||
390 | rate_idx = 11; | ||
391 | break; | ||
392 | /* TODO: How to mapping MCS rate? */ | ||
393 | /* NOTE: referenc to __ieee80211_rx */ | ||
394 | default: | ||
395 | rate_idx = 11; | ||
396 | break; | ||
397 | } | ||
398 | return rate_idx; | ||
399 | } | ||
400 | |||
257 | #endif | 401 | #endif |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c index 1c41a0c93506..0e280995aace 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | |||
@@ -1335,19 +1335,6 @@ void rtl92ce_update_interrupt_mask(struct ieee80211_hw *hw, | |||
1335 | rtl92ce_enable_interrupt(hw); | 1335 | rtl92ce_enable_interrupt(hw); |
1336 | } | 1336 | } |
1337 | 1337 | ||
1338 | static u8 _rtl92c_get_chnl_group(u8 chnl) | ||
1339 | { | ||
1340 | u8 group; | ||
1341 | |||
1342 | if (chnl < 3) | ||
1343 | group = 0; | ||
1344 | else if (chnl < 9) | ||
1345 | group = 1; | ||
1346 | else | ||
1347 | group = 2; | ||
1348 | return group; | ||
1349 | } | ||
1350 | |||
1351 | static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw, | 1338 | static void _rtl92ce_read_txpower_info_from_hwpg(struct ieee80211_hw *hw, |
1352 | bool autoload_fail, | 1339 | bool autoload_fail, |
1353 | u8 *hwinfo) | 1340 | u8 *hwinfo) |