summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath10k/ce.c
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2013-11-25 17:06:24 +0400
committerKalle Valo <kvalo@qca.qualcomm.com>2013-11-27 18:45:32 +0400
commit5d1aa94680f1bf581a4cea2c7137a1423f676795 (patch)
treee888d38d5ee385a8ea135fe3a795d41f5b574229 /drivers/net/wireless/ath/ath10k/ce.c
parentc80de12b3e9bde0736f66feed8dd7b6fdc739d16 (diff)
downloadlinux-5d1aa94680f1bf581a4cea2c7137a1423f676795.tar.xz
ath10k: defer irq registration until hif start()
It's impossible to rely on disable_irq() and/or CE interrupt masking with legacy shared interrupts. Other devices sharing the same irq line may assert it while ath10k is doing something that requires no interrupts. Irq handlers are now registered after all preparations are complete so spurious/foreign interrupts won't do any harm. The handlers are unregistered when no interrupts are required (i.e. during driver teardown). This also removes the ability to receive FW early indication (since interrupts are not registered until early boot is complete). This is not mission critical (it's more of a hint that early boot failed due to unexpected FW crash) and will be re-added in a follow up patch. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/ce.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/ce.c15
1 files changed, 0 insertions, 15 deletions
diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index 476928f2dadc..d44d618b05f9 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -792,21 +792,6 @@ static void ath10k_ce_per_engine_handler_adjust(struct ath10k_ce_pipe *ce_state,
ath10k_pci_sleep(ar);
}
-int ath10k_ce_enable_err_irq(struct ath10k *ar)
-{
- int i, ret;
-
- ret = ath10k_pci_wake(ar);
- if (ret)
- return ret;
-
- for (i = 0; i < CE_COUNT; i++)
- ath10k_ce_error_intr_enable(ar, ath10k_ce_base_address(i));
-
- ath10k_pci_sleep(ar);
- return 0;
-}
-
int ath10k_ce_disable_interrupts(struct ath10k *ar)
{
int ce_id, ret;