devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tao Wang <kevin.wangtao@hisilicon.com>
To: rui.zhang@intel.com, edubezval@gmail.com, robh+dt@kernel.org,
	mark.rutland@arm.com, xuwei5@hisilicon.com,
	catalin.marinas@arm.com, will.deacon@arm.com
Cc: leo.yan@linaro.org, lonela.Voinescu@arm.com,
	Valentin.Schneider@arm.com, vincent.guittot@linaro.org,
	daniel.lezcano@linaro.org, sunzhaosheng@hisilicon.com,
	gengyanping@hisilicon.com, linux-pm@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Kevin Wangtao <kevin.wangtao@linaro.org>
Subject: [PATCH 2/9] thermal/drivers/hisi: use round up step value
Date: Fri, 22 Sep 2017 17:42:05 +0800	[thread overview]
Message-ID: <1506073332-92438-3-git-send-email-kevin.wangtao@hisilicon.com> (raw)
In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="Y", Size: 2694 bytes --]

From: Kevin Wangtao <kevin.wangtao@linaro.org>

Use round up divide to ensure the programmed value of threshold and
lag not less than we set, and in order to keep the accuracy while
using round up divide, the step value should also be a round up value.
Then there is no need to use hisi_thermal_round_temp.

Signed-off-by: Kevin Wangtao <kevin.wangtao@linaro.org>
---
 drivers/thermal/hisi_thermal.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c
index c43e3df..c8b651d 100644
--- a/drivers/thermal/hisi_thermal.c
+++ b/drivers/thermal/hisi_thermal.c
@@ -40,7 +40,7 @@
 
 #define HISI_TEMP_BASE			(-60000)
 #define HISI_TEMP_RESET			(100000)
-#define HISI_TEMP_STEP			(784)
+#define HISI_TEMP_STEP			(785)
 #define HISI_TEMP_LAG			(3500)
 
 #define HISI_MAX_SENSORS		4
@@ -63,19 +63,19 @@ struct hisi_thermal_data {
 /*
  * The temperature computation on the tsensor is as follow:
  *	Unit: millidegree Celsius
- *	Step: 255/200 (0.7843)
+ *	Step: 200/255 (0.7843)
  *	Temperature base: -60°C
  *
- * The register is programmed in temperature steps, every step is 784
+ * The register is programmed in temperature steps, every step is 785
  * millidegree and begins at -60 000 m°C
  *
  * The temperature from the steps:
  *
- *	Temp = TempBase + (steps x 784)
+ *	Temp = TempBase + (steps x 785)
  *
  * and the steps from the temperature:
  *
- *	steps = (Temp - TempBase) / 784
+ *	steps = (Temp - TempBase) / 785
  *
  */
 static inline int hisi_thermal_step_to_temp(int step)
@@ -85,13 +85,7 @@ static inline int hisi_thermal_step_to_temp(int step)
 
 static inline int hisi_thermal_temp_to_step(int temp)
 {
-	return (temp - HISI_TEMP_BASE) / HISI_TEMP_STEP;
-}
-
-static inline int hisi_thermal_round_temp(int temp)
-{
-	return hisi_thermal_step_to_temp(
-		hisi_thermal_temp_to_step(temp));
+	return DIV_ROUND_UP(temp - HISI_TEMP_BASE, HISI_TEMP_STEP);
 }
 
 /*
@@ -127,7 +121,7 @@ static inline int hisi_thermal_round_temp(int temp)
  */
 static inline void hisi_thermal_set_lag(void __iomem *addr, int value)
 {
-	writel((value / HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG);
+	writel(DIV_ROUND_UP(value, HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG);
 }
 
 static inline void hisi_thermal_alarm_clear(void __iomem *addr, int value)
@@ -274,7 +268,7 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev,
 
 	for (i = 0; i < of_thermal_get_ntrips(sensor->tzd); i++) {
 		if (trip[i].type == THERMAL_TRIP_PASSIVE) {
-			sensor->thres_temp = hisi_thermal_round_temp(trip[i].temperature);
+			sensor->thres_temp = trip[i].temperature;
 			break;
 		}
 	}
-- 
2.8.1

  parent reply	other threads:[~2017-09-22  9:42 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-22  9:42 [PATCH 0/9] add support for Hi3660 tsensor Tao Wang
2017-09-22  9:42 ` [PATCH 1/9] thermal/drivers/hisi: move clk operation to related function Tao Wang
2017-09-22  9:42 ` Tao Wang [this message]
2017-09-22  9:42 ` [PATCH 3/9] thermal/drivers/hisi: put platform code together Tao Wang
2017-09-22  9:42 ` [PATCH 4/9] thermal/drivers/hisi: add platform prefix to function name Tao Wang
2017-09-22  9:42 ` [PATCH 5/9] thermal/drivers/hisi: perpare to add support for other hisi platform Tao Wang
2017-09-22  9:42 ` [PATCH 6/9] thermal/drivers/hisi: add support for multi temp threshold Tao Wang
2017-09-22  9:42 ` [PATCH 7/9] dt-bindings: Document the hi3660 thermal sensor binding Tao Wang
     [not found]   ` <1506073332-92438-8-git-send-email-kevin.wangtao-C8/M+/jPZTeaMJb+Lgu22Q@public.gmane.org>
2017-10-03 21:59     ` Rob Herring
2017-09-22  9:42 ` [PATCH 8/9] thermal/drivers/hisi: add support for hi3660 SoC Tao Wang
2017-09-22  9:42 ` [PATCH 9/9] arm64: dts: register Hi3660's thermal sensor Tao Wang
2017-10-02 19:06   ` Daniel Lezcano
2017-10-09  2:38     ` Wangtao (Kevin, Kirin)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1506073332-92438-3-git-send-email-kevin.wangtao@hisilicon.com \
    --to=kevin.wangtao@hisilicon.com \
    --cc=Valentin.Schneider@arm.com \
    --cc=catalin.marinas@arm.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=edubezval@gmail.com \
    --cc=gengyanping@hisilicon.com \
    --cc=kevin.wangtao@linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lonela.Voinescu@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=rui.zhang@intel.com \
    --cc=sunzhaosheng@hisilicon.com \
    --cc=vincent.guittot@linaro.org \
    --cc=will.deacon@arm.com \
    --cc=xuwei5@hisilicon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).