diff options
Diffstat (limited to 'arch/sh/kernel/cpu/shmobile/pm_runtime.c')
| -rw-r--r-- | arch/sh/kernel/cpu/shmobile/pm_runtime.c | 33 | 
1 files changed, 22 insertions, 11 deletions
diff --git a/arch/sh/kernel/cpu/shmobile/pm_runtime.c b/arch/sh/kernel/cpu/shmobile/pm_runtime.c index 6dcb8166a64..22db127afa7 100644 --- a/arch/sh/kernel/cpu/shmobile/pm_runtime.c +++ b/arch/sh/kernel/cpu/shmobile/pm_runtime.c @@ -139,7 +139,7 @@ void platform_pm_runtime_suspend_idle(void)  	queue_work(pm_wq, &hwblk_work);  } -int platform_pm_runtime_suspend(struct device *dev) +static int default_platform_runtime_suspend(struct device *dev)  {  	struct platform_device *pdev = to_platform_device(dev);  	struct pdev_archdata *ad = &pdev->archdata; @@ -147,7 +147,7 @@ int platform_pm_runtime_suspend(struct device *dev)  	int hwblk = ad->hwblk_id;  	int ret = 0; -	dev_dbg(dev, "platform_pm_runtime_suspend() [%d]\n", hwblk); +	dev_dbg(dev, "%s() [%d]\n", __func__, hwblk);  	/* ignore off-chip platform devices */  	if (!hwblk) @@ -183,20 +183,20 @@ int platform_pm_runtime_suspend(struct device *dev)  	mutex_unlock(&ad->mutex);  out: -	dev_dbg(dev, "platform_pm_runtime_suspend() [%d] returns %d\n", -		hwblk, ret); +	dev_dbg(dev, "%s() [%d] returns %d\n", +		 __func__, hwblk, ret);  	return ret;  } -int platform_pm_runtime_resume(struct device *dev) +static int default_platform_runtime_resume(struct device *dev)  {  	struct platform_device *pdev = to_platform_device(dev);  	struct pdev_archdata *ad = &pdev->archdata;  	int hwblk = ad->hwblk_id;  	int ret = 0; -	dev_dbg(dev, "platform_pm_runtime_resume() [%d]\n", hwblk); +	dev_dbg(dev, "%s() [%d]\n", __func__, hwblk);  	/* ignore off-chip platform devices */  	if (!hwblk) @@ -228,19 +228,19 @@ int platform_pm_runtime_resume(struct device *dev)  	 */  	mutex_unlock(&ad->mutex);  out: -	dev_dbg(dev, "platform_pm_runtime_resume() [%d] returns %d\n", -		hwblk, ret); +	dev_dbg(dev, "%s() [%d] returns %d\n", +		__func__, hwblk, ret);  	return ret;  } -int platform_pm_runtime_idle(struct device *dev) +static int default_platform_runtime_idle(struct device *dev)  {  	struct platform_device *pdev = to_platform_device(dev);  	int hwblk = pdev->archdata.hwblk_id;  	int ret = 0; -	dev_dbg(dev, "platform_pm_runtime_idle() [%d]\n", hwblk); +	dev_dbg(dev, "%s() [%d]\n", __func__, hwblk);  	/* ignore off-chip platform devices */  	if (!hwblk) @@ -252,10 +252,19 @@ int platform_pm_runtime_idle(struct device *dev)  	/* suspend synchronously to disable clocks immediately */  	ret = pm_runtime_suspend(dev);  out: -	dev_dbg(dev, "platform_pm_runtime_idle() [%d] done!\n", hwblk); +	dev_dbg(dev, "%s() [%d] done!\n", __func__, hwblk);  	return ret;  } +static struct dev_power_domain default_power_domain = { +	.ops = { +		.runtime_suspend = default_platform_runtime_suspend, +		.runtime_resume = default_platform_runtime_resume, +		.runtime_idle = default_platform_runtime_idle, +		USE_PLATFORM_PM_SLEEP_OPS +	}, +}; +  static int platform_bus_notify(struct notifier_block *nb,  			       unsigned long action, void *data)  { @@ -276,6 +285,7 @@ static int platform_bus_notify(struct notifier_block *nb,  		hwblk_disable(hwblk_info, hwblk);  		/* make sure driver re-inits itself once */  		__set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags); +		dev->pwr_domain = &default_power_domain;  		break;  	/* TODO: add BUS_NOTIFY_BIND_DRIVER and increase idle count */  	case BUS_NOTIFY_BOUND_DRIVER: @@ -289,6 +299,7 @@ static int platform_bus_notify(struct notifier_block *nb,  		__set_bit(PDEV_ARCHDATA_FLAG_INIT, &pdev->archdata.flags);  		break;  	case BUS_NOTIFY_DEL_DEVICE: +		dev->pwr_domain = NULL;  		break;  	}  	return 0;  |