mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 23:21:46 +00:00
tifm_sd: add suspend and resume functionality
Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
This commit is contained in:
parent
41d78f7405
commit
dba4accab1
1 changed files with 38 additions and 1 deletions
|
@ -921,6 +921,41 @@ static void tifm_sd_remove(struct tifm_dev *sock)
|
||||||
mmc_free_host(mmc);
|
mmc_free_host(mmc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
|
static int tifm_sd_suspend(struct tifm_dev *sock, pm_message_t state)
|
||||||
|
{
|
||||||
|
struct mmc_host *mmc = tifm_get_drvdata(sock);
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
rc = mmc_suspend_host(mmc, state);
|
||||||
|
/* The meaning of the bit majority in this constant is unknown. */
|
||||||
|
writel(0xfff8 & readl(sock->addr + SOCK_CONTROL),
|
||||||
|
sock->addr + SOCK_CONTROL);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int tifm_sd_resume(struct tifm_dev *sock)
|
||||||
|
{
|
||||||
|
struct mmc_host *mmc = tifm_get_drvdata(sock);
|
||||||
|
struct tifm_sd *host = mmc_priv(mmc);
|
||||||
|
|
||||||
|
if (sock->media_id != FM_SD
|
||||||
|
|| tifm_sd_initialize_host(host)) {
|
||||||
|
tifm_eject(sock);
|
||||||
|
return 0;
|
||||||
|
} else {
|
||||||
|
return mmc_resume_host(mmc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define tifm_sd_suspend NULL
|
||||||
|
#define tifm_sd_resume NULL
|
||||||
|
|
||||||
|
#endif /* CONFIG_PM */
|
||||||
|
|
||||||
static tifm_media_id tifm_sd_id_tbl[] = {
|
static tifm_media_id tifm_sd_id_tbl[] = {
|
||||||
FM_SD, 0
|
FM_SD, 0
|
||||||
};
|
};
|
||||||
|
@ -932,7 +967,9 @@ static struct tifm_driver tifm_sd_driver = {
|
||||||
},
|
},
|
||||||
.id_table = tifm_sd_id_tbl,
|
.id_table = tifm_sd_id_tbl,
|
||||||
.probe = tifm_sd_probe,
|
.probe = tifm_sd_probe,
|
||||||
.remove = tifm_sd_remove
|
.remove = tifm_sd_remove,
|
||||||
|
.suspend = tifm_sd_suspend,
|
||||||
|
.resume = tifm_sd_resume
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init tifm_sd_init(void)
|
static int __init tifm_sd_init(void)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue