1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
2 /* Copyright(c) 2018-2019 Realtek Corporation
9 bool check_hw_ready(struct rtw_dev
*rtwdev
, u32 addr
, u32 mask
, u32 target
)
13 for (cnt
= 0; cnt
< 1000; cnt
++) {
14 if (rtw_read32_mask(rtwdev
, addr
, mask
) == target
)
23 bool ltecoex_read_reg(struct rtw_dev
*rtwdev
, u16 offset
, u32
*val
)
25 if (!check_hw_ready(rtwdev
, LTECOEX_ACCESS_CTRL
, LTECOEX_READY
, 1))
28 rtw_write32(rtwdev
, LTECOEX_ACCESS_CTRL
, 0x800F0000 | offset
);
29 *val
= rtw_read32(rtwdev
, LTECOEX_READ_DATA
);
34 bool ltecoex_reg_write(struct rtw_dev
*rtwdev
, u16 offset
, u32 value
)
36 if (!check_hw_ready(rtwdev
, LTECOEX_ACCESS_CTRL
, LTECOEX_READY
, 1))
39 rtw_write32(rtwdev
, LTECOEX_WRITE_DATA
, value
);
40 rtw_write32(rtwdev
, LTECOEX_ACCESS_CTRL
, 0xC00F0000 | offset
);
45 void rtw_restore_reg(struct rtw_dev
*rtwdev
,
46 struct rtw_backup_info
*bckp
, u32 num
)
53 for (i
= 0; i
< num
; i
++, bckp
++) {
60 rtw_write8(rtwdev
, reg
, (u8
)val
);
63 rtw_write16(rtwdev
, reg
, (u16
)val
);
66 rtw_write32(rtwdev
, reg
, (u32
)val
);
74 void rtw_desc_to_mcsrate(u16 rate
, u8
*mcs
, u8
*nss
)
76 if (rate
<= DESC_RATE54M
)
79 if (rate
>= DESC_RATEVHT1SS_MCS0
&&
80 rate
<= DESC_RATEVHT1SS_MCS9
) {
82 *mcs
= rate
- DESC_RATEVHT1SS_MCS0
;
83 } else if (rate
>= DESC_RATEVHT2SS_MCS0
&&
84 rate
<= DESC_RATEVHT2SS_MCS9
) {
86 *mcs
= rate
- DESC_RATEVHT2SS_MCS0
;
87 } else if (rate
>= DESC_RATEVHT3SS_MCS0
&&
88 rate
<= DESC_RATEVHT3SS_MCS9
) {
90 *mcs
= rate
- DESC_RATEVHT3SS_MCS0
;
91 } else if (rate
>= DESC_RATEVHT4SS_MCS0
&&
92 rate
<= DESC_RATEVHT4SS_MCS9
) {
94 *mcs
= rate
- DESC_RATEVHT4SS_MCS0
;
95 } else if (rate
>= DESC_RATEMCS0
&&
96 rate
<= DESC_RATEMCS15
) {
97 *mcs
= rate
- DESC_RATEMCS0
;