···907907 card = sdio_get_drvdata(func);908908909909 cause = sdio_readb(card->func, IF_SDIO_H_INT_STATUS, &ret);910910- if (ret)910910+ if (ret || !cause)911911 goto out;912912913913 lbs_deb_sdio("interrupt: 0x%X\n", (unsigned)cause);···10081008 if (ret)10091009 goto release;1010101010111011- ret = sdio_claim_irq(func, if_sdio_interrupt);10121012- if (ret)10131013- goto disable;10141014-10151011 /* For 1-bit transfers to the 8686 model, we need to enable the10161012 * interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN010171013 * bit to allow access to non-vendor registers. */···10771081 card->rx_unit = if_sdio_read_rx_unit(card);10781082 else10791083 card->rx_unit = 0;10841084+10851085+ /*10861086+ * Set up the interrupt handler late.10871087+ *10881088+ * If we set it up earlier, the (buggy) hardware generates a spurious10891089+ * interrupt, even before the interrupt has been enabled, with10901090+ * CCCR_INTx = 0.10911091+ *10921092+ * We register the interrupt handler late so that we can handle any10931093+ * spurious interrupts, and also to avoid generation of that known10941094+ * spurious interrupt in the first place.10951095+ */10961096+ ret = sdio_claim_irq(func, if_sdio_interrupt);10971097+ if (ret)10981098+ goto disable;1080109910811100 /*10821101 * Enable interrupts now that everything is set up