diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/devfreq.h | 4 | ||||
| -rw-r--r-- | include/linux/msm_adreno_devfreq.h | 75 |
2 files changed, 79 insertions, 0 deletions
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 83cbbf52aa87..8668fc8ccccf 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -52,6 +52,10 @@ struct devfreq_dev_status { */ #define DEVFREQ_FLAG_LEAST_UPPER_BOUND 0x1 +#define DEVFREQ_FLAG_WAKEUP_MAXFREQ 0x2 +#define DEVFREQ_FLAG_FAST_HINT 0x4 +#define DEVFREQ_FLAG_SLOW_HINT 0x8 + /** * struct devfreq_dev_profile - Devfreq's user device profile * @initial_freq: The operating frequency when devfreq_add_device() is diff --git a/include/linux/msm_adreno_devfreq.h b/include/linux/msm_adreno_devfreq.h new file mode 100644 index 000000000000..44930c24de89 --- /dev/null +++ b/include/linux/msm_adreno_devfreq.h @@ -0,0 +1,75 @@ +#ifndef MSM_ADRENO_DEVFREQ_H +#define MSM_ADRENO_DEVFREQ_H + +#include <linux/devfreq.h> +#include <linux/notifier.h> + +#define ADRENO_DEVFREQ_NOTIFY_SUBMIT 1 +#define ADRENO_DEVFREQ_NOTIFY_RETIRE 2 +#define ADRENO_DEVFREQ_NOTIFY_IDLE 3 + +struct device; + +int kgsl_devfreq_add_notifier(struct device *, struct notifier_block *); + +int kgsl_devfreq_del_notifier(struct device *, struct notifier_block *); + +/* same as KGSL_MAX_PWRLEVELS */ +#define MSM_ADRENO_MAX_PWRLEVELS 10 + +struct xstats { + u64 ram_time; + u64 ram_wait; + int mod; +}; + +struct devfreq_msm_adreno_tz_data { + struct notifier_block nb; + struct { + s64 total_time; + s64 busy_time; + } bin; + struct { + u64 total_time; + u64 ram_time; + u64 ram_wait; + u64 gpu_time; + u32 num; + u32 max; + u32 width; + u32 *up; + u32 *down; + u32 *p_up; + u32 *p_down; + unsigned int *index; + uint64_t *ib; + } bus; + unsigned int device_id; + bool is_64; +}; + +struct msm_adreno_extended_profile { + struct devfreq_msm_adreno_tz_data *private_data; + struct devfreq *bus_devfreq; + struct workqueue_struct *partner_wq; + struct work_struct partner_start_event_ws; + struct work_struct partner_stop_event_ws; + struct work_struct partner_suspend_event_ws; + struct work_struct partner_resume_event_ws; + struct devfreq_dev_profile profile; +}; + +struct msm_busmon_extended_profile { + u32 flag; + unsigned long percent_ab; + unsigned long ab_mbytes; + struct devfreq_msm_adreno_tz_data *private_data; + struct devfreq_dev_profile profile; +}; + +#ifdef CONFIG_DEVFREQ_GOV_MSM_GPUBW_MON +int devfreq_vbif_update_bw(unsigned long ib, unsigned long ab); +int devfreq_vbif_register_callback(void *); +#endif + +#endif |
