Hi Ulf, Thanks for your comments. > > @@ -89,3 +99,14 @@ void mmc_fixup_device(struct mmc_card *card, const struct mmc_fixup *table) > > } > > } > > EXPORT_SYMBOL(mmc_fixup_device); > > + > > +void mmc_fixup_broken_irq_polling(struct mmc_card *card) > > +{ > > + unsigned char dummy; > > + > > + /* A fake interrupt could be created when we poll SDIO_CCCR_INTx > > + * register with a Marvell SD8797 card. A dummy CMD52 read to > > + * function 0 register 0xff can aviod this. > > + */ > > + mmc_io_rw_direct(card, 0, 0, 0xff, 0, &dummy); > > +} > > I would suggest you follow how the other quirks has been implemented, > thus I don't think you need a separate function just for invoking an > extra mmc_io_rw_direct, do directly in sdio_irq.c instead. Will make this change in v2. > > @@ -47,6 +47,11 @@ static int process_sdio_pending_irqs(struct mmc_host *host) > > } > > > > ret = mmc_io_rw_direct(card, 0, 0, SDIO_CCCR_INTx, 0, &pending); > > + > > + if (pending && (card->quirks & MMC_QUIRK_BROKEN_IRQ_POLLING) && > > Suggest you add an mmc_card_broken_irq_poll(), in card.h. Like the > other quirks are handled. Sure. > > > + !(host->caps & MMC_CAP_SDIO_IRQ)) > > + mmc_fixup_broken_irq_polling(card); > > + > > if (ret) { > > pr_debug("%s: error %d reading SDIO_CCCR_INTx\n", > > mmc_card_id(card), ret); > > return ret; > > } I will also move the quirk handling down here (after the 'ret' validation). Thanks, Bing -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html