Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751547AbdINXZi (ORCPT ); Thu, 14 Sep 2017 19:25:38 -0400 Received: from mail-wm0-f45.google.com ([74.125.82.45]:50232 "EHLO mail-wm0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751392AbdINXZg (ORCPT ); Thu, 14 Sep 2017 19:25:36 -0400 X-Google-Smtp-Source: AOwi7QAVA+as9KYqZe+o2kSFFGM5rmhhfWM0plrom5ZyqoMcjFbQhHj9jrhsZv+5J/Z2BllUGStX0VtiyQnGp+EDTgw= MIME-Version: 1.0 In-Reply-To: <20170914231928.45542-1-code@mmayer.net> References: <20170914231928.45542-1-code@mmayer.net> From: Markus Mayer Date: Thu, 14 Sep 2017 16:25:34 -0700 Message-ID: Subject: Re: [PATCH] thermal: brcmstb: disable trip points properly when needed To: Markus Mayer Cc: Zhang Rui , Eduardo Valentin , Doug Berger , Brian Norris , Florian Fainelli , Dan Carpenter , Colin King , Power Management List , ARM Kernel List , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2571 Lines: 66 On 14 September 2017 at 16:19, Markus Mayer wrote: > From: Markus Mayer > > The code checking for low and high temperature points was still based > on an earlier implementation of the driver. It wasn't working properly > with the data types currently being used. > > We fix this by disabling the high trip point if our high temperature is > INT_MAX and disabling the low trip point if our low temperature is -INT_MAX > (or lower). > > Signed-off-by: Markus Mayer > --- > > Here is my patch for the issue described. Please let me know if I should be > squashing this into the driver patch and re-submit the entire series. Looks like my attempt at adding this patch to the existing thread may not have worked out so well. Here's a link: https://marc.info/?l=linux-pm&m=150472721929919&w=2 > drivers/thermal/broadcom/brcmstb_thermal.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/thermal/broadcom/brcmstb_thermal.c b/drivers/thermal/broadcom/brcmstb_thermal.c > index 87b8e7a..1919f91 100644 > --- a/drivers/thermal/broadcom/brcmstb_thermal.c > +++ b/drivers/thermal/broadcom/brcmstb_thermal.c > @@ -277,22 +277,23 @@ static int brcmstb_set_trips(void *data, int low, int high) > > dev_dbg(priv->dev, "set trips %d <--> %d\n", low, high); > > - if (low) { > - if (low > INT_MAX) > - low = INT_MAX; > + /* > + * Disable low-temp if "low" is too small. As per thermal framework > + * API, we use -INT_MAX rather than INT_MIN. > + */ > + if (low <= -INT_MAX) { > + avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0); > + } else { > avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_LOW, low); > avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 1); > - } else { > - avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_LOW, 0); > } > > - if (high < ULONG_MAX) { > - if (high > INT_MAX) > - high = INT_MAX; > + /* Disable high-temp if "high" is too big. */ > + if (high == INT_MAX) { > + avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0); > + } else { > avs_tmon_set_trip_temp(priv, TMON_TRIP_TYPE_HIGH, high); > avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 1); > - } else { > - avs_tmon_trip_enable(priv, TMON_TRIP_TYPE_HIGH, 0); > } > > return 0; > -- > 2.7.4 >