1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
/*
* Copyright (C) 2010-2011 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
*
* A copy of the licence is included with the program, and can also be obtained from Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/**
* @file mali_pmm_policy.h
* Defines the power management module policies
*/
#ifndef __MALI_PMM_POLICY_JOBCONTROL_H__
#define __MALI_PMM_POLICY_JOBCONTROL_H__
#ifdef __cplusplus
extern "C"
{
#endif
/**
* @addtogroup pmmapi_policy Power Management Module Policies
*
* @{
*/
/** @brief The jobcontrol policy inactivity latency timeout (in ticks)
* before the hardware is switched off
*
* @note Setting this low whilst tracing or producing debug output can
* cause alot of timeouts to fire which can affect the PMM behaviour
*/
#define MALI_PMM_POLICY_JOBCONTROL_INACTIVITY_TIMEOUT 50
/** @brief Job control policy initialization
*
* @return _MALI_OSK_ERR_OK if the policy could be initialized, or a suitable
* _mali_osk_errcode_t otherwise.
*/
_mali_osk_errcode_t pmm_policy_init_job_control(_mali_pmm_internal_state_t *pmm);
/** @brief Job control policy termination
*/
void pmm_policy_term_job_control(void);
/** @brief Job control policy state changer
*
* Given the next available event message, this routine processes it
* for the policy and changes state as needed.
*
* Job control policy depends on events from the Mali cores, and will
* power down all cores after an inactivity latency timeout. It will
* power the cores back on again when a job is scheduled to run.
*
* @param pmm internal PMM state
* @param event PMM event to process
* @return _MALI_OSK_ERR_OK if the policy state completed okay, or a suitable
* _mali_osk_errcode_t otherwise.
*/
_mali_osk_errcode_t pmm_policy_process_job_control( _mali_pmm_internal_state_t *pmm, mali_pmm_message_t *event );
/** @brief Job control policy checker
*
* The latency timer has fired and we need to raise the correct event to
* handle it
*
* @param pmm internal PMM state
*/
void pmm_policy_check_job_control(void);
/** @} */ /* End group pmmapi_policy */
#ifdef __cplusplus
}
#endif
#endif /* __MALI_PMM_POLICY_JOBCONTROL_H__ */
|