Re: Question: kick SDIO irq when resume

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

 



On Mon, 31 Oct 2011, Jun Nie wrote:

> 2011/10/31 Nicolas Pitre <nicolas.pitre@xxxxxxxxxx>:
> > On Mon, 31 Oct 2011, Jun Nie wrote:
> >
> >> Hi Nico,
> >>     We are debugging fake SDIO irq when 8787 SDIO card resume and
> >> found below patch. The issue is that 8787 driver can not handle card
> >> irq if neither 8787 nor host trigger resume event in some cases. Do
> >> you remember what SDIO card need below patch? What's your idea on this
> >> issue? How about add a SDIO function flag to decide the irq thread
> >> kick off in resume?
> >
> > This is needed because in some cases the card interrupt is already
> > consumed for the wake-up event.  Kicking this thread shouldn't cause any
> > issue though, as the card is just polled for the actual presence of an
> > IRQ ...
> >
> > ... or maybe not.  In this case commit 06e8935feb "optimized SDIO IRQ
> > handling for single irq" may certainly cause problems.
> >
> > The fix here would be to clear card->sdio_single_irq before calling
> > mmc_signal_sdio_irq() in mmc_sdio_resume() and restore its original
> > value eventually, or better yet ignore that flag when the IRQ thread is
> > ran for the first time after a resume.
> 8787 case(bug) is similar with sdio_signel_irq case, but not same.
> 8787 can not response to reading sdio card interrupt status correctly
> if 8787 is still in suspend mode. The read operation will get value of
> previous CMD52 read, no matter previous CMD52 is for what purpose. So
> host should avoid read from 8787 before call sdio function resume in
> normal resume process. Otherwise, 8787 may lead lead host to handle
> fake interrupt and result further error.
> >
> > In any case you may disable that optimization in the IRQ demux handler
> > to see if this fixes your problem.
> So the fix to 8787 is either adding a flag, such as NO_LOST_WAKEUP_IRQ
> for func/card, or moving kick off to after sdio function resume. I do
> not know which one you prefer.

Moving the kick-off after the resume will be a good thing, and it should 
also be conditional on the presence of CCCR_INTx being non zero.



Nicolas

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

  Powered by Linux