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 af217924a76e..ad30f074ee15 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) | |||
| 365 | 365 | ||
| 366 | static int __devexit sdhci_s3c_remove(struct platform_device *pdev) | 366 | static int __devexit sdhci_s3c_remove(struct platform_device *pdev) |
| 367 | { | 367 | { |
| 368 | struct sdhci_host *host = platform_get_drvdata(pdev); | ||
| 369 | struct sdhci_s3c *sc = sdhci_priv(host); | ||
| 370 | int ptr; | ||
| 371 | |||
| 372 | sdhci_remove_host(host, 1); | ||
| 373 | |||
| 374 | for (ptr = 0; ptr < 3; ptr++) { | ||
| 375 | clk_disable(sc->clk_bus[ptr]); | ||
| 376 | clk_put(sc->clk_bus[ptr]); | ||
| 377 | } | ||
| 378 | clk_disable(sc->clk_io); | ||
| 379 | clk_put(sc->clk_io); | ||
| 380 | |||
| 381 | iounmap(host->ioaddr); | ||
| 382 | release_resource(sc->ioarea); | ||
| 383 | kfree(sc->ioarea); | ||
| 384 | |||
| 385 | sdhci_free_host(host); | ||
| 386 | platform_set_drvdata(pdev, NULL); | ||
| 387 | |||
| 368 | return 0; | 388 | return 0; |
| 369 | } | 389 | } |
| 370 | 390 | ||
