RE: [PATCH] OMAP4: HSMMC cmd line reset change

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

 




> -----Original Message-----
> From: Tony Lindgren [mailto:tony@xxxxxxxxxxx]
> Sent: Friday, September 17, 2010 10:48 AM
> To: Madhusudhan Chikkature
> Cc: cjb@xxxxxxxxxx; linux-mmc@xxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx;
> santosh.shilimkar@xxxxxx
> Subject: Re: [PATCH] OMAP4: HSMMC cmd line reset change
> 
> * Madhusudhan Chikkature <madhu.cr@xxxxxx> [100915 16:50]:
> > OMAP4: HSMMC cmd line reset change
> >
> > The cmd line reset logic is changed in OMAP4 ES2. The new procedure
> > is to monitor a 0->1 transition and then 1->0 transition.The earlier
> > logic would fail on ES2 chips because the loop could exit even before
> > the reset is actually complete.
> >
> > Signed-off-by: Madhusudhan Chikkature <madhu.cr@xxxxxx>
> > ---
> >  drivers/mmc/host/omap_hsmmc.c |    7 +++++++
> >  1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/mmc/host/omap_hsmmc.c
> b/drivers/mmc/host/omap_hsmmc.c
> > index 4526d27..750ba7d 100644
> > --- a/drivers/mmc/host/omap_hsmmc.c
> > +++ b/drivers/mmc/host/omap_hsmmc.c
> > @@ -976,12 +976,19 @@ static inline void
> omap_hsmmc_reset_controller_fsm(struct
> > omap_hsmmc_host *host,
> >  						   unsigned long bit)
> >  {
> >  	unsigned long i = 0;
> > +	unsigned long j = 0;
> >  	unsigned long limit = (loops_per_jiffy *
> >  				msecs_to_jiffies(MMC_TIMEOUT_MS));
> >
> >  	OMAP_HSMMC_WRITE(host->base, SYSCTL,
> >  			 OMAP_HSMMC_READ(host->base, SYSCTL) | bit);
> >
> > +	if (cpu_is_omap44xx() && bit == SRC) {
> > +		while ((!(OMAP_HSMMC_READ(host->base, SYSCTL) & bit))
> > +				&& (j++ < limit))
> > +			cpu_relax();
> > +	}
> > +
> >  	while ((OMAP_HSMMC_READ(host->base, SYSCTL) & bit) &&
> >  		(i++ < limit))
> >  		cpu_relax();
> 
> Please don't use cpu_is_omapxxxx tests in the drivers, drivers
> should be generic.
> 
> Instead, just pass a feature flag in the platform_data for this
> feature like HSMMC_REVERSE_RESET_LOGIC or similar.
> 

This is not a feature. It is like an ERRATA fix. I am yet to receive an
errata number though. How about dealing with this like an errata fix similar
to the way in arch/mach-omap2/serial.c done for the uart case? 

The mmc ip revision will not help because it really does not change to
distinguish such issues.

Regards,
Madhu

> Even better, look at the mmc silicon revision number and set this
> flag automatically during the driver init if possible.
> 
> Regards,
> 
> Tony

--
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