|
@@ -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;
|
|
|
}
|
|
|
|