mmc: sh_mmcif: mmc->f_max should be half of the bus clock
authorSimon Horman <horms@verge.net.au>
Wed, 28 Mar 2012 09:01:10 +0000 (18:01 +0900)
committerChris Ball <cjb@laptop.org>
Fri, 6 Apr 2012 00:32:24 +0000 (20:32 -0400)
mmc->f_max should be half of the bus clock.
And now that mmc->f_max is not equal to the bus clock the
latter should be used directly to calculate mmc->f_min.

Cc: Magnus Damm <magnus.damm@gmail.com>
Tested-by: Cao Minh Hiep <hiepcm@gmail.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/sh_mmcif.c

index d79c643..4bb999e 100644 (file)
@@ -1298,14 +1298,14 @@ static int __devinit sh_mmcif_probe(struct platform_device *pdev)
        spin_lock_init(&host->lock);
 
        mmc->ops = &sh_mmcif_ops;
-       mmc->f_max = host->clk;
+       mmc->f_max = host->clk / 2;
        /* close to 400KHz */
-       if (mmc->f_max < 51200000)
-               mmc->f_min = mmc->f_max / 128;
-       else if (mmc->f_max < 102400000)
-               mmc->f_min = mmc->f_max / 256;
+       if (host->clk < 51200000)
+               mmc->f_min = host->clk / 128;
+       else if (host->clk < 102400000)
+               mmc->f_min = host->clk / 256;
        else
-               mmc->f_min = mmc->f_max / 512;
+               mmc->f_min = host->clk / 512;
        if (pd->ocr)
                mmc->ocr_avail = pd->ocr;
        mmc->caps = MMC_CAP_MMC_HIGHSPEED;