Re: [PATCH v5] OMAP: Fix for bus width which improves SD card's peformance.

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

 



Tony,

Could this patch be taken ?

Thanks,
kishore

On Tue, Jun 15, 2010 at 1:37 PM, kishore kadiyala
<kishorek.kadiyala@xxxxxxxxx> wrote:
> From: Kishore Kadiyala <kishore.kadiyala@xxxxxx>
>
> 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
>        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-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux