92 lines
2.6 KiB
C
Executable File
92 lines
2.6 KiB
C
Executable File
/*
|
|
* Copyright (C) 2011-2017 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.
|
|
*/
|
|
|
|
#ifndef __MALI_PM_H__
|
|
#define __MALI_PM_H__
|
|
|
|
#include "mali_osk.h"
|
|
#include "mali_pm_domain.h"
|
|
|
|
#define MALI_DOMAIN_INDEX_GP 0
|
|
#define MALI_DOMAIN_INDEX_PP0 1
|
|
#define MALI_DOMAIN_INDEX_PP1 2
|
|
#define MALI_DOMAIN_INDEX_PP2 3
|
|
#define MALI_DOMAIN_INDEX_PP3 4
|
|
#define MALI_DOMAIN_INDEX_PP4 5
|
|
#define MALI_DOMAIN_INDEX_PP5 6
|
|
#define MALI_DOMAIN_INDEX_PP6 7
|
|
#define MALI_DOMAIN_INDEX_PP7 8
|
|
#define MALI_DOMAIN_INDEX_L20 9
|
|
#define MALI_DOMAIN_INDEX_L21 10
|
|
#define MALI_DOMAIN_INDEX_L22 11
|
|
/*
|
|
* The dummy domain is used when there is no physical power domain
|
|
* (e.g. no PMU or always on cores)
|
|
*/
|
|
#define MALI_DOMAIN_INDEX_DUMMY 12
|
|
#define MALI_MAX_NUMBER_OF_DOMAINS 13
|
|
|
|
/**
|
|
* Initialize the Mali PM module
|
|
*
|
|
* PM module covers Mali PM core, PM domains and Mali PMU
|
|
*/
|
|
_mali_osk_errcode_t mali_pm_initialize(void);
|
|
|
|
/**
|
|
* Terminate the Mali PM module
|
|
*/
|
|
void mali_pm_terminate(void);
|
|
|
|
void mali_pm_exec_lock(void);
|
|
void mali_pm_exec_unlock(void);
|
|
|
|
|
|
struct mali_pm_domain *mali_pm_register_l2_cache(u32 domain_index,
|
|
struct mali_l2_cache_core *l2_cache);
|
|
struct mali_pm_domain *mali_pm_register_group(u32 domain_index,
|
|
struct mali_group *group);
|
|
|
|
mali_bool mali_pm_get_domain_refs(struct mali_pm_domain **domains,
|
|
struct mali_group **groups,
|
|
u32 num_domains);
|
|
mali_bool mali_pm_put_domain_refs(struct mali_pm_domain **domains,
|
|
u32 num_domains);
|
|
|
|
void mali_pm_init_begin(void);
|
|
void mali_pm_init_end(void);
|
|
|
|
void mali_pm_update_sync(void);
|
|
void mali_pm_update_async(void);
|
|
|
|
/* Callback functions for system power management */
|
|
void mali_pm_os_suspend(mali_bool os_suspend);
|
|
void mali_pm_os_resume(void);
|
|
|
|
mali_bool mali_pm_runtime_suspend(void);
|
|
void mali_pm_runtime_resume(void);
|
|
|
|
#if MALI_STATE_TRACKING
|
|
u32 mali_pm_dump_state_domain(struct mali_pm_domain *domain,
|
|
char *buf, u32 size);
|
|
#endif
|
|
|
|
void mali_pm_power_cost_setup(void);
|
|
|
|
void mali_pm_get_best_power_cost_mask(int num_requested, int *dst);
|
|
|
|
#if defined(DEBUG)
|
|
const char *mali_pm_mask_to_string(u32 mask);
|
|
#endif
|
|
|
|
u32 mali_pm_get_current_mask(void);
|
|
u32 mali_pm_get_wanted_mask(void);
|
|
#endif /* __MALI_PM_H__ */
|