On Tue, Nov 13, 2012 at 05:09:22PM +0800, Haijun Zhang wrote: > As large area erase needs long time usually a few minutes, > which the host can't wait will bring about timeout error. > So we need to split the large area to small sections which > only need short erase time to avoid timeout error. > > Signed-off-by: Haijun Zhang <Haijun.Zhang@xxxxxxxxxxxxx> > Signed-off-by: Jerry Huang <Chang-Ming.Huang@xxxxxxxxxxxxx> > CC: Anton Vorontsov <cbouatmailru@xxxxxxxxx> > --- > changes for v2: > - Recompute the timeout value and max_discard_to for mmc erase > - split the V1 patch into two V2 patchs. Oh, I see. A new version! :) > drivers/mmc/host/sdhci-esdhc.h | 1 - > drivers/mmc/host/sdhci-of-esdhc.c | 13 +++++++++++++ > 2 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-esdhc.h b/drivers/mmc/host/sdhci-esdhc.h > index d25f9ab..bb6d664 100644 > --- a/drivers/mmc/host/sdhci-esdhc.h > +++ b/drivers/mmc/host/sdhci-esdhc.h > @@ -21,7 +21,6 @@ > #define ESDHC_DEFAULT_QUIRKS (SDHCI_QUIRK_FORCE_BLK_SZ_2048 | \ > SDHCI_QUIRK_NO_BUSY_IRQ | \ > SDHCI_QUIRK_NONSTANDARD_CLOCK | \ > - SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK | \ > SDHCI_QUIRK_PIO_NEEDS_DELAY | \ > SDHCI_QUIRK_RESTORE_IRQS_AFTER_RESET) > > diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c > index 63d219f..a09ea67 100644 > --- a/drivers/mmc/host/sdhci-of-esdhc.c > +++ b/drivers/mmc/host/sdhci-of-esdhc.c > @@ -154,6 +154,18 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) > /* Set the clock */ > esdhc_set_clock(host, clock); > } > +/* An empty line is missing after the closing curly brace. Otherwise, it looks good Acked-by: Anton Vorontsov <cbouatmailru@xxxxxxxxx> > + * As host dosn't supply us the method to calculate the timeout value, > + * we assigned one for high speed SDHC card. So we can use this to calculate > + * the max discard timeout value to limit the max discard sectors to avoid the > + * timeout issue during large area erase. > + */ > +static unsigned int esdhc_of_get_timeout_clock(struct sdhci_host *host) > +{ > + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); > + > + return pltfm_host->clock / 1000 / 32; > +} > > #ifdef CONFIG_PM > static u32 esdhc_proctl; > @@ -190,6 +202,7 @@ static struct sdhci_ops sdhci_esdhc_ops = { > .enable_dma = esdhc_of_enable_dma, > .get_max_clock = esdhc_of_get_max_clock, > .get_min_clock = esdhc_of_get_min_clock, > + .get_timeout_clock = esdhc_of_get_timeout_clock, > .platform_init = esdhc_of_platform_init, > #ifdef CONFIG_PM > .platform_suspend = esdhc_of_suspend, > -- > 1.7.0.4 -- 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