diff options
Diffstat (limited to 'drivers/mmc/host/mshci-s3c.c')
-rw-r--r-- | drivers/mmc/host/mshci-s3c.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/mmc/host/mshci-s3c.c b/drivers/mmc/host/mshci-s3c.c index 5023d10..58670ca 100644 --- a/drivers/mmc/host/mshci-s3c.c +++ b/drivers/mmc/host/mshci-s3c.c @@ -408,13 +408,14 @@ static int __devinit mshci_s3c_probe(struct platform_device *pdev) if (parent_clk) { #ifdef CONFIG_EXYNOS4_MSHC_EPLL_45MHZ if (!strcmp("fout_epll", \ - parent_clk->name)) { - clk_set_rate \ + parent_clk->name) && + soc_is_exynos4210()) { + clk_set_rate \ (parent_clk, 180633600); pdata->cfg_ddr(pdev, 0); #elif defined(CONFIG_EXYNOS4_MSHC_VPLL_46MHZ) if (!strcmp("fout_vpll", \ - parent_clk->name)) { + parent_clk->name)) { clk_set_rate \ (parent_clk, 370882812); pdata->cfg_ddr(pdev, 0); @@ -460,7 +461,7 @@ static int __devinit mshci_s3c_probe(struct platform_device *pdev) if (!host->ioaddr) { dev_err(dev, "failed to map registers\n"); ret = -ENXIO; - goto err_req_regs; + goto err_add_host; } /* Ensure we have minimal gpio selected CMD/CLK/Detect */ @@ -541,8 +542,9 @@ static int __devinit mshci_s3c_probe(struct platform_device *pdev) return 0; err_add_host: - release_resource(sc->ioarea); - kfree(sc->ioarea); + if (host->ioaddr) + iounmap(host->ioaddr); + release_mem_region(sc->ioarea->start, resource_size(sc->ioarea)); err_req_regs: for (ptr = 0; ptr < MAX_BUS_CLK; ptr++) { @@ -629,7 +631,11 @@ static void __exit mshci_s3c_exit(void) platform_driver_unregister(&mshci_s3c_driver); } +#ifdef CONFIG_FAST_RESUME +beforeresume_initcall(mshci_s3c_init); +#else module_init(mshci_s3c_init); +#endif module_exit(mshci_s3c_exit); MODULE_DESCRIPTION("Samsung MSHCI (HSMMC) glue"); |