mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
rtlwifi: rtl_pci: Extend recognized interrupt parameters from two to four ISR
8822be checks H2CQ by int_d, so we extend to four ISR. Also, irq_mask is extended to four. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> Cc: Yan-Hsuan Chuang <yhchuang@realtek.com> Cc: Birming Chiu <birming@realtek.com> Cc: Shaofu <shaofu@realtek.com> Cc: Steven Ting <steventing@realtek.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
68929a8380
commit
c1b586402c
@ -926,6 +926,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
|
||||
unsigned long flags;
|
||||
u32 inta = 0;
|
||||
u32 intb = 0;
|
||||
u32 intc = 0;
|
||||
u32 intd = 0;
|
||||
irqreturn_t ret = IRQ_HANDLED;
|
||||
|
||||
@ -936,7 +937,7 @@ static irqreturn_t _rtl_pci_interrupt(int irq, void *dev_id)
|
||||
rtlpriv->cfg->ops->disable_interrupt(hw);
|
||||
|
||||
/*read ISR: 4/8bytes */
|
||||
rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb);
|
||||
rtlpriv->cfg->ops->interrupt_recognized(hw, &inta, &intb, &intc, &intd);
|
||||
|
||||
/*Shared IRQ or HW disappeared */
|
||||
if (!inta || inta == 0xffff)
|
||||
|
@ -211,7 +211,7 @@ struct rtl_pci {
|
||||
|
||||
/*irq */
|
||||
u8 irq_alloc;
|
||||
u32 irq_mask[2];
|
||||
u32 irq_mask[4]; /* 0-1: normal, 2: unused, 3: h2c */
|
||||
u32 sys_irq_mask;
|
||||
|
||||
/*Bcn control register setting */
|
||||
|
@ -1472,7 +1472,8 @@ void rtl88ee_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl88ee_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -29,7 +29,8 @@
|
||||
void rtl88ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl88ee_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
void rtl88ee_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl88ee_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl88ee_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl88ee_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1375,7 +1375,8 @@ void rtl92ce_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -42,7 +42,8 @@ static inline u8 rtl92c_get_chnl_group(u8 chnl)
|
||||
void rtl92ce_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl92ce_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
void rtl92ce_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl92ce_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl92ce_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl92ce_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1356,7 +1356,8 @@ void rtl92de_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl92de_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -29,7 +29,8 @@
|
||||
void rtl92de_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl92de_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
void rtl92de_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl92de_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl92de_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl92de_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1694,7 +1694,8 @@ void rtl92ee_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl92ee_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -29,7 +29,8 @@
|
||||
void rtl92ee_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl92ee_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
void rtl92ee_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl92ee_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl92ee_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl92ee_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1559,7 +1559,7 @@ void rtl92se_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl92se_interrupt_recognized(struct ieee80211_hw *hw, u32 *p_inta,
|
||||
u32 *p_intb)
|
||||
u32 *p_intb, u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -42,7 +42,8 @@ void rtl92se_get_hw_reg(struct ieee80211_hw *hw,
|
||||
u8 variable, u8 *val);
|
||||
void rtl92se_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
void rtl92se_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *inta, u32 *intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl92se_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl92se_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl92se_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1340,7 +1340,8 @@ void rtl8723e_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl8723e_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -34,7 +34,8 @@ void rtl8723e_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl8723e_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
|
||||
void rtl8723e_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl8723e_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl8723e_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl8723e_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -1682,7 +1682,8 @@ void rtl8723be_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -30,7 +30,8 @@ void rtl8723be_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl8723be_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
|
||||
void rtl8723be_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl8723be_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl8723be_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl8723be_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -2488,7 +2488,8 @@ void rtl8821ae_card_disable(struct ieee80211_hw *hw)
|
||||
}
|
||||
|
||||
void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb)
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd)
|
||||
{
|
||||
struct rtl_priv *rtlpriv = rtl_priv(hw);
|
||||
struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw));
|
||||
|
@ -30,7 +30,8 @@ void rtl8821ae_get_hw_reg(struct ieee80211_hw *hw, u8 variable, u8 *val);
|
||||
void rtl8821ae_read_eeprom_info(struct ieee80211_hw *hw);
|
||||
|
||||
void rtl8821ae_interrupt_recognized(struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int rtl8821ae_hw_init(struct ieee80211_hw *hw);
|
||||
void rtl8821ae_card_disable(struct ieee80211_hw *hw);
|
||||
void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw);
|
||||
|
@ -2101,7 +2101,8 @@ struct rtl_hal_ops {
|
||||
void (*read_chip_version)(struct ieee80211_hw *hw);
|
||||
void (*read_eeprom_info) (struct ieee80211_hw *hw);
|
||||
void (*interrupt_recognized) (struct ieee80211_hw *hw,
|
||||
u32 *p_inta, u32 *p_intb);
|
||||
u32 *p_inta, u32 *p_intb,
|
||||
u32 *p_intc, u32 *p_intd);
|
||||
int (*hw_init) (struct ieee80211_hw *hw);
|
||||
void (*hw_disable) (struct ieee80211_hw *hw);
|
||||
void (*hw_suspend) (struct ieee80211_hw *hw);
|
||||
|
Loading…
Reference in New Issue
Block a user