Skip to content

Commit d75589a

Browse files
Bitterblue SmithPing-Ke Shih
authored andcommitted
wifi: rtlwifi: Clean up rtl8192d-common a bit
Improve readability: * add empty lines * use abs_diff in rtl92d_dm_txpower_tracking_callback_thermalmeter * roll up repeated statements into a for loop in rtl92d_dm_txpower_tracking_callback_thermalmeter * shorten lines by replacing many instances of "rtlpriv->dm" with "dm" pointer in rtl92d_dm_txpower_tracking_callback_thermalmeter * sort some declarations by length * refactor _rtl92d_get_txpower_writeval_by_regulatory a little * refactor _rtl92de_readpowervalue_fromprom a little Delete unused structs tag_dynamic_init_gain_operation_type_definition and swat. Simplify rtl92d_fill_h2c_cmd a little and delete a pointless wrapper function. Tested with a single MAC single PHY USB dongle from Aliexpress labelled "CC&C WL-6210-V3". Signed-off-by: Bitterblue Smith <[email protected]> Acked-by: Ping-Ke Shih <[email protected]> Signed-off-by: Ping-Ke Shih <[email protected]> Link: https://msgid.link/[email protected]
1 parent db5ae2e commit d75589a

File tree

8 files changed

+422
-471
lines changed

8 files changed

+422
-471
lines changed

drivers/net/wireless/realtek/rtlwifi/rtl8192d/dm_common.c

Lines changed: 175 additions & 193 deletions
Large diffs are not rendered by default.

drivers/net/wireless/realtek/rtlwifi/rtl8192d/dm_common.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,6 @@
4848
#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
4949
#define INDEX_MAPPING_NUM 13
5050

51-
struct swat {
52-
u8 failure_cnt;
53-
u8 try_flag;
54-
u8 stop_trying;
55-
long pre_rssi;
56-
long trying_threshold;
57-
u8 cur_antenna;
58-
u8 pre_antenna;
59-
};
60-
61-
enum tag_dynamic_init_gain_operation_type_definition {
62-
DIG_TYPE_THRESH_HIGH = 0,
63-
DIG_TYPE_THRESH_LOW = 1,
64-
DIG_TYPE_BACKOFF = 2,
65-
DIG_TYPE_RX_GAIN_MIN = 3,
66-
DIG_TYPE_RX_GAIN_MAX = 4,
67-
DIG_TYPE_ENABLE = 5,
68-
DIG_TYPE_DISABLE = 6,
69-
DIG_OP_TYPE_MAX
70-
};
71-
7251
enum dm_1r_cca {
7352
CCA_1R = 0,
7453
CCA_2R = 1,

drivers/net/wireless/realtek/rtlwifi/rtl8192d/fw_common.c

Lines changed: 56 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
bool rtl92d_is_fw_downloaded(struct rtl_priv *rtlpriv)
1313
{
14-
return (rtl_read_dword(rtlpriv, REG_MCUFWDL) & MCUFWDL_RDY) ?
15-
true : false;
14+
return !!(rtl_read_dword(rtlpriv, REG_MCUFWDL) & MCUFWDL_RDY);
1615
}
1716
EXPORT_SYMBOL_GPL(rtl92d_is_fw_downloaded);
1817

@@ -50,17 +49,22 @@ void rtl92d_write_fw(struct ieee80211_hw *hw,
5049
u32 page, offset;
5150

5251
rtl_dbg(rtlpriv, COMP_FW, DBG_TRACE, "FW size is %d bytes,\n", size);
52+
5353
if (rtlhal->hw_type == HARDWARE_TYPE_RTL8192DE)
5454
rtl_fill_dummy(bufferptr, &size);
55+
5556
pagenums = size / FW_8192D_PAGE_SIZE;
5657
remainsize = size % FW_8192D_PAGE_SIZE;
58+
5759
if (pagenums > 8)
5860
pr_err("Page numbers should not greater then 8\n");
61+
5962
for (page = 0; page < pagenums; page++) {
6063
offset = page * FW_8192D_PAGE_SIZE;
6164
rtl_fw_page_write(hw, page, (bufferptr + offset),
6265
FW_8192D_PAGE_SIZE);
6366
}
67+
6468
if (remainsize) {
6569
offset = pagenums * FW_8192D_PAGE_SIZE;
6670
page = pagenums;
@@ -79,14 +83,17 @@ int rtl92d_fw_free_to_go(struct ieee80211_hw *hw)
7983
value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL);
8084
} while ((counter++ < FW_8192D_POLLING_TIMEOUT_COUNT) &&
8185
(!(value32 & FWDL_CHKSUM_RPT)));
86+
8287
if (counter >= FW_8192D_POLLING_TIMEOUT_COUNT) {
8388
pr_err("chksum report fail! REG_MCUFWDL:0x%08x\n",
8489
value32);
8590
return -EIO;
8691
}
92+
8793
value32 = rtl_read_dword(rtlpriv, REG_MCUFWDL);
8894
value32 |= MCUFWDL_RDY;
8995
rtl_write_dword(rtlpriv, REG_MCUFWDL, value32);
96+
9097
return 0;
9198
}
9299
EXPORT_SYMBOL_GPL(rtl92d_fw_free_to_go);
@@ -99,7 +106,9 @@ void rtl92d_firmware_selfreset(struct ieee80211_hw *hw)
99106

