summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath10k/ce.c
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2013-11-25 13:06:24 (GMT)
committerKalle Valo <kvalo@qca.qualcomm.com>2013-11-27 14:45:32 (GMT)
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 476928f..d44d618 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;