Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 192cfe16 authored by Siba Prasad's avatar Siba Prasad
Browse files

mmc: bus: Handle error in case bus_ops suspend fails



bus_ops->suspend may fail due to some reason
(for e.g. due to flush timeout). In such cases,
if we return error to PM framework from here without
calling pm_generic_resume then mmc request may get stuck
since PM framework will assume that mmc bus not suspended
(because of error) and it won't call resume again.

Thus fix this by calling pm_generic_resume in case of error
from bus_ops->suspend in mmc_bus_suspend.

Change-Id: Iaef485d0b47b005aa88e61cd77a2b7b65931def1
Signed-off-by: default avatarRitesh Harjani <riteshh@codeaurora.org>
Signed-off-by: default avatarSayali Lokhande <sayalil@codeaurora.org>
Signed-off-by: default avatarSiba Prasad <sibap@codeaurora.org>
parent 7246b950
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -167,6 +167,19 @@ static int mmc_bus_suspend(struct device *dev)
	if (mmc_bus_needs_resume(host))
		return 0;
	ret = host->bus_ops->suspend(host);

	/*
	 * bus_ops->suspend may fail due to some reason
	 * In such cases if we return error to PM framework
	 * from here without calling pm_generic_resume then mmc
	 * request may get stuck since PM framework will assume
	 * that mmc bus is not suspended (because of error) and
	 * it won't call resume again.
	 *
	 * So in case of error call pm_generic_resume().
	 */
	if (ret)
		pm_generic_resume(dev);
	return ret;
}