forked from mirrors/linux
		
	PM / devfreq: account suspend/resume for stats
devfreq stats is not taking device suspend and resume into account. Fix it. Signed-off-by: Rajagopal Venkat <rajagopal.venkat@linaro.org> Acked-by: MyungJoo Ham <myungjoo.ham@samsung.com>
This commit is contained in:
		
							parent
							
								
									6ccce69955
								
							
						
					
					
						commit
						39688ce6fa
					
				
					 1 changed files with 12 additions and 3 deletions
				
			
		|  | @ -271,6 +271,7 @@ void devfreq_monitor_suspend(struct devfreq *devfreq) | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	devfreq_update_status(devfreq, devfreq->previous_freq); | ||||
| 	devfreq->stop_polling = true; | ||||
| 	mutex_unlock(&devfreq->lock); | ||||
| 	cancel_delayed_work_sync(&devfreq->work); | ||||
|  | @ -287,6 +288,8 @@ EXPORT_SYMBOL(devfreq_monitor_suspend); | |||
|  */ | ||||
| void devfreq_monitor_resume(struct devfreq *devfreq) | ||||
| { | ||||
| 	unsigned long freq; | ||||
| 
 | ||||
| 	mutex_lock(&devfreq->lock); | ||||
| 	if (!devfreq->stop_polling) | ||||
| 		goto out; | ||||
|  | @ -295,8 +298,14 @@ void devfreq_monitor_resume(struct devfreq *devfreq) | |||
| 			devfreq->profile->polling_ms) | ||||
| 		queue_delayed_work(devfreq_wq, &devfreq->work, | ||||
| 			msecs_to_jiffies(devfreq->profile->polling_ms)); | ||||
| 
 | ||||
| 	devfreq->last_stat_updated = jiffies; | ||||
| 	devfreq->stop_polling = false; | ||||
| 
 | ||||
| 	if (devfreq->profile->get_cur_freq && | ||||
| 		!devfreq->profile->get_cur_freq(devfreq->dev.parent, &freq)) | ||||
| 		devfreq->previous_freq = freq; | ||||
| 
 | ||||
| out: | ||||
| 	mutex_unlock(&devfreq->lock); | ||||
| } | ||||
|  | @ -905,11 +914,11 @@ static ssize_t show_trans_table(struct device *dev, struct device_attribute *att | |||
| { | ||||
| 	struct devfreq *devfreq = to_devfreq(dev); | ||||
| 	ssize_t len; | ||||
| 	int i, j, err; | ||||
| 	int i, j; | ||||
| 	unsigned int max_state = devfreq->profile->max_state; | ||||
| 
 | ||||
| 	err = devfreq_update_status(devfreq, devfreq->previous_freq); | ||||
| 	if (err) | ||||
| 	if (!devfreq->stop_polling && | ||||
| 			devfreq_update_status(devfreq, devfreq->previous_freq)) | ||||
| 		return 0; | ||||
| 
 | ||||
| 	len = sprintf(buf, "   From  :   To\n"); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Rajagopal Venkat
						Rajagopal Venkat