100107
/* Set (REG_HMETFR + 3) to 0x20 is reset 8051 */
101108
rtl_write_byte(rtlpriv, REG_HMETFR + 3, 0x20);
109+
102110
u1b_tmp = rtl_read_byte(rtlpriv, REG_SYS_FUNC_EN + 1);
111+
103112
while (u1b_tmp & BIT(2)) {
104113
delay--;
105114
if (delay == 0)
@@ -174,31 +183,32 @@ static bool _rtl92d_check_fw_read_last_h2c(struct ieee80211_hw *hw, u8 boxnum)
174183
return result;
175184
}
176185

177-
static void _rtl92d_fill_h2c_command(struct ieee80211_hw *hw,
178-
u8 element_id, u32 cmd_len, u8 *cmdbuffer)
186+
void rtl92d_fill_h2c_cmd(struct ieee80211_hw *hw,
187+
u8 element_id, u32 cmd_len, u8 *cmdbuffer)
179188
{
180-
struct rtl_priv *rtlpriv = rtl_priv(hw);
181-
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
182189
struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
183-
u8 boxnum;
190+
struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));
191+
struct rtl_priv *rtlpriv = rtl_priv(hw);
192+
u8 boxcontent[4], boxextcontent[2];
184193
u16 box_reg = 0, box_extreg = 0;
185-
u8 u1b_tmp;
186-
bool isfw_read = false;
187-
u8 buf_index = 0;
194+
u8 wait_writeh2c_limmit = 100;
188195
bool bwrite_success = false;
189196
u8 wait_h2c_limmit = 100;
190-
u8 wait_writeh2c_limmit = 100;
191-
u8 boxcontent[4], boxextcontent[2];
192197
u32 h2c_waitcounter = 0;
198+
bool isfw_read = false;
193199
unsigned long flag;
200+
u8 u1b_tmp;
201+
u8 boxnum;
194202
u8 idx;
195203

