8f4a9df2aa2f848a5bd8e4d31a2ac47f46f63c03
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / arm / t6xx / kbase / src / platform / rk / mali_kbase_dvfs.h
1 /* drivers/gpu/t6xx/kbase/src/platform/manta/mali_kbase_dvfs.h
2  *
3  * Copyright 2011 by S.LSI. Samsung Electronics Inc.
4  * San#24, Nongseo-Dong, Giheung-Gu, Yongin, Korea
5  *
6  * Samsung SoC Mali-T604 DVFS driver
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software FoundatIon.
11  */
12
13 /**
14  * @file mali_kbase_dvfs.h
15  * DVFS
16  */
17
18 #ifndef _KBASE_DVFS_H_
19 #define _KBASE_DVFS_H_
20
21 /* Frequency that DVFS clock frequency decisions should be made */
22 #define KBASE_PM_DVFS_FREQUENCY                 100
23
24 #define MALI_DVFS_KEEP_STAY_CNT 10
25 #define MALI_DVFS_TIME_INTERVAL 5
26
27 #define MALI_DVFS_CURRENT_FREQ 0
28 #define MALI_DVFS_BL_CONFIG_FREQ 533
29 #define MALI_DVFS_START_FREQ 450
30
31 #ifdef CONFIG_MALI_T6XX_DVFS
32 #define CONFIG_MALI_T6XX_FREQ_LOCK
33 #endif
34
35 void kbase_platform_dvfs_set_clock(kbase_device *kbdev, int freq);
36 void kbase_platform_dvfs_set_level(struct kbase_device *kbdev, int level);
37 int kbase_platform_dvfs_get_level(int freq);
38
39 #ifdef CONFIG_MALI_T6XX_DVFS
40 int kbase_platform_dvfs_init(struct kbase_device *dev);
41 void kbase_platform_dvfs_term(void);
42 int kbase_platform_dvfs_event(struct kbase_device *kbdev, u32 utilisation);
43 int kbase_platform_dvfs_get_enable_status(void);
44 int kbase_platform_dvfs_enable(bool enable, int freq);
45 int kbase_platform_dvfs_get_utilisation(void);
46 #endif
47
48 int mali_get_dvfs_current_level(void);
49 int mali_get_dvfs_upper_locked_freq(void);
50 int mali_get_dvfs_under_locked_freq(void);
51 int mali_dvfs_freq_lock(int level);
52 void mali_dvfs_freq_unlock(void);
53 int mali_dvfs_freq_under_lock(int level);
54 void mali_dvfs_freq_under_unlock(void);
55
56 ssize_t show_time_in_state(struct device *dev, struct device_attribute *attr, char *buf);
57 ssize_t set_time_in_state(struct device *dev, struct device_attribute *attr, const char *buf, size_t count);
58
59 #endif                          /* _KBASE_DVFS_H_ */