mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
omap hsmmc: fix a racing case between kmmcd and omap_hsmmc_suspend
If suspend called when kmmcd is doing host->ops->disable, as kmmcd already increased host->en_dis_recurs to 1, the mmc_host_enable in suspend function will return directly without increase the nesting_cnt, which will cause the followed register access carried out to the disabled host. mmc_suspend_host will enable host itself. No need to enable host before it. Also works on kmmcd will get flushed in mmc_suspend_host, enable host after it will be safe. So make the mmc_host_enable after it. [cjb: rebase against current Linus] Signed-off-by: Ethan <[email protected]> Signed-off-by: Chris Ball <[email protected]> Acked-by: Adrian Hunter <[email protected]> Acked-by: Madhusudhan Chikkature <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
23ef309a6e
commit
e7cb756fc3
1 changed files with 1 additions and 1 deletions
|
|
@ -2323,8 +2323,8 @@ static int omap_hsmmc_suspend(struct device *dev)
|
|||
}
|
||||
}
|
||||
cancel_work_sync(&host->mmc_carddetect_work);
|
||||
mmc_host_enable(host->mmc);
|
||||
ret = mmc_suspend_host(host->mmc);
|
||||
mmc_host_enable(host->mmc);
|
||||
if (ret == 0) {
|
||||
omap_hsmmc_disable_irq(host);
|
||||
OMAP_HSMMC_WRITE(host->base, HCTL,
|
||||
|
|
|
|||
Loading…
Reference in a new issue