Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 105081
b: refs/heads/master
c: dd8572a
h: refs/heads/master
i:
  105079: 4723edf
v: v3
  • Loading branch information
Manuel Lauss authored and Pierre Ossman committed Jul 23, 2008
1 parent bf6b77e commit a2f58c9
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d2f2761bb75ee365077b52c7e73a6e5164d3efa0
refs/heads/master: dd8572af68229a65b6716b286395ad7f5e2ecc48
54 changes: 42 additions & 12 deletions trunk/drivers/mmc/host/au1xmmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1043,7 +1043,7 @@ static int __devinit au1xmmc_probe(struct platform_device *pdev)
goto out6;
}

platform_set_drvdata(pdev, mmc);
platform_set_drvdata(pdev, host);

printk(KERN_INFO DRIVER_NAME ": MMC Controller %d set up at %8.8X"
" (mode=%s)\n", pdev->id, host->iobase,
Expand Down Expand Up @@ -1087,22 +1087,19 @@ static int __devinit au1xmmc_probe(struct platform_device *pdev)

static int __devexit au1xmmc_remove(struct platform_device *pdev)
{
struct mmc_host *mmc = platform_get_drvdata(pdev);
struct au1xmmc_host *host;

if (mmc) {
host = mmc_priv(mmc);
struct au1xmmc_host *host = platform_get_drvdata(pdev);

mmc_remove_host(mmc);
if (host) {
mmc_remove_host(host->mmc);

#ifdef CONFIG_LEDS_CLASS
if (host->platdata && host->platdata->led)
led_classdev_unregister(host->platdata->led);
#endif

if (host->platdata && host->platdata->cd_setup &&
!(mmc->caps & MMC_CAP_NEEDS_POLL))
host->platdata->cd_setup(mmc, 0);
!(host->mmc->caps & MMC_CAP_NEEDS_POLL))
host->platdata->cd_setup(host->mmc, 0);

au_writel(0, HOST_ENABLE(host));
au_writel(0, HOST_CONFIG(host));
Expand All @@ -1122,16 +1119,49 @@ static int __devexit au1xmmc_remove(struct platform_device *pdev)
release_resource(host->ioarea);
kfree(host->ioarea);

mmc_free_host(mmc);
mmc_free_host(host->mmc);
platform_set_drvdata(pdev, NULL);
}
return 0;
}

#ifdef CONFIG_PM
static int au1xmmc_suspend(struct platform_device *pdev, pm_message_t state)
{
struct au1xmmc_host *host = platform_get_drvdata(pdev);
int ret;

ret = mmc_suspend_host(host->mmc, state);
if (ret)
return ret;

au_writel(0, HOST_CONFIG2(host));
au_writel(0, HOST_CONFIG(host));
au_writel(0xffffffff, HOST_STATUS(host));
au_writel(0, HOST_ENABLE(host));
au_sync();

return 0;
}

static int au1xmmc_resume(struct platform_device *pdev)
{
struct au1xmmc_host *host = platform_get_drvdata(pdev);

au1xmmc_reset_controller(host);

return mmc_resume_host(host->mmc);
}
#else
#define au1xmmc_suspend NULL
#define au1xmmc_resume NULL
#endif

static struct platform_driver au1xmmc_driver = {
.probe = au1xmmc_probe,
.remove = au1xmmc_remove,
.suspend = NULL,
.resume = NULL,
.suspend = au1xmmc_suspend,
.resume = au1xmmc_resume,
.driver = {
.name = DRIVER_NAME,
.owner = THIS_MODULE,
Expand Down

0 comments on commit a2f58c9

Please sign in to comment.