1 #ifndef MSM_ADRENO_DEVFREQ_H
2 #define MSM_ADRENO_DEVFREQ_H
4 #include <linux/devfreq.h>
5 #include <linux/notifier.h>
7 #define ADRENO_DEVFREQ_NOTIFY_SUBMIT 1
8 #define ADRENO_DEVFREQ_NOTIFY_RETIRE 2
9 #define ADRENO_DEVFREQ_NOTIFY_IDLE 3
13 int kgsl_devfreq_add_notifier(struct device *, struct notifier_block *);
15 int kgsl_devfreq_del_notifier(struct device *, struct notifier_block *);
17 /* same as KGSL_MAX_PWRLEVELS */
18 #define MSM_ADRENO_MAX_PWRLEVELS 10
26 struct devfreq_msm_adreno_tz_data {
27 struct notifier_block nb;
31 u32 ctxt_aware_target_pwrlevel;
32 u32 ctxt_aware_busy_penalty;
49 unsigned int device_id;
51 bool disable_busy_time_burst;
52 bool ctxt_aware_enable;
55 struct msm_adreno_extended_profile {
56 struct devfreq_msm_adreno_tz_data *private_data;
57 struct devfreq *bus_devfreq;
58 struct workqueue_struct *partner_wq;
59 struct work_struct partner_start_event_ws;
60 struct work_struct partner_stop_event_ws;
61 struct work_struct partner_suspend_event_ws;
62 struct work_struct partner_resume_event_ws;
63 struct devfreq_dev_profile profile;
66 struct msm_busmon_extended_profile {
68 unsigned long percent_ab;
69 unsigned long ab_mbytes;
70 struct devfreq_msm_adreno_tz_data *private_data;
71 struct devfreq_dev_profile profile;
74 #ifdef CONFIG_DEVFREQ_GOV_QCOM_GPUBW_MON
75 int devfreq_vbif_update_bw(unsigned long ib, unsigned long ab);
76 int devfreq_vbif_register_callback(void *);