mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 12:03:54 +02:00
wifi: rtw89: pci: move chip ISR definition out from chip generation
The existing WiFi 6 chips can share the same ISR (interrupt status registers), but the coming WiFi 7 chip 8922DE can't share the same definition with existing WiFi 7 chip, so move the definition to an individual struct. Don't change logic at all. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20250826085152.28164-2-pkshih@realtek.com
This commit is contained in:
parent
f46edd9204
commit
5cc73513f9
|
|
@ -885,7 +885,7 @@ static irqreturn_t rtw89_pci_interrupt_threadfn(int irq, void *dev)
|
|||
struct rtw89_dev *rtwdev = dev;
|
||||
struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv;
|
||||
const struct rtw89_pci_info *info = rtwdev->pci_info;
|
||||
const struct rtw89_pci_gen_def *gen_def = info->gen_def;
|
||||
const struct rtw89_pci_isr_def *isr_def = info->isr_def;
|
||||
struct rtw89_pci_isrs isrs;
|
||||
unsigned long flags;
|
||||
|
||||
|
|
@ -893,13 +893,13 @@ static irqreturn_t rtw89_pci_interrupt_threadfn(int irq, void *dev)
|
|||
rtw89_chip_recognize_intrs(rtwdev, rtwpci, &isrs);
|
||||
spin_unlock_irqrestore(&rtwpci->irq_lock, flags);
|
||||
|
||||
if (unlikely(isrs.isrs[0] & gen_def->isr_rdu))
|
||||
if (unlikely(isrs.isrs[0] & isr_def->isr_rdu))
|
||||
rtw89_pci_isr_rxd_unavail(rtwdev, rtwpci);
|
||||
|
||||
if (unlikely(isrs.halt_c2h_isrs & gen_def->isr_halt_c2h))
|
||||
if (unlikely(isrs.halt_c2h_isrs & isr_def->isr_halt_c2h))
|
||||
rtw89_ser_notify(rtwdev, rtw89_mac_get_err_status(rtwdev));
|
||||
|
||||
if (unlikely(isrs.halt_c2h_isrs & gen_def->isr_wdt_timeout))
|
||||
if (unlikely(isrs.halt_c2h_isrs & isr_def->isr_wdt_timeout))
|
||||
rtw89_ser_notify(rtwdev, MAC_AX_ERR_L2_ERR_WDT_TIMEOUT_INT);
|
||||
|
||||
if (unlikely(rtwpci->under_recovery))
|
||||
|
|
@ -4228,18 +4228,18 @@ static int rtw89_pci_napi_poll(struct napi_struct *napi, int budget)
|
|||
struct rtw89_dev *rtwdev = container_of(napi, struct rtw89_dev, napi);
|
||||
struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv;
|
||||
const struct rtw89_pci_info *info = rtwdev->pci_info;
|
||||
const struct rtw89_pci_gen_def *gen_def = info->gen_def;
|
||||
const struct rtw89_pci_isr_def *isr_def = info->isr_def;
|
||||
unsigned long flags;
|
||||
int work_done;
|
||||
|
||||
rtwdev->napi_budget_countdown = budget;
|
||||
|
||||
rtw89_write32(rtwdev, gen_def->isr_clear_rpq.addr, gen_def->isr_clear_rpq.data);
|
||||
rtw89_write32(rtwdev, isr_def->isr_clear_rpq.addr, isr_def->isr_clear_rpq.data);
|
||||
work_done = rtw89_pci_poll_rpq_dma(rtwdev, rtwpci, rtwdev->napi_budget_countdown);
|
||||
if (work_done == budget)
|
||||
return budget;
|
||||
|
||||
rtw89_write32(rtwdev, gen_def->isr_clear_rxq.addr, gen_def->isr_clear_rxq.data);
|
||||
rtw89_write32(rtwdev, isr_def->isr_clear_rxq.addr, isr_def->isr_clear_rxq.data);
|
||||
work_done += rtw89_pci_poll_rxq_dma(rtwdev, rtwpci, rtwdev->napi_budget_countdown);
|
||||
if (work_done < budget && napi_complete_done(napi, work_done)) {
|
||||
spin_lock_irqsave(&rtwpci->irq_lock, flags);
|
||||
|
|
@ -4394,14 +4394,17 @@ const struct pci_error_handlers rtw89_pci_err_handler = {
|
|||
};
|
||||
EXPORT_SYMBOL(rtw89_pci_err_handler);
|
||||
|
||||
const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
|
||||
const struct rtw89_pci_isr_def rtw89_pci_isr_ax = {
|
||||
.isr_rdu = B_AX_RDU_INT,
|
||||
.isr_halt_c2h = B_AX_HALT_C2H_INT_EN,
|
||||
.isr_wdt_timeout = B_AX_WDT_TIMEOUT_INT_EN,
|
||||
.isr_clear_rpq = {R_AX_PCIE_HISR00, B_AX_RPQDMA_INT | B_AX_RPQBD_FULL_INT},
|
||||
.isr_clear_rxq = {R_AX_PCIE_HISR00, B_AX_RXP1DMA_INT | B_AX_RXDMA_INT |
|
||||
B_AX_RDU_INT},
|
||||
};
|
||||
EXPORT_SYMBOL(rtw89_pci_isr_ax);
|
||||
|
||||
const struct rtw89_pci_gen_def rtw89_pci_gen_ax = {
|
||||
.mac_pre_init = rtw89_pci_ops_mac_pre_init_ax,
|
||||
.mac_pre_deinit = rtw89_pci_ops_mac_pre_deinit_ax,
|
||||
.mac_post_init = rtw89_pci_ops_mac_post_init_ax,
|
||||
|
|
|
|||
|
|
@ -1267,13 +1267,15 @@ struct rtw89_pci_bd_ram {
|
|||
u8 min_num;
|
||||
};
|
||||
|
||||
struct rtw89_pci_gen_def {
|
||||
struct rtw89_pci_isr_def {
|
||||
u32 isr_rdu;
|
||||
u32 isr_halt_c2h;
|
||||
u32 isr_wdt_timeout;
|
||||
struct rtw89_reg2_def isr_clear_rpq;
|
||||
struct rtw89_reg2_def isr_clear_rxq;
|
||||
};
|
||||
|
||||
struct rtw89_pci_gen_def {
|
||||
int (*mac_pre_init)(struct rtw89_dev *rtwdev);
|
||||
int (*mac_pre_deinit)(struct rtw89_dev *rtwdev);
|
||||
int (*mac_post_init)(struct rtw89_dev *rtwdev);
|
||||
|
|
@ -1311,6 +1313,7 @@ struct rtw89_pci_ssid_quirk {
|
|||
|
||||
struct rtw89_pci_info {
|
||||
const struct rtw89_pci_gen_def *gen_def;
|
||||
const struct rtw89_pci_isr_def *isr_def;
|
||||
enum mac_ax_bd_trunc_mode txbd_trunc_mode;
|
||||
enum mac_ax_bd_trunc_mode rxbd_trunc_mode;
|
||||
enum mac_ax_rxbd_mode rxbd_mode;
|
||||
|
|
@ -1628,6 +1631,8 @@ extern const struct rtw89_pci_ch_dma_addr_set rtw89_pci_ch_dma_addr_set_v1;
|
|||
extern const struct rtw89_pci_ch_dma_addr_set rtw89_pci_ch_dma_addr_set_be;
|
||||
extern const struct rtw89_pci_bd_ram rtw89_bd_ram_table_dual[RTW89_TXCH_NUM];
|
||||
extern const struct rtw89_pci_bd_ram rtw89_bd_ram_table_single[RTW89_TXCH_NUM];
|
||||
extern const struct rtw89_pci_isr_def rtw89_pci_isr_ax;
|
||||
extern const struct rtw89_pci_isr_def rtw89_pci_isr_be;
|
||||
extern const struct rtw89_pci_gen_def rtw89_pci_gen_ax;
|
||||
extern const struct rtw89_pci_gen_def rtw89_pci_gen_be;
|
||||
|
||||
|
|
|
|||
|
|
@ -665,13 +665,16 @@ static int __maybe_unused rtw89_pci_resume_be(struct device *dev)
|
|||
SIMPLE_DEV_PM_OPS(rtw89_pm_ops_be, rtw89_pci_suspend_be, rtw89_pci_resume_be);
|
||||
EXPORT_SYMBOL(rtw89_pm_ops_be);
|
||||
|
||||
const struct rtw89_pci_gen_def rtw89_pci_gen_be = {
|
||||
const struct rtw89_pci_isr_def rtw89_pci_isr_be = {
|
||||
.isr_rdu = B_BE_RDU_CH1_INT_V1 | B_BE_RDU_CH0_INT_V1,
|
||||
.isr_halt_c2h = B_BE_HALT_C2H_INT,
|
||||
.isr_wdt_timeout = B_BE_WDT_TIMEOUT_INT,
|
||||
.isr_clear_rpq = {R_BE_PCIE_DMA_ISR, B_BE_PCIE_RX_RPQ0_ISR_V1},
|
||||
.isr_clear_rxq = {R_BE_PCIE_DMA_ISR, B_BE_PCIE_RX_RX0P2_ISR_V1},
|
||||
};
|
||||
EXPORT_SYMBOL(rtw89_pci_isr_be);
|
||||
|
||||
const struct rtw89_pci_gen_def rtw89_pci_gen_be = {
|
||||
.mac_pre_init = rtw89_pci_ops_mac_pre_init_be,
|
||||
.mac_pre_deinit = rtw89_pci_ops_mac_pre_deinit_be,
|
||||
.mac_post_init = rtw89_pci_ops_mac_post_init_be,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
static const struct rtw89_pci_info rtw8851b_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_ax,
|
||||
.isr_def = &rtw89_pci_isr_ax,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
static const struct rtw89_pci_info rtw8852a_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_ax,
|
||||
.isr_def = &rtw89_pci_isr_ax,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
static const struct rtw89_pci_info rtw8852b_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_ax,
|
||||
.isr_def = &rtw89_pci_isr_ax,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ static const struct rtw89_pci_ssid_quirk rtw8852bt_pci_ssid_quirks[] = {
|
|||
|
||||
static const struct rtw89_pci_info rtw8852bt_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_ax,
|
||||
.isr_def = &rtw89_pci_isr_ax,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ static const struct rtw89_pci_bd_idx_addr rtw8852c_bd_idx_addr_low_power = {
|
|||
|
||||
static const struct rtw89_pci_info rtw8852c_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_ax,
|
||||
.isr_def = &rtw89_pci_isr_ax,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ static const struct rtw89_pci_ssid_quirk rtw8922a_pci_ssid_quirks[] = {
|
|||
|
||||
static const struct rtw89_pci_info rtw8922a_pci_info = {
|
||||
.gen_def = &rtw89_pci_gen_be,
|
||||
.isr_def = &rtw89_pci_isr_be,
|
||||
.txbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_trunc_mode = MAC_AX_BD_TRUNC,
|
||||
.rxbd_mode = MAC_AX_RXBD_PKT,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user