Lines Matching refs:devfreq

19 static void lima_devfreq_update_utilization(struct lima_devfreq *devfreq)  in lima_devfreq_update_utilization()  argument
24 last = devfreq->time_last_update; in lima_devfreq_update_utilization()
26 if (devfreq->busy_count > 0) in lima_devfreq_update_utilization()
27 devfreq->busy_time += ktime_sub(now, last); in lima_devfreq_update_utilization()
29 devfreq->idle_time += ktime_sub(now, last); in lima_devfreq_update_utilization()
31 devfreq->time_last_update = now; in lima_devfreq_update_utilization()
47 static void lima_devfreq_reset(struct lima_devfreq *devfreq) in lima_devfreq_reset() argument
49 devfreq->busy_time = 0; in lima_devfreq_reset()
50 devfreq->idle_time = 0; in lima_devfreq_reset()
51 devfreq->time_last_update = ktime_get(); in lima_devfreq_reset()
58 struct lima_devfreq *devfreq = &ldev->devfreq; in lima_devfreq_get_dev_status() local
63 spin_lock_irqsave(&devfreq->lock, irqflags); in lima_devfreq_get_dev_status()
65 lima_devfreq_update_utilization(devfreq); in lima_devfreq_get_dev_status()
67 status->total_time = ktime_to_ns(ktime_add(devfreq->busy_time, in lima_devfreq_get_dev_status()
68 devfreq->idle_time)); in lima_devfreq_get_dev_status()
69 status->busy_time = ktime_to_ns(devfreq->busy_time); in lima_devfreq_get_dev_status()
71 lima_devfreq_reset(devfreq); in lima_devfreq_get_dev_status()
73 spin_unlock_irqrestore(&devfreq->lock, irqflags); in lima_devfreq_get_dev_status()
92 struct lima_devfreq *devfreq = &ldev->devfreq; in lima_devfreq_fini() local
94 if (devfreq->cooling) { in lima_devfreq_fini()
95 devfreq_cooling_unregister(devfreq->cooling); in lima_devfreq_fini()
96 devfreq->cooling = NULL; in lima_devfreq_fini()
99 if (devfreq->devfreq) { in lima_devfreq_fini()
100 devm_devfreq_remove_device(ldev->dev, devfreq->devfreq); in lima_devfreq_fini()
101 devfreq->devfreq = NULL; in lima_devfreq_fini()
109 struct devfreq *devfreq; in lima_devfreq_init() local
110 struct lima_devfreq *ldevfreq = &ldev->devfreq; in lima_devfreq_init()
154 devfreq = devm_devfreq_add_device(dev, &lima_devfreq_profile, in lima_devfreq_init()
157 if (IS_ERR(devfreq)) { in lima_devfreq_init()
159 return PTR_ERR(devfreq); in lima_devfreq_init()
162 ldevfreq->devfreq = devfreq; in lima_devfreq_init()
164 cooling = of_devfreq_cooling_register(dev->of_node, devfreq); in lima_devfreq_init()
173 void lima_devfreq_record_busy(struct lima_devfreq *devfreq) in lima_devfreq_record_busy() argument
177 if (!devfreq->devfreq) in lima_devfreq_record_busy()
180 spin_lock_irqsave(&devfreq->lock, irqflags); in lima_devfreq_record_busy()
182 lima_devfreq_update_utilization(devfreq); in lima_devfreq_record_busy()
184 devfreq->busy_count++; in lima_devfreq_record_busy()
186 spin_unlock_irqrestore(&devfreq->lock, irqflags); in lima_devfreq_record_busy()
189 void lima_devfreq_record_idle(struct lima_devfreq *devfreq) in lima_devfreq_record_idle() argument
193 if (!devfreq->devfreq) in lima_devfreq_record_idle()
196 spin_lock_irqsave(&devfreq->lock, irqflags); in lima_devfreq_record_idle()
198 lima_devfreq_update_utilization(devfreq); in lima_devfreq_record_idle()
200 WARN_ON(--devfreq->busy_count < 0); in lima_devfreq_record_idle()
202 spin_unlock_irqrestore(&devfreq->lock, irqflags); in lima_devfreq_record_idle()
205 int lima_devfreq_resume(struct lima_devfreq *devfreq) in lima_devfreq_resume() argument
209 if (!devfreq->devfreq) in lima_devfreq_resume()
212 spin_lock_irqsave(&devfreq->lock, irqflags); in lima_devfreq_resume()
214 lima_devfreq_reset(devfreq); in lima_devfreq_resume()
216 spin_unlock_irqrestore(&devfreq->lock, irqflags); in lima_devfreq_resume()
218 return devfreq_resume_device(devfreq->devfreq); in lima_devfreq_resume()
221 int lima_devfreq_suspend(struct lima_devfreq *devfreq) in lima_devfreq_suspend() argument
223 if (!devfreq->devfreq) in lima_devfreq_suspend()
226 return devfreq_suspend_device(devfreq->devfreq); in lima_devfreq_suspend()