From patchwork Tue Mar 26 13:29:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuxuan Shui X-Patchwork-Id: 2336361 X-Patchwork-Delegate: rui.zhang@intel.com Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id BA199400E6 for ; Tue, 26 Mar 2013 13:30:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934143Ab3CZNa0 (ORCPT ); Tue, 26 Mar 2013 09:30:26 -0400 Received: from mail-pa0-f52.google.com ([209.85.220.52]:55440 "EHLO mail-pa0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933808Ab3CZNaZ (ORCPT ); Tue, 26 Mar 2013 09:30:25 -0400 Received: by mail-pa0-f52.google.com with SMTP id fb10so43723pad.11 for ; Tue, 26 Mar 2013 06:30:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=LYWRahOocVjc32vcSQAwINKuFn36xbv+4Fg6yTenxXE=; b=LmUR+Nft4nE7PDE1enEVKn5+OyCBLo/ljDdAdUgrfq0oEV3b5k4Uxzwb9ApmtZzb25 tk7CCirdfry44gdFsLUvTJiwlhzB9uDPuUtWPJ9uZNyLr2IAXnqdpAFUHub1fh+N6PTt O8wFwxPGLu58LVL0C9QAX64LnAtIp6uNPSbvGwZylhFir0pJHwDzH5eAtmn6S4XmZYeg rBGp5FtyUQeF2PeAt1uW6CoQtk+1QqHTXainHNpGCCB92XFQ3K/rt9EBM7DV0S9nNyx/ zoR4bY0ZU092eqHz52irfVFjJGBtIS7l47MEvJ2N840NkKHkEG4v+X+jLkOtF6hhptSU q6tg== X-Received: by 10.68.241.132 with SMTP id wi4mr13828479pbc.8.1364304625081; Tue, 26 Mar 2013 06:30:25 -0700 (PDT) Received: from sraven.lan (nialv7.xen.prgmr.com. [71.19.156.202]) by mx.google.com with ESMTPS id vd4sm17529907pbc.35.2013.03.26.06.30.20 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 26 Mar 2013 06:30:23 -0700 (PDT) From: Yuxuan Shui To: rui.zhang@intel.com Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Yuxuan Shui Subject: [PATCH] Thermal: Don't resolve THERMAL_NO_LIMIT to max_state. Date: Tue, 26 Mar 2013 21:29:49 +0800 Message-Id: <1364304589-24335-1-git-send-email-yshuiv7@gmail.com> X-Mailer: git-send-email 1.8.2 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org max_state may change at runtime, for example, when loading/unloading cpufreq policy. Signed-off-by: Yuxuan Shui --- drivers/thermal/step_wise.c | 11 ++++++++--- drivers/thermal/thermal_sys.c | 5 ++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c index 407cde3..2edb7e9 100644 --- a/drivers/thermal/step_wise.c +++ b/drivers/thermal/step_wise.c @@ -54,18 +54,23 @@ static unsigned long get_target_state(struct thermal_instance *instance, { struct thermal_cooling_device *cdev = instance->cdev; unsigned long cur_state; + unsigned long max_state; + int upper; cdev->ops->get_cur_state(cdev, &cur_state); + cdev->ops->get_max_state(cdev, &max_state); + + upper = instance->upper == THERMAL_NO_LIMIT ? max_state : instance->upper; switch (trend) { case THERMAL_TREND_RAISING: if (throttle) - cur_state = cur_state < instance->upper ? - (cur_state + 1) : instance->upper; + cur_state = cur_state < upper ? + (cur_state + 1) : upper; break; case THERMAL_TREND_RAISE_FULL: if (throttle) - cur_state = instance->upper; + cur_state = upper; break; case THERMAL_TREND_DROPPING: if (cur_state == instance->lower) { diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c index 5b7863a..f02e4d4 100644 --- a/drivers/thermal/thermal_sys.c +++ b/drivers/thermal/thermal_sys.c @@ -1134,11 +1134,10 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz, cdev->ops->get_max_state(cdev, &max_state); - /* lower default 0, upper default max_state */ + /* lower default 0 */ lower = lower == THERMAL_NO_LIMIT ? 0 : lower; - upper = upper == THERMAL_NO_LIMIT ? max_state : upper; - if (lower > upper || upper > max_state) + if (lower > upper || (upper != THERMAL_NO_LIMIT && upper > max_state)) return -EINVAL; dev =