RE: [PATCH] mmc: sdhci: clear interrupt when retune interrupt received

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

 



> -----Original Message-----
> From: Adrian Hunter [mailto:adrian.hunter@xxxxxxxxx]
> Sent: Monday, June 12, 2017 8:34 PM
> To: Troy Kisky; A.S. Dong
> Cc: ulf.hansson@xxxxxxxxxx; linux-mmc@xxxxxxxxxxxxxxx; Fabio Estevam;
> gary.bisson@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH] mmc: sdhci: clear interrupt when retune interrupt
> received
> 
> On 09/06/17 18:45, Troy Kisky wrote:
> > On 6/9/2017 5:46 AM, Adrian Hunter wrote:
> >> On 08/06/17 21:51, Troy Kisky wrote:
> >>> This lets the loop exit before max_loops reaches 0.
> >>
> >> Needs more explanation.
> >>
> >>>
> >>> Fixes: f37b20ebc4bc ("mmc: sdhci: add standard hw auto retuning
> >>> support")
> >>>
> >>> Signed-off-by: Troy Kisky <troy.kisky@xxxxxxxxxxxxxxxxxxx>
> >>> ---
> >>>  drivers/mmc/host/sdhci.c | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> >>> index ecd0d43..e104194 100644
> >>> --- a/drivers/mmc/host/sdhci.c
> >>> +++ b/drivers/mmc/host/sdhci.c
> >>> @@ -2687,7 +2687,7 @@ static irqreturn_t sdhci_irq(int irq, void
> >>> *dev_id)
> >>>
> >>>  		/* Clear selected interrupts. */
> >>>  		mask = intmask & (SDHCI_INT_CMD_MASK | SDHCI_INT_DATA_MASK |
> >>> -				  SDHCI_INT_BUS_POWER);
> >>> +				  SDHCI_INT_BUS_POWER | SDHCI_INT_RETUNE);
> >>
> >> SDHCI_INT_RETUNE is defined to be read-only so why write to it.
> >
> >
> > SDHCI_INT_RETUNE is bit 12
> > host/sdhci.h:#define  SDHCI_INT_RETUNE  0x00001000
> >
> > Which at least from i.mx6/i.mx7 reference manuals, is a write 1 to clear
> bit(marked as w1c).
> 
> So it doesn't work the way it is specified in the SDHCI spec.
> 
> It should be harmless to write 1, but you still need to explain how the
> bit works on your hardware.  What does "This lets the loop exit before
> max_loops reaches 0" mean?
> 

Can't remember too much history.
Simply from code inspection, it seems without clear SDHCI_INT_RETUNE,
it will loop max_loops.

Not sure about ""This lets the loop exit before max_loops reaches 0" mean?"

Troy,
Would you help explain it?

Regards
Dong Aisheng

> >
> >
> >
> >>
> >>>  		sdhci_writel(host, mask, SDHCI_INT_STATUS);
> >>>
> >>>  		if (intmask & (SDHCI_INT_CARD_INSERT | SDHCI_INT_CARD_REMOVE))
> {
> >>>
> >>
> >>
> >
> >

��.n��������+%������w��{.n�����{��i��)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




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

  Powered by Linux