All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ansuel Smith <ansuelsmth@gmail.com>
To: Amit Kucheria <amitk@kernel.org>
Cc: Ansuel Smith <ansuelsmth@gmail.com>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Zhang Rui <rui.zhang@intel.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	linux-pm@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v10 5/8] drivers: thermal: tsens: Fix bug in sensor enable for msm8960
Date: Wed, 17 Feb 2021 20:40:07 +0100	[thread overview]
Message-ID: <20210217194011.22649-6-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20210217194011.22649-1-ansuelsmth@gmail.com>

It's present a hardware bug in tsens VER_0 where if sensors upper to id
6 are enabled selectively, underfined results are expected. Fix this by
enabling all the remaining sensor in one step.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 drivers/thermal/qcom/tsens-8960.c | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c
index 86585f439985..248aaa65b5b0 100644
--- a/drivers/thermal/qcom/tsens-8960.c
+++ b/drivers/thermal/qcom/tsens-8960.c
@@ -27,9 +27,9 @@
 #define EN			BIT(0)
 #define SW_RST			BIT(1)
 #define SENSOR0_EN		BIT(3)
+#define MEASURE_PERIOD		BIT(18)
 #define SLP_CLK_ENA		BIT(26)
 #define SLP_CLK_ENA_8660	BIT(24)
-#define MEASURE_PERIOD		1
 #define SENSOR0_SHIFT		3
 
 /* INT_STATUS_ADDR bitmasks */
@@ -132,11 +132,26 @@ static int enable_8960(struct tsens_priv *priv, int id)
 	if (ret)
 		return ret;
 
-	mask = BIT(id + SENSOR0_SHIFT);
+	/* HARDWARE BUG:
+	 * On platform with more than 5 sensors, all the remaining
+	 * sensors needs to be enabled all togheder or underfined
+	 * results are expected. (Sensor 6-7 disabled, Sensor 3
+	 * disabled...) In the original driver, all the sensors
+	 * are enabled in one step hence this bug is not triggered.
+	 */
+	if (id > 5)
+		mask = GENMASK(10, 6);
+	else
+		mask = BIT(id);
+
+	mask <<= SENSOR0_SHIFT;
+
 	ret = regmap_write(priv->tm_map, CNTL_ADDR, reg | SW_RST);
 	if (ret)
 		return ret;
 
+	reg |= MEASURE_PERIOD;
+
 	if (priv->num_sensors > 1)
 		reg |= mask | SLP_CLK_ENA | EN;
 	else
-- 
2.30.0


  parent reply	other threads:[~2021-02-18  0:58 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-17 19:40 [PATCH v10 0/8] Add support for ipq8064 tsens Ansuel Smith
2021-02-17 19:40 ` [PATCH v10 1/8] drivers: thermal: tsens: Add VER_0 tsens version Ansuel Smith
2021-03-18 21:15   ` Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 2/8] drivers: thermal: tsens: Don't hardcode sensor slope Ansuel Smith
2021-03-18 21:15   ` Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 3/8] drivers: thermal: tsens: Convert msm8960 to reg_field Ansuel Smith
2021-03-18 21:15   ` Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 4/8] drivers: thermal: tsens: Use init_common for msm8960 Ansuel Smith
2021-03-18 21:15   ` Thara Gopinath
2021-02-17 19:40 ` Ansuel Smith [this message]
2021-03-18 21:15   ` [PATCH v10 5/8] drivers: thermal: tsens: Fix bug in sensor enable " Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 6/8] drivers: thermal: tsens: Use get_temp_common " Ansuel Smith
2021-03-18 21:15   ` Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 7/8] drivers: thermal: tsens: Add support for ipq8064-tsens Ansuel Smith
2021-03-18 21:14   ` Thara Gopinath
2021-02-17 19:40 ` [PATCH v10 8/8] dt-bindings: thermal: tsens: Document ipq8064 bindings Ansuel Smith
2021-03-05 15:24   ` Rob Herring
2021-03-10 12:19 ` [PATCH v10 0/8] Add support for ipq8064 tsens Daniel Lezcano
2021-03-10 13:32   ` Thara Gopinath
2021-03-10 13:40     ` Daniel Lezcano

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=20210217194011.22649-6-ansuelsmth@gmail.com \
    --to=ansuelsmth@gmail.com \
    --cc=agross@kernel.org \
    --cc=amitk@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=rui.zhang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.