MALI: utgard: upgrade DDK to r6p1-01rel0
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / arm / mali400 / mali / common / mali_pm.h
1 /*
2  * Copyright (C) 2011-2016 ARM Limited. All rights reserved.
3  * 
4  * This program is free software and is provided to you under the terms of the GNU General Public License version 2
5  * as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
6  * 
7  * A copy of the licence is included with the program, and can also be obtained from Free Software
8  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
9  */
10
11 #ifndef __MALI_PM_H__
12 #define __MALI_PM_H__
13
14 #include "mali_osk.h"
15 #include "mali_pm_domain.h"
16
17 #define MALI_DOMAIN_INDEX_GP        0
18 #define MALI_DOMAIN_INDEX_PP0       1
19 #define MALI_DOMAIN_INDEX_PP1       2
20 #define MALI_DOMAIN_INDEX_PP2       3
21 #define MALI_DOMAIN_INDEX_PP3       4
22 #define MALI_DOMAIN_INDEX_PP4       5
23 #define MALI_DOMAIN_INDEX_PP5       6
24 #define MALI_DOMAIN_INDEX_PP6       7
25 #define MALI_DOMAIN_INDEX_PP7       8
26 #define MALI_DOMAIN_INDEX_L20       9
27 #define MALI_DOMAIN_INDEX_L21      10
28 #define MALI_DOMAIN_INDEX_L22      11
29 /*
30  * The dummy domain is used when there is no physical power domain
31  * (e.g. no PMU or always on cores)
32  */
33 #define MALI_DOMAIN_INDEX_DUMMY    12
34 #define MALI_MAX_NUMBER_OF_DOMAINS 13
35
36 /**
37  * Initialize the Mali PM module
38  *
39  * PM module covers Mali PM core, PM domains and Mali PMU
40  */
41 _mali_osk_errcode_t mali_pm_initialize(void);
42
43 /**
44  * Terminate the Mali PM module
45  */
46 void mali_pm_terminate(void);
47
48 void mali_pm_exec_lock(void);
49 void mali_pm_exec_unlock(void);
50
51
52 struct mali_pm_domain *mali_pm_register_l2_cache(u32 domain_index,
53                 struct mali_l2_cache_core *l2_cache);
54 struct mali_pm_domain *mali_pm_register_group(u32 domain_index,
55                 struct mali_group *group);
56
57 mali_bool mali_pm_get_domain_refs(struct mali_pm_domain **domains,
58                                   struct mali_group **groups,
59                                   u32 num_domains);
60 mali_bool mali_pm_put_domain_refs(struct mali_pm_domain **domains,
61                                   u32 num_domains);
62
63 void mali_pm_init_begin(void);
64 void mali_pm_init_end(void);
65
66 void mali_pm_update_sync(void);
67 void mali_pm_update_async(void);
68
69 /* Callback functions for system power management */
70 void mali_pm_os_suspend(mali_bool os_suspend);
71 void mali_pm_os_resume(void);
72
73 mali_bool mali_pm_runtime_suspend(void);
74 void mali_pm_runtime_resume(void);
75
76 #if MALI_STATE_TRACKING
77 u32 mali_pm_dump_state_domain(struct mali_pm_domain *domain,
78                               char *buf, u32 size);
79 #endif
80
81 void mali_pm_power_cost_setup(void);
82
83 void mali_pm_get_best_power_cost_mask(int num_requested, int *dst);
84
85 #if defined(DEBUG)
86 const char *mali_pm_mask_to_string(u32 mask);
87 #endif
88
89 u32 mali_pm_get_current_mask(void);
90 u32 mali_pm_get_wanted_mask(void);
91 #endif /* __MALI_PM_H__ */