sdio_claim_host(sdio_ctxt->func);
data = sdio_readb(sdio_ctxt->func, SDIO_QCN_IRQ_STATUS, &ret);
- if (ret) {
+ if (ret == -ETIMEDOUT) {
+ sdio_release_irq(sdio_ctxt->func);
sdio_release_host(sdio_ctxt->func);
pr_err("%s: IRQ status read error ret = %d\n", __func__, ret);
atomic_set(&xport_status, 0);
sdio_claim_host(sdio_ctxt->func);
qcn_enable_async_irq(false);
+ sdio_release_irq(sdio_ctxt->func);
sdio_release_host(sdio_ctxt->func);
qcn_sdio_purge_rw_buff();
}
mutex_unlock(&lock);
- sdio_claim_host(sdio_ctxt->func);
- sdio_release_irq(sdio_ctxt->func);
- sdio_release_host(sdio_ctxt->func);
-
kfree(sdio_ctxt);
sdio_ctxt = NULL;
mmc_retune_enable(current_host);