RE: [PATCH] mmc/sdio: add a quirk for broken SDIO_CCCR_INTx polling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux