blob: a3dfe2a26023f839f9853f860d4b7f205dd0c74e [file] [log] [blame]
/*
*
* (C) COPYRIGHT 2010-2015 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.
*
*/
/*
* A core availability policy implementing demand core rotation
*/
#ifndef MALI_KBASE_PM_CA_DEMAND_H
#define MALI_KBASE_PM_CA_DEMAND_H
#include <linux/workqueue.h>
/**
* struct kbasep_pm_ca_policy_demand - Private structure for demand ca policy
*
* This contains data that is private to the demand core availability
* policy.
*
* @cores_desired: Cores that the policy wants to be available
* @cores_enabled: Cores that the policy is currently returning as available
* @cores_used: Cores currently powered or transitioning
* @core_change_timer: Timer for changing desired core mask
*/
#define MALI_CA_TIMER 1
struct kbasep_pm_ca_policy_demand {
u64 cores_desired;
u64 cores_enabled;
u64 cores_used;
#ifdef MALI_CA_TIMER
struct timer_list core_change_timer;
#else
struct work_struct wq_work;
#endif
};
extern const struct kbase_pm_ca_policy kbase_pm_ca_demand_policy_ops;
extern int mali_perf_set_num_pp_cores(int cores);
#endif /* MALI_KBASE_PM_CA_DEMAND_H */