diff options
Diffstat (limited to 'drivers/mmc')
| -rw-r--r-- | drivers/mmc/host/sdhci-s3c.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c index af217924a76..ad30f074ee1 100644 --- a/drivers/mmc/host/sdhci-s3c.c +++ b/drivers/mmc/host/sdhci-s3c.c @@ -365,6 +365,26 @@ static int __devinit sdhci_s3c_probe(struct platform_device *pdev)  static int __devexit sdhci_s3c_remove(struct platform_device *pdev)  { +	struct sdhci_host *host =  platform_get_drvdata(pdev); +	struct sdhci_s3c *sc = sdhci_priv(host); +	int ptr; + +	sdhci_remove_host(host, 1); + +	for (ptr = 0; ptr < 3; ptr++) { +		clk_disable(sc->clk_bus[ptr]); +		clk_put(sc->clk_bus[ptr]); +	} +	clk_disable(sc->clk_io); +	clk_put(sc->clk_io); + +	iounmap(host->ioaddr); +	release_resource(sc->ioarea); +	kfree(sc->ioarea); + +	sdhci_free_host(host); +	platform_set_drvdata(pdev, NULL); +  	return 0;  }  |