mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 21:44:23 -04:00
wifi: rtw89: pci: generalize code of PCI control DMA IO for WiFi 7
The register to enable/disable PCI DMA IO has many variants, so define and use a field to control it accordingly. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20231026120049.9187-5-pkshih@realtek.com
This commit is contained in:
@@ -1750,21 +1750,13 @@ static void rtw89_pci_ctrl_dma_trx(struct rtw89_dev *rtwdev, bool enable)
|
||||
|
||||
static void rtw89_pci_ctrl_dma_io(struct rtw89_dev *rtwdev, bool enable)
|
||||
{
|
||||
enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
|
||||
u32 reg, mask;
|
||||
|
||||
if (chip_id == RTL8852C) {
|
||||
reg = R_AX_HAXI_INIT_CFG1;
|
||||
mask = B_AX_STOP_AXI_MST;
|
||||
} else {
|
||||
reg = R_AX_PCIE_DMA_STOP1;
|
||||
mask = B_AX_STOP_PCIEIO;
|
||||
}
|
||||
const struct rtw89_pci_info *info = rtwdev->pci_info;
|
||||
const struct rtw89_reg_def *reg = &info->dma_io_stop;
|
||||
|
||||
if (enable)
|
||||
rtw89_write32_clr(rtwdev, reg, mask);
|
||||
rtw89_write32_clr(rtwdev, reg->addr, reg->mask);
|
||||
else
|
||||
rtw89_write32_set(rtwdev, reg, mask);
|
||||
rtw89_write32_set(rtwdev, reg->addr, reg->mask);
|
||||
}
|
||||
|
||||
static void rtw89_pci_ctrl_dma_all(struct rtw89_dev *rtwdev, bool enable)
|
||||
|
||||
@@ -947,6 +947,7 @@ struct rtw89_pci_info {
|
||||
u32 max_tag_num_mask;
|
||||
u32 rxbd_rwptr_clr_reg;
|
||||
u32 txbd_rwptr_clr2_reg;
|
||||
struct rtw89_reg_def dma_io_stop;
|
||||
struct rtw89_reg_def dma_stop1;
|
||||
struct rtw89_reg_def dma_stop2;
|
||||
struct rtw89_reg_def dma_busy1;
|
||||
|
||||
@@ -33,6 +33,7 @@ static const struct rtw89_pci_info rtw8851b_pci_info = {
|
||||
.max_tag_num_mask = B_AX_MAX_TAG_NUM,
|
||||
.rxbd_rwptr_clr_reg = R_AX_RXBD_RWPTR_CLR,
|
||||
.txbd_rwptr_clr2_reg = 0,
|
||||
.dma_io_stop = {R_AX_PCIE_DMA_STOP1, B_AX_STOP_PCIEIO},
|
||||
.dma_stop1 = {R_AX_PCIE_DMA_STOP1, B_AX_TX_STOP1_MASK_V1},
|
||||
.dma_stop2 = {0},
|
||||
.dma_busy1 = {R_AX_PCIE_DMA_BUSY1, DMA_BUSY1_CHECK_V1},
|
||||
|
||||
@@ -34,6 +34,7 @@ static const struct rtw89_pci_info rtw8852a_pci_info = {
|
||||
.max_tag_num_mask = B_AX_MAX_TAG_NUM,
|
||||
.rxbd_rwptr_clr_reg = R_AX_RXBD_RWPTR_CLR,
|
||||
.txbd_rwptr_clr2_reg = R_AX_TXBD_RWPTR_CLR2,
|
||||
.dma_io_stop = {R_AX_PCIE_DMA_STOP1, B_AX_STOP_PCIEIO},
|
||||
.dma_stop1 = {R_AX_PCIE_DMA_STOP1, B_AX_TX_STOP1_MASK},
|
||||
.dma_stop2 = {R_AX_PCIE_DMA_STOP2, B_AX_TX_STOP2_ALL},
|
||||
.dma_busy1 = {R_AX_PCIE_DMA_BUSY1, DMA_BUSY1_CHECK},
|
||||
|
||||
@@ -34,6 +34,7 @@ static const struct rtw89_pci_info rtw8852b_pci_info = {
|
||||
.max_tag_num_mask = B_AX_MAX_TAG_NUM,
|
||||
.rxbd_rwptr_clr_reg = R_AX_RXBD_RWPTR_CLR,
|
||||
.txbd_rwptr_clr2_reg = 0,
|
||||
.dma_io_stop = {R_AX_PCIE_DMA_STOP1, B_AX_STOP_PCIEIO},
|
||||
.dma_stop1 = {R_AX_PCIE_DMA_STOP1, B_AX_TX_STOP1_MASK_V1},
|
||||
.dma_stop2 = {0},
|
||||
.dma_busy1 = {R_AX_PCIE_DMA_BUSY1, DMA_BUSY1_CHECK_V1},
|
||||
|
||||
@@ -43,6 +43,7 @@ static const struct rtw89_pci_info rtw8852c_pci_info = {
|
||||
.max_tag_num_mask = B_AX_MAX_TAG_NUM_V1_MASK,
|
||||
.rxbd_rwptr_clr_reg = R_AX_RXBD_RWPTR_CLR_V1,
|
||||
.txbd_rwptr_clr2_reg = R_AX_TXBD_RWPTR_CLR2_V1,
|
||||
.dma_io_stop = {R_AX_HAXI_INIT_CFG1, B_AX_STOP_AXI_MST},
|
||||
.dma_stop1 = {R_AX_HAXI_DMA_STOP1, B_AX_TX_STOP1_MASK},
|
||||
.dma_stop2 = {R_AX_HAXI_DMA_STOP2, B_AX_TX_STOP2_ALL},
|
||||
.dma_busy1 = {R_AX_HAXI_DMA_BUSY1, DMA_BUSY1_CHECK},
|
||||
|
||||
@@ -33,6 +33,7 @@ static const struct rtw89_pci_info rtw8922a_pci_info = {
|
||||
.max_tag_num_mask = B_BE_MAX_TAG_NUM_MASK,
|
||||
.rxbd_rwptr_clr_reg = R_BE_RXBD_RWPTR_CLR1_V1,
|
||||
.txbd_rwptr_clr2_reg = R_BE_TXBD_RWPTR_CLR1,
|
||||
.dma_io_stop = {R_BE_HAXI_INIT_CFG1, B_BE_STOP_AXI_MST},
|
||||
.dma_stop1 = {R_BE_HAXI_DMA_STOP1, B_BE_TX_STOP1_MASK},
|
||||
.dma_stop2 = {0},
|
||||
.dma_busy1 = {R_BE_HAXI_DMA_BUSY1, DMA_BUSY1_CHECK_BE},
|
||||
|
||||
Reference in New Issue
Block a user