]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
rtlwifi: rtl_pci: Extend recognized interrupt parameters from two to four ISR
authorPing-Ke Shih <pkshih@realtek.com>
Wed, 1 Nov 2017 15:29:22 +0000 (10:29 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 8 Nov 2017 12:30:18 +0000 (14:30 +0200)
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>
19 files changed:
drivers/net/wireless/realtek/rtlwifi/pci.c
drivers/net/wireless/realtek/rtlwifi/pci.h
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8188ee/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192ce/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192de/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192de/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192ee/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8192se/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8192se/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8723ae/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.h
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.c
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/hw.h
drivers/net/wireless/realtek/rtlwifi/wifi.h

index 874e1e593da92e03f7de52d067cb5085480ab179..c2575b0b94407fa644c1699456b67fb47caa11dd 100644 (file)
@@ -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)
index ce33fe7bc7c4fb4372f06f36c9017dac1fe330d0..e7d070e8da2d33f628b6776417b38e201e6e4c8d 100644 (file)
@@ -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 */
index 2c671364c521aae5a1f92344d1a9c9be63ac5a6f..e30a18e64ff5c91e65ddd03c1d98fb7feb09a3a3 100644 (file)
@@ -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));
index ab8488da9409782bb37fe90758815d83c4b80963..cdf49de1e6ed8b9b2e38905fdd0b38c021e82f0d 100644 (file)
@@ -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);
index 9310fad69cd9ae4f53b5d1fd126bbbdc95608881..0f4c86a287161537180250fd2dde86a7b5f9c2da 100644 (file)
@@ -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));
index 7683c5dfe8515d8a698c162fe8e8966fcbc77dfa..b5c8e2fc1ba26aeff73b9b489e0484783e027b44 100644 (file)
@@ -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);
index 5a67f85fa16537e9a0ce188fba966c217164ebfc..0da6c013685756fc56de63dfa6fe46f4ae10684b 100644 (file)
@@ -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));
index 85c565b86ae38c061f96279ad4213f354a3d9bb9..9236aa91273d9f13a883fbc121518fbd0fcce672 100644 (file)
@@ -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);
index 6fc3090c4b7208ac94c59aba0d043a7446f32881..fe5da637e77afc7c09720e4e73193a19cad2e70f 100644 (file)
@@ -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));
index cd6aeb44b9961218a374409df12ce2314a32f7ed..cd6d3322f0330d7a4286a05ce1ff082eee633b67 100644 (file)
@@ -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);
index 66be79ca424724ef93485c06647db2787765ca11..76bf089cced4828353bf6f56189af393b0afac0f 100644 (file)
@@ -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));
index 3c93d30fcae7b1dee2f0448689c65964eab39947..607056010974bf476b8bbbf5f11e527391004510 100644 (file)
@@ -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);
index 8cfd4993c90a26a2367754f7bed6f45db83b83bc..c3f98d58124cd66860dd16babbc7d24bd9b2d257 100644 (file)
@@ -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));
index 1e7063105c96cd65d35787a5c31dce9b1f629269..19e467a37c72408e1dc4b7c632dd8f6284653e15 100644 (file)
@@ -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);
index 239518bd31f15c3df797d118541030108b008f29..7cd1ffa7d4a7f16cefd543b883cde43187630489 100644 (file)
@@ -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));
index 54d7afa7297e9d36ec2f2c8a916dadda79d5e3ec..2215a792f6bf0ee5a797c9ce00dbeae35b993220 100644 (file)
@@ -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);
index 60c82a5b51cd5a1b31558c781c63a7f89fcffce8..aa69d10348c27a32cb608b30fdabb90087d8597d 100644 (file)
@@ -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));
index 50fa9c718189b081a1efe49d82dc566e290008b8..284d259fe55791db0e202c09f45150facf851598 100644 (file)
@@ -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);
index f6b00505a69f02f89ae1201a16cac07f9bce381d..49f6918ae18b4728443e0de513ff10ddfba78f42 100644 (file)
@@ -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);