18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Copyright 2019 Collabora ltd. */ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef __PANFROST_DEVFREQ_H__ 58c2ecf20Sopenharmony_ci#define __PANFROST_DEVFREQ_H__ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <linux/spinlock.h> 88c2ecf20Sopenharmony_ci#include <linux/ktime.h> 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_cistruct devfreq; 118c2ecf20Sopenharmony_cistruct opp_table; 128c2ecf20Sopenharmony_cistruct thermal_cooling_device; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct panfrost_device; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistruct panfrost_devfreq { 178c2ecf20Sopenharmony_ci struct devfreq *devfreq; 188c2ecf20Sopenharmony_ci struct opp_table *regulators_opp_table; 198c2ecf20Sopenharmony_ci struct thermal_cooling_device *cooling; 208c2ecf20Sopenharmony_ci bool opp_of_table_added; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci ktime_t busy_time; 238c2ecf20Sopenharmony_ci ktime_t idle_time; 248c2ecf20Sopenharmony_ci ktime_t time_last_update; 258c2ecf20Sopenharmony_ci int busy_count; 268c2ecf20Sopenharmony_ci /* 278c2ecf20Sopenharmony_ci * Protect busy_time, idle_time, time_last_update and busy_count 288c2ecf20Sopenharmony_ci * because these can be updated concurrently between multiple jobs. 298c2ecf20Sopenharmony_ci */ 308c2ecf20Sopenharmony_ci spinlock_t lock; 318c2ecf20Sopenharmony_ci}; 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ciint panfrost_devfreq_init(struct panfrost_device *pfdev); 348c2ecf20Sopenharmony_civoid panfrost_devfreq_fini(struct panfrost_device *pfdev); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_civoid panfrost_devfreq_resume(struct panfrost_device *pfdev); 378c2ecf20Sopenharmony_civoid panfrost_devfreq_suspend(struct panfrost_device *pfdev); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_civoid panfrost_devfreq_record_busy(struct panfrost_devfreq *devfreq); 408c2ecf20Sopenharmony_civoid panfrost_devfreq_record_idle(struct panfrost_devfreq *devfreq); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci#endif /* __PANFROST_DEVFREQ_H__ */ 43