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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html