Lines Matching defs:pfdevfreq

14 static void panfrost_devfreq_update_utilization(struct panfrost_devfreq *pfdevfreq)
19 last = pfdevfreq->time_last_update;
21 if (pfdevfreq->busy_count > 0)
22 pfdevfreq->busy_time += ktime_sub(now, last);
24 pfdevfreq->idle_time += ktime_sub(now, last);
26 pfdevfreq->time_last_update = now;
42 static void panfrost_devfreq_reset(struct panfrost_devfreq *pfdevfreq)
44 pfdevfreq->busy_time = 0;
45 pfdevfreq->idle_time = 0;
46 pfdevfreq->time_last_update = ktime_get();
53 struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq;
58 spin_lock_irqsave(&pfdevfreq->lock, irqflags);
60 panfrost_devfreq_update_utilization(pfdevfreq);
62 status->total_time = ktime_to_ns(ktime_add(pfdevfreq->busy_time,
63 pfdevfreq->idle_time));
65 status->busy_time = ktime_to_ns(pfdevfreq->busy_time);
67 panfrost_devfreq_reset(pfdevfreq);
69 spin_unlock_irqrestore(&pfdevfreq->lock, irqflags);
119 struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq;
151 pfdevfreq->opp_of_table_added = true;
153 spin_lock_init(&pfdevfreq->lock);
155 panfrost_devfreq_reset(pfdevfreq);
181 pfdevfreq->gov_data.upthreshold = 45;
182 pfdevfreq->gov_data.downdifferential = 5;
186 &pfdevfreq->gov_data);
191 pfdevfreq->devfreq = devfreq;
197 pfdevfreq->cooling = cooling;
204 struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq;
206 if (pfdevfreq->cooling) {
207 devfreq_cooling_unregister(pfdevfreq->cooling);
208 pfdevfreq->cooling = NULL;
214 struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq;
216 if (!pfdevfreq->devfreq)
219 panfrost_devfreq_reset(pfdevfreq);
221 devfreq_resume_device(pfdevfreq->devfreq);
226 struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq;
228 if (!pfdevfreq->devfreq)
231 devfreq_suspend_device(pfdevfreq->devfreq);
234 void panfrost_devfreq_record_busy(struct panfrost_devfreq *pfdevfreq)
238 if (!pfdevfreq->devfreq)
241 spin_lock_irqsave(&pfdevfreq->lock, irqflags);
243 panfrost_devfreq_update_utilization(pfdevfreq);
245 pfdevfreq->busy_count++;
247 spin_unlock_irqrestore(&pfdevfreq->lock, irqflags);
250 void panfrost_devfreq_record_idle(struct panfrost_devfreq *pfdevfreq)
254 if (!pfdevfreq->devfreq)
257 spin_lock_irqsave(&pfdevfreq->lock, irqflags);
259 panfrost_devfreq_update_utilization(pfdevfreq);
261 WARN_ON(--pfdevfreq->busy_count < 0);
263 spin_unlock_irqrestore(&pfdevfreq->lock, irqflags);