From a704c27bde429c24ccb885cb63d8915e95fbec59 Mon Sep 17 00:00:00 2001 From: Chander Kashyap Date: Fri, 14 Sep 2012 09:08:49 +0000 Subject: [PATCH] --- yaml --- r: 332843 b: refs/heads/master c: e684c46876f1d0c1c4964741244a34b6be837b5f h: refs/heads/master i: 332841: 4e78eac82c1cc0ff58680be8aac310f28ab722a8 332839: 40bda3f5d23228a5a90a9cdf04f9f06c3de8149e v: v3 --- [refs] | 2 +- trunk/drivers/mmc/host/sdhci-s3c.c | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index db5104a2b6bb..03bc8c5b3c39 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 897b69e72054a39c1c1d99c8f334ffed6dc99ac4 +refs/heads/master: e684c46876f1d0c1c4964741244a34b6be837b5f diff --git a/trunk/drivers/mmc/host/sdhci-s3c.c b/trunk/drivers/mmc/host/sdhci-s3c.c index 0c77b10d2619..4d9acf833590 100644 --- a/trunk/drivers/mmc/host/sdhci-s3c.c +++ b/trunk/drivers/mmc/host/sdhci-s3c.c @@ -208,10 +208,12 @@ static void sdhci_s3c_set_clock(struct sdhci_host *host, unsigned int clock) best_src, clock, best); /* select the new clock source */ - if (ourhost->cur_clk != best_src) { struct clk *clk = ourhost->clk_bus[best_src]; + clk_enable(clk); + clk_disable(ourhost->clk_bus[ourhost->cur_clk]); + /* turn clock off to card before changing clock source */ writew(0, host->ioaddr + SDHCI_CLOCK_CONTROL); @@ -625,8 +627,6 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) */ sc->cur_clk = ptr; - clk_enable(clk); - dev_info(dev, "clock source %d: %s (%ld Hz)\n", ptr, name, clk_get_rate(clk)); } @@ -637,6 +637,8 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) goto err_no_busclks; } + clk_enable(sc->clk_bus[sc->cur_clk]); + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); host->ioaddr = devm_request_and_ioremap(&pdev->dev, res); if (!host->ioaddr) { @@ -745,9 +747,9 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev) return 0; err_req_regs: + clk_disable(sc->clk_bus[sc->cur_clk]); for (ptr = 0; ptr < MAX_BUS_CLK; ptr++) { if (sc->clk_bus[ptr]) { - clk_disable(sc->clk_bus[ptr]); clk_put(sc->clk_bus[ptr]); } } @@ -788,9 +790,9 @@ static int __devexit sdhci_s3c_remove(struct platform_device *pdev) pm_runtime_disable(&pdev->dev); + clk_disable(sc->clk_bus[sc->cur_clk]); for (ptr = 0; ptr < 3; ptr++) { if (sc->clk_bus[ptr]) { - clk_disable(sc->clk_bus[ptr]); clk_put(sc->clk_bus[ptr]); } }