52167d362cc59d91ded5a990057a5ea5c911792d
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / arm / midgard / platform / rk / mali_kbase_dvfs.h
1 /* drivers/gpu/midgard/platform/rk/mali_kbase_dvfs.h
2  *
3  * Rockchip SoC Mali-T764 DVFS driver
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software FoundatIon.
8  */
9
10 /**
11  * @file mali_kbase_dvfs.h
12  * DVFS
13  */
14
15 #ifndef _KBASE_DVFS_H_
16 #define _KBASE_DVFS_H_
17
18 /* Frequency that DVFS clock frequency decisions should be made */
19 #define KBASE_PM_DVFS_FREQUENCY                 100
20
21 #define MALI_DVFS_KEEP_STAY_CNT 10
22 #define MALI_DVFS_UP_TIME_INTERVAL 1
23 #define MALI_DVFS_DOWN_TIME_INTERVAL 2
24 #define MALI_DVFS_CURRENT_FREQ 0
25 #if 0
26 #define MALI_DVFS_BL_CONFIG_FREQ 500
27 #define MALI_DVFS_START_FREQ 400
28 #endif
29 typedef struct _mali_dvfs_info {
30         unsigned int voltage;
31         unsigned int clock;
32         int min_threshold;
33         int max_threshold;
34         unsigned long long time;
35 } mali_dvfs_info;
36
37 #define MALI_KHZ 1000
38 extern mali_dvfs_info *p_mali_dvfs_infotbl;
39 extern unsigned int MALI_DVFS_STEP;
40 #ifdef CONFIG_MALI_MIDGARD_DVFS
41 #define CONFIG_MALI_MIDGARD_FREQ_LOCK
42 #endif
43
44 void kbase_platform_dvfs_set_clock(struct kbase_device *kbdev, int freq);
45 void kbase_platform_dvfs_set_level(struct kbase_device *kbdev, int level);
46 int kbase_platform_dvfs_get_level(int freq);
47
48 #ifdef CONFIG_MALI_MIDGARD_DVFS
49 int kbase_platform_dvfs_init(struct kbase_device *dev);
50 void kbase_platform_dvfs_term(void);
51 /*int kbase_platform_dvfs_event(struct kbase_device *kbdev, u32 utilisation);*/
52 /*int kbase_platform_dvfs_event(struct kbase_device *kbdev, u32 utilisation,u32 util_gl_share, u32 util_cl_share[2]);*/
53 int kbase_platform_dvfs_get_enable_status(void);
54 int kbase_platform_dvfs_enable(bool enable, int freq);
55 int kbase_platform_dvfs_get_utilisation(void);
56 #endif
57
58 int mali_get_dvfs_current_level(void);
59 int mali_get_dvfs_upper_locked_freq(void);
60 int mali_get_dvfs_under_locked_freq(void);
61 int mali_dvfs_freq_lock(int level);
62 void mali_dvfs_freq_unlock(void);
63 int mali_dvfs_freq_under_lock(int level);
64 void mali_dvfs_freq_under_unlock(void);
65
66 ssize_t show_time_in_state(struct device *dev, struct device_attribute *attr, char *buf);
67 ssize_t set_time_in_state(struct device *dev, struct device_attribute *attr, const char *buf, size_t count);
68
69 #endif                          /* _KBASE_DVFS_H_ */