summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSai Charan Gurrappadi <sgurrappadi@nvidia.com>2012-08-10 15:13:00 -0700
committerLokesh Pathak <lpathak@nvidia.com>2012-08-14 06:28:18 -0700
commitb1514438f2cdefae817328ff69f8b6dc5f2d878b (patch)
tree0d268314ff5d17deb9785cb2a391b3b9cae00175
parent61a9d84f74163c7f2dbc6868836b916903724f3c (diff)
ARM: tegra: Ignore PmQos when disabled
The cpu hotplug drivers should only bother updating state or switching to the G cluster if the driver is not disabled Bug 1032096 Change-Id: Ice938b094bbf48fef47afa3915b1a48362fb256d Signed-off-by: Sai Charan Gurrappadi <sgurrappadi@nvidia.com> Reviewed-on: http://git-master/r/122859 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/cpu-tegra3.c2
-rw-r--r--arch/arm/mach-tegra/cpuquiet.c12
2 files changed, 12 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/cpu-tegra3.c b/arch/arm/mach-tegra/cpu-tegra3.c
index ec63622b4705..c0d21bfa816a 100644
--- a/arch/arm/mach-tegra/cpu-tegra3.c
+++ b/arch/arm/mach-tegra/cpu-tegra3.c
@@ -360,7 +360,7 @@ static int min_cpus_notify(struct notifier_block *nb, unsigned long n, void *p)
{
mutex_lock(tegra3_cpu_lock);
- if ((n >= 1) && is_lp_cluster()) {
+ if ((n >= 1) && is_lp_cluster() && !no_lp) {
/* make sure cpu rate is within g-mode range before switching */
unsigned int speed = max((unsigned long)tegra_getspeed(0),
clk_get_min_rate(cpu_g_clk) / 1000);
diff --git a/arch/arm/mach-tegra/cpuquiet.c b/arch/arm/mach-tegra/cpuquiet.c
index ed197b1e6c6f..87aebfe7badb 100644
--- a/arch/arm/mach-tegra/cpuquiet.c
+++ b/arch/arm/mach-tegra/cpuquiet.c
@@ -188,6 +188,9 @@ static void min_max_constraints_workfunc(struct work_struct *work)
int max_cpus = pm_qos_request(PM_QOS_MAX_ONLINE_CPUS) ? : 4;
int min_cpus = pm_qos_request(PM_QOS_MIN_ONLINE_CPUS);
+ if (cpq_state == TEGRA_CPQ_DISABLED)
+ return;
+
if (is_lp_cluster())
return;
@@ -219,10 +222,14 @@ static int min_cpus_notify(struct notifier_block *nb, unsigned long n, void *p)
{
bool g_cluster = false;
+ if (cpq_state == TEGRA_CPQ_DISABLED)
+ return NOTIFY_OK;
+
mutex_lock(tegra3_cpu_lock);
if ((n >= 1) && is_lp_cluster()) {
- /* make sure cpu rate is within g-mode range before switching */
+ /* make sure cpu rate is within g-mode
+ * range before switching */
unsigned long speed = max((unsigned long)tegra_getspeed(0),
clk_get_min_rate(cpu_g_clk) / 1000);
tegra_update_cpu_speed(speed);
@@ -244,6 +251,9 @@ static int min_cpus_notify(struct notifier_block *nb, unsigned long n, void *p)
static int max_cpus_notify(struct notifier_block *nb, unsigned long n, void *p)
{
+ if (cpq_state == TEGRA_CPQ_DISABLED)
+ return NOTIFY_OK;
+
if (n < num_online_cpus())
schedule_work(&minmax_work);