196204
if (ppsc->rfpwr_state == ERFOFF || ppsc->inactive_pwrstate == ERFOFF) {
197205
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD,
198206
"Return as RF is off!!!\n");
199207
return;
200208
}
209+
201210
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD, "come in\n");
211+
202212
while (true) {
203213
spin_lock_irqsave(&rtlpriv->locks.h2c_lock, flag);
204214
if (rtlhal->h2c_setinprogress) {
@@ -228,35 +238,23 @@ static void _rtl92d_fill_h2c_command(struct ieee80211_hw *hw,
228238
break;
229239
}
230240
}
241+
231242
while (!bwrite_success) {
232243
wait_writeh2c_limmit--;
233244
if (wait_writeh2c_limmit == 0) {
234245
pr_err("Write H2C fail because no trigger for FW INT!\n");
235246
break;
236247
}
248+
237249
boxnum = rtlhal->last_hmeboxnum;
238-
switch (boxnum) {
239-
case 0:
240-
box_reg = REG_HMEBOX_0;
241-
box_extreg = REG_HMEBOX_EXT_0;
242-
break;
243-
case 1:
244-
box_reg = REG_HMEBOX_1;
245-
box_extreg = REG_HMEBOX_EXT_1;
246-
break;
247-
case 2:
248-
box_reg = REG_HMEBOX_2;
249-
box_extreg = REG_HMEBOX_EXT_2;
250-
break;
251-
case 3:
252-
box_reg = REG_HMEBOX_3;
253-
box_extreg = REG_HMEBOX_EXT_3;
254-
break;
255-
default:
256-
pr_err("switch case %#x not processed\n",
257-
boxnum);
250+
if (boxnum > 3) {
251+
pr_err("boxnum %#x too big\n", boxnum);
258252
break;
259253
}
254+
255+
box_reg = REG_HMEBOX_0 + boxnum * SIZE_OF_REG_HMEBOX;
256+
box_extreg = REG_HMEBOX_EXT_0 + boxnum * SIZE_OF_REG_HMEBOX_EXT;
257+
260258
isfw_read = _rtl92d_check_fw_read_last_h2c(hw, boxnum);
261259
while (!isfw_read) {
262260
wait_h2c_limmit--;
@@ -266,78 +264,70 @@ static void _rtl92d_fill_h2c_command(struct ieee80211_hw *hw,
266264
boxnum);
267265
break;
268266
}
267+
269268
udelay(10);
269+
270270
isfw_read = _rtl92d_check_fw_read_last_h2c(hw, boxnum);
271271
u1b_tmp = rtl_read_byte(rtlpriv, 0x1BF);
272272
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD,
273273
"Waiting for FW read clear HMEBox(%d)!!! 0x1BF = %2x\n",
274274
boxnum, u1b_tmp);
275275
}
276+
276277
if (!isfw_read) {
277278
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD,
278279
"Write H2C register BOX[%d] fail!!!!! Fw do not read.\n",
279280
boxnum);
280281
break;
281282
}
283+
282284
memset(boxcontent, 0, sizeof(boxcontent));
283285
memset(boxextcontent, 0, sizeof(boxextcontent));
284286
boxcontent[0] = element_id;
287+
285288
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD,
286289
"Write element_id box_reg(%4x) = %2x\n",
287290
box_reg, element_id);
291+
288292
switch (cmd_len) {
289-
case 1:
290-
boxcontent[0] &= ~(BIT(7));
291-
memcpy(boxcontent + 1, cmdbuffer + buf_index, 1);
292-
for (idx = 0; idx < 4; idx++)
293-
rtl_write_byte(rtlpriv, box_reg + idx,
294-
boxcontent[idx]);
295-
break;
296-
case 2:
297-
boxcontent[0] &= ~(BIT(7));
298-
memcpy(boxcontent + 1, cmdbuffer + buf_index, 2);
299-
for (idx = 0; idx < 4; idx++)
300-
rtl_write_byte(rtlpriv, box_reg + idx,
301-
boxcontent[idx]);
302-
break;
303-
case 3:
304-
boxcontent[0] &= ~(BIT(7));
305-
memcpy(boxcontent + 1, cmdbuffer + buf_index, 3);
306-
for (idx = 0; idx < 4; idx++)
307-
rtl_write_byte(rtlpriv, box_reg + idx,
308-
boxcontent[idx]);
309-
break;
310-
case 4:
311-
boxcontent[0] |= (BIT(7));
312-
memcpy(boxextcontent, cmdbuffer + buf_index, 2);
313-
memcpy(boxcontent + 1, cmdbuffer + buf_index + 2, 2);
314-
for (idx = 0; idx < 2; idx++)
315-
rtl_write_byte(rtlpriv, box_extreg + idx,
316-
boxextcontent[idx]);
293+
case 1 ... 3:
294+
/* BOX: | ID | A0 | A1 | A2 |
295+
* BOX_EXT: --- N/A ------
296+
*/
297+
boxcontent[0] &= ~BIT(7);
298+
memcpy(boxcontent + 1, cmdbuffer, cmd_len);
299+
317300
for (idx = 0; idx < 4; idx++)
318301
rtl_write_byte(rtlpriv, box_reg + idx,
319302
boxcontent[idx]);
320303
break;
321-
case 5:
322-
boxcontent[0] |= (BIT(7));
323-
memcpy(boxextcontent, cmdbuffer + buf_index, 2);
324-
memcpy(boxcontent + 1, cmdbuffer + buf_index + 2, 3);
304+
case 4 ... 5:
305+
/* * ID ext = ID | BIT(7)
306+
* BOX: | ID ext | A2 | A3 | A4 |
307+
* BOX_EXT: | A0 | A1 |
308+
*/
309+
boxcontent[0] |= BIT(7);
310+
memcpy(boxextcontent, cmdbuffer, 2);
311+
memcpy(boxcontent + 1, cmdbuffer + 2, cmd_len - 2);
312+
325313
for (idx = 0; idx < 2; idx++)
326314
rtl_write_byte(rtlpriv, box_extreg + idx,
327315
boxextcontent[idx]);
316+
328317
for (idx = 0; idx < 4; idx++)
329318
rtl_write_byte(rtlpriv, box_reg + idx,
330319
boxcontent[idx]);
331320
break;
332321
default:
333-
pr_err("switch case %#x not processed\n",
334-
cmd_len);
322+
pr_err("switch case %#x not processed\n", cmd_len);
335323
break;
336324
}
325+
337326
bwrite_success = true;
338327
rtlhal->last_hmeboxnum = boxnum + 1;
339328
if (rtlhal->last_hmeboxnum == 4)
340329
rtlhal->last_hmeboxnum = 0;
330+
341331
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD,
342332
"pHalData->last_hmeboxnum = %d\n",
343333
rtlhal->last_hmeboxnum);
@@ -347,16 +337,6 @@ static void _rtl92d_fill_h2c_command(struct ieee80211_hw *hw,
347337
spin_unlock_irqrestore(&rtlpriv->locks.h2c_lock, flag);
348338
rtl_dbg(rtlpriv, COMP_CMD, DBG_LOUD, "go out\n");
349339
}
350-
351-
void rtl92d_fill_h2c_cmd(struct ieee80211_hw *hw,
352-
u8 element_id, u32 cmd_len, u8 *cmdbuffer)
353-
{
354-
u32 tmp_cmdbuf[2];
355-
356-
memset(tmp_cmdbuf, 0, 8);
357-
memcpy(tmp_cmdbuf, cmdbuffer, cmd_len);
358-
_rtl92d_fill_h2c_command(hw, element_id, cmd_len, (u8 *)&tmp_cmdbuf);
359-
}
360340
EXPORT_SYMBOL_GPL(rtl92d_fill_h2c_cmd);
361341

362342
void rtl92d_set_fw_joinbss_report_cmd(struct ieee80211_hw *hw, u8 mstatus)

0 commit comments

Comments
 (0)