/* * Actions to respond RME Interrupt for Crossbow ASIC: * - Write 1 to Interrupt Status register * INTX - done in bfa_intx() * MSIX - done in bfa_hwcb_rspq_ack_msix() * - Update CI (only if new CI) */ static void bfa_hwcb_rspq_ack_msix(struct bfa_s *bfa, int rspq, u32 ci) { writel(__HFN_INT_RME_Q0 << RME_Q_NUM(bfa_ioc_pcifn(&bfa->ioc), rspq), bfa->iocfc.bfa_regs.intr_status); if (bfa_rspq_ci(bfa, rspq) == ci) return; bfa_rspq_ci(bfa, rspq) = ci; writel(ci, bfa->iocfc.bfa_regs.rme_q_ci[rspq]); mmiowb(); }
static void bfa_hwcb_rspq_ack_msix(struct bfa_s *bfa, int rspq) { bfa_reg_write(bfa->iocfc.bfa_regs.intr_status, __HFN_INT_RME_Q0 << RME_Q_NUM(bfa_ioc_pcifn(&bfa->ioc), rspq)); }