diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_device.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_device.c | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index 53f0735817bb..e0a398cf28d8 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c @@ -183,6 +183,10 @@ static int omap_device_build_from_dt(struct platform_device *pdev)  odbfd_exit1:  	kfree(hwmods);  odbfd_exit: +	/* if data/we are at fault.. load up a fail handler */ +	if (ret) +		pdev->dev.pm_domain = &omap_device_fail_pm_domain; +  	return ret;  } @@ -604,6 +608,19 @@ static int _od_runtime_resume(struct device *dev)  	return pm_generic_runtime_resume(dev);  } + +static int _od_fail_runtime_suspend(struct device *dev) +{ +	dev_warn(dev, "%s: FIXME: missing hwmod/omap_dev info\n", __func__); +	return -ENODEV; +} + +static int _od_fail_runtime_resume(struct device *dev) +{ +	dev_warn(dev, "%s: FIXME: missing hwmod/omap_dev info\n", __func__); +	return -ENODEV; +} +  #endif  #ifdef CONFIG_SUSPEND @@ -657,6 +674,13 @@ static int _od_resume_noirq(struct device *dev)  #define _od_resume_noirq NULL  #endif +struct dev_pm_domain omap_device_fail_pm_domain = { +	.ops = { +		SET_RUNTIME_PM_OPS(_od_fail_runtime_suspend, +				   _od_fail_runtime_resume, NULL) +	} +}; +  struct dev_pm_domain omap_device_pm_domain = {  	.ops = {  		SET_RUNTIME_PM_OPS(_od_runtime_suspend, _od_runtime_resume,  | 
