mirror of
https://github.com/torvalds/linux.git
synced 2026-08-01 03:59:40 +02:00
wifi: rtw89: mac: define DMA channel mask to avoid unsupported channels
Six channels are unsupported by 8852b, so mask them out to prevent to access undefined registers in this chip. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220927062611.30484-3-pkshih@realtek.com
This commit is contained in:
parent
1bebcf08a3
commit
a1b7163aab
|
|
@ -2716,6 +2716,7 @@ struct rtw89_chip_info {
|
|||
u8 dcfo_comp_sft;
|
||||
const struct rtw89_imr_info *imr_info;
|
||||
const struct rtw89_rrsr_cfgs *rrsr_cfgs;
|
||||
u32 dma_ch_mask;
|
||||
};
|
||||
|
||||
union rtw89_bus_info {
|
||||
|
|
|
|||
|
|
@ -827,6 +827,8 @@ static void hfc_func_en(struct rtw89_dev *rtwdev, bool en, bool h2c_en)
|
|||
|
||||
static int hfc_init(struct rtw89_dev *rtwdev, bool reset, bool en, bool h2c_en)
|
||||
{
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
u32 dma_ch_mask = chip->dma_ch_mask;
|
||||
u8 ch;
|
||||
u32 ret = 0;
|
||||
|
||||
|
|
@ -848,6 +850,8 @@ static int hfc_init(struct rtw89_dev *rtwdev, bool reset, bool en, bool h2c_en)
|
|||
}
|
||||
|
||||
for (ch = RTW89_DMA_ACH0; ch < RTW89_DMA_H2C; ch++) {
|
||||
if (dma_ch_mask & BIT(ch))
|
||||
continue;
|
||||
ret = hfc_ch_ctrl(rtwdev, ch);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -863,6 +867,8 @@ static int hfc_init(struct rtw89_dev *rtwdev, bool reset, bool en, bool h2c_en)
|
|||
udelay(10);
|
||||
}
|
||||
for (ch = RTW89_DMA_ACH0; ch < RTW89_DMA_H2C; ch++) {
|
||||
if (dma_ch_mask & BIT(ch))
|
||||
continue;
|
||||
ret = hfc_upd_ch_info(rtwdev, ch);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -2281,6 +2281,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
|
|||
.dcfo_comp_sft = 3,
|
||||
.imr_info = &rtw8852a_imr_info,
|
||||
.rrsr_cfgs = &rtw8852a_rrsr_cfgs,
|
||||
.dma_ch_mask = 0,
|
||||
};
|
||||
EXPORT_SYMBOL(rtw8852a_chip_info);
|
||||
|
||||
|
|
|
|||
18
drivers/net/wireless/realtek/rtw89/rtw8852b.c
Normal file
18
drivers/net/wireless/realtek/rtw89/rtw8852b.c
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||
/* Copyright(c) 2019-2022 Realtek Corporation
|
||||
*/
|
||||
|
||||
#include "core.h"
|
||||
|
||||
const struct rtw89_chip_info rtw8852b_chip_info = {
|
||||
.chip_id = RTL8852B,
|
||||
.dma_ch_mask = BIT(RTW89_DMA_ACH4) | BIT(RTW89_DMA_ACH5) |
|
||||
BIT(RTW89_DMA_ACH6) | BIT(RTW89_DMA_ACH7) |
|
||||
BIT(RTW89_DMA_B1MG) | BIT(RTW89_DMA_B1HI),
|
||||
};
|
||||
EXPORT_SYMBOL(rtw8852b_chip_info);
|
||||
|
||||
MODULE_FIRMWARE("rtw89/rtw8852b_fw.bin");
|
||||
MODULE_AUTHOR("Realtek Corporation");
|
||||
MODULE_DESCRIPTION("Realtek 802.11ax wireless 8852B driver");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
|
@ -3132,6 +3132,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = {
|
|||
.dcfo_comp_sft = 5,
|
||||
.imr_info = &rtw8852c_imr_info,
|
||||
.rrsr_cfgs = &rtw8852c_rrsr_cfgs,
|
||||
.dma_ch_mask = 0,
|
||||
};
|
||||
EXPORT_SYMBOL(rtw8852c_chip_info);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user