On Tue, Sep 08, 2009 at 04:02:35PM +0900, thomas.ab@xxxxxxxxxxx wrote: > From: Thomas Abraham <thomas.ab@xxxxxxxxxxx> > > This patch populates the sdhci_s3c_remove function in the > s3c sdhci driver. This will allow s3c sdhci driver to be > used as a module. > > Signed-off-by: Thomas Abraham <thomas.ab@xxxxxxxxxxx> > --- > drivers/mmc/host/sdhci-s3c.c | 26 ++++++++++++++++++++++++++ > 1 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/drivers/mmc/host/sdhci-s3c.c b/drivers/mmc/host/sdhci-s3c.c > index 7f5b64e..80e8c38 100644 > --- a/drivers/mmc/host/sdhci-s3c.c > +++ b/drivers/mmc/host/sdhci-s3c.c > @@ -380,9 +380,35 @@ 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, dead = 0; > + u32 scratch; > + > + scratch = readl(host->ioaddr + SDHCI_INT_STATUS); > + if (scratch == (u32)-1) > + dead = 1; > + > + sdhci_remove_host(host, dead); > + > + for (ptr = 0; ptr < 3; ptr++) { ptr < ARRRAY_SIZE(sc->clk_bus) you probably also need to check for the validity of the clock and skip it if it is not in used. > + 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; > } > > + > #ifdef CONFIG_PM > > static int sdhci_s3c_suspend(struct platform_device *dev, pm_message_t pm) > -- > 1.5.3.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- -- Ben Q: What's a light-year? A: One-third less calories than a regular year. -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html