blob: 81a4f72f78f84c4f5511e1012557dcf52129dbf7 [file] [log] [blame]
/*
* Copyright (C) 2016 Samsung Electronics, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/mutex.h>
#include <linux/pm_qos.h>
#include "tz_boost.h"
#include "tz_hotplug.h"
static unsigned int tz_boost_is_active;
static struct pm_qos_request tz_boost_qos;
static unsigned int cpu_boost_mask;
static DEFINE_MUTEX(tz_boost_lock);
void tz_boost_set_boost_mask(unsigned int big_cpus_mask)
{
cpu_boost_mask = big_cpus_mask;
}
void tz_boost_enable(void)
{
tzdev_update_nwd_cpu_mask(cpu_boost_mask);
mutex_lock(&tz_boost_lock);
if (tz_boost_is_active) {
mutex_unlock(&tz_boost_lock);
return;
}
pm_qos_add_request(&tz_boost_qos, TZ_BOOST_CPU_FREQ_MIN,
TZ_BOOST_CPU_FREQ_MAX_DEFAULT_VALUE);
tz_boost_is_active = 1;
mutex_unlock(&tz_boost_lock);
}
void tz_boost_disable(void)
{
tzdev_update_nwd_cpu_mask(0);
mutex_lock(&tz_boost_lock);
if (!tz_boost_is_active) {
mutex_unlock(&tz_boost_lock);
return;
}
tz_boost_is_active = 0;
pm_qos_remove_request(&tz_boost_qos);
mutex_unlock(&tz_boost_lock);
}