Print more info when platform device suspend function failed. Without this patch, we can not get the real platform device suspend API info.
Example without this patch: pm_op(): platform_pm_suspend+0x0/0x50 returns -11 PM: Device power.0 failed to suspend: error -11 And with this patch: platform_pm_suspend(): power_suspend+0x0/0x30 returns -11 pm_op(): platform_pm_suspend+0x0/0x80 returns -11 PM: Device power.0 failed to suspend: error -11 Signed-off-by: liu chuansheng <chuansheng....@intel.com> Signed-off-by: Li Fei <fei...@intel.com> --- drivers/base/platform.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index c0b8df3..96a452a 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -747,8 +747,10 @@ static int platform_legacy_suspend(struct device *dev, pm_message_t mesg) struct platform_device *pdev = to_platform_device(dev); int ret = 0; - if (dev->driver && pdrv->suspend) + if (dev->driver && pdrv->suspend) { ret = pdrv->suspend(pdev, mesg); + suspend_report_result(pdrv->suspend, ret); + } return ret; } @@ -778,10 +780,13 @@ int platform_pm_suspend(struct device *dev) return 0; if (drv->pm) { - if (drv->pm->suspend) + if (drv->pm->suspend) { ret = drv->pm->suspend(dev); + suspend_report_result(drv->pm->suspend, ret); + } } else { ret = platform_legacy_suspend(dev, PMSG_SUSPEND); + suspend_report_result(platform_legacy_suspend, ret); } return ret; @@ -818,10 +823,13 @@ int platform_pm_freeze(struct device *dev) return 0; if (drv->pm) { - if (drv->pm->freeze) + if (drv->pm->freeze) { ret = drv->pm->freeze(dev); + suspend_report_result(drv->pm->freeze, ret); + } } else { ret = platform_legacy_suspend(dev, PMSG_FREEZE); + suspend_report_result(platform_legacy_suspend, ret); } return ret; @@ -854,10 +862,13 @@ int platform_pm_poweroff(struct device *dev) return 0; if (drv->pm) { - if (drv->pm->poweroff) + if (drv->pm->poweroff) { ret = drv->pm->poweroff(dev); + suspend_report_result(drv->pm->poweroff, ret); + } } else { ret = platform_legacy_suspend(dev, PMSG_HIBERNATE); + suspend_report_result(platform_legacy_suspend, ret); } return ret; -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/