Sorry its Line wrapped and please drop this, Will be reposting the same. Regards, Kishore On Mon, Jun 14, 2010 at 9:40 PM, kishore kadiyala <kishorek.kadiyala@xxxxxxxxx> wrote: > This patch improves low speeds for SD cards. > OMAP-MMC controller's can support maximum bus width of '8'. > when bus width is mentioned as "8" in controller data,the SD > stack will check whether bus width is "4" and if not it will > set bus width to "1" and there by degrading performance. > This patch fixes the issue and improves the performance of > SD cards. > > Signed-off-by: Kishore Kadiyala <kishore.kadiyala@xxxxxx> > Signed-off-by: Venkatraman S <svenkatr@xxxxxx> > Signed-off-by: Nishanth Menon <nm@xxxxxx> > Acked-by: Madhusudhan Chikkature <madhu.cr@xxxxxx> > Tested-by: Jarkko Nikula <jhnikula@xxxxxxxxx> > --- > In V5 : Rebasing on 2.6.35-rc3 > In V4 : Updated with Nishanth's comments and appened his Signed-off > http://marc.info/?t=127169149300006&r=1&w=2 > In V3 : Updated with Madhu's comments and appended Tested by Nikula > In V2 : Appended Signed-off by Venkat and Ack by Madhu > > Here are my experiment numbers, on a Class 6 SDHC card: > Read peformance is increased by 220% > Write Performance is increased by 52% > > drivers/mmc/host/omap_hsmmc.c | 17 +++++++++++++++-- > 1 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c > index b032828..a0c8515 100644 > --- a/drivers/mmc/host/omap_hsmmc.c > +++ b/drivers/mmc/host/omap_hsmmc.c > @@ -2096,10 +2096,23 @@ static int __init omap_hsmmc_probe(struct > platform_device *pdev) > mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | > MMC_CAP_WAIT_WHILE_BUSY; > > - if (mmc_slot(host).wires >= 8) > + switch (mmc_slot(host).wires) { > + case 8: > mmc->caps |= MMC_CAP_8_BIT_DATA; > - else if (mmc_slot(host).wires >= 4) > + /* Fall through */ > + case 4: > mmc->caps |= MMC_CAP_4_BIT_DATA; > + break; > + case 1: > + /* Nothing to crib here */ > + case 0: > + /* Assuming nothing was given by board, Core use's 1-Bit */ > + break; > + default: > + /* Completely unexpected.. Core goes with 1-Bit Width */ > + dev_crit(mmc_dev(host->mmc), "Invalid width %d\n used!" > + "using 1 instead\n", mmc_slot(host).wires); > + } > > if (mmc_slot(host).nonremovable) > mmc->caps |= MMC_CAP_NONREMOVABLE; > -- > 1.6.3.3 > -- 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