All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ansuel Smith <ansuelsmth@gmail.com>
To: Thara Gopinath <thara.gopinath@linaro.org>
Cc: Ansuel Smith <ansuelsmth@gmail.com>,
	Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	Amit Kucheria <amitk@kernel.org>, Zhang Rui <rui.zhang@intel.com>,
	Daniel Lezcano <daniel.lezcano@linaro.org>,
	Rob Herring <robh+dt@kernel.org>,
	linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v11 5/9] drivers: thermal: tsens: Fix bug in sensor enable for msm8960
Date: Fri, 19 Mar 2021 01:52:23 +0100	[thread overview]
Message-ID: <20210319005228.1250-6-ansuelsmth@gmail.com> (raw)
In-Reply-To: <20210319005228.1250-1-ansuelsmth@gmail.com>

Device based on tsens VER_0 contains a hardware bug that results in some
problem with sensor enablement. Sensor id 6-11 can't be enabled
selectively and all of them must be enabled in one step.

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

diff --git a/drivers/thermal/qcom/tsens-8960.c b/drivers/thermal/qcom/tsens-8960.c
index 86585f439985..bdc64d4188bf 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 */
@@ -126,17 +126,35 @@ static int resume_8960(struct tsens_priv *priv)
 static int enable_8960(struct tsens_priv *priv, int id)
 {
 	int ret;
-	u32 reg, mask;
+	u32 reg, mask = BIT(id);
 
 	ret = regmap_read(priv->tm_map, CNTL_ADDR, &reg);
 	if (ret)
 		return ret;
 
-	mask = BIT(id + SENSOR0_SHIFT);
+	/* HARDWARE BUG:
+	 * On platform with more than 6 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);
+
+		/* Sensors already enabled. Skip. */
+		if ((reg & mask) == mask)
+			return 0;
+	}
+
+	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.2


  parent reply	other threads:[~2021-03-19  0:53 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-19  0:52 [PATCH v11 0/9] Add support for ipq8064 tsens Ansuel Smith
2021-03-19  0:52 ` [PATCH v11 1/9] drivers: thermal: tsens: Add VER_0 tsens version Ansuel Smith
2021-03-19 13:11   ` Thara Gopinath
2021-03-19 13:28     ` Ansuel Smith
2021-03-19 14:11       ` Thara Gopinath
2021-03-19  0:52 ` [PATCH v11 2/9] drivers: thermal: tsens: Don't hardcode sensor slope Ansuel Smith
2021-03-19  0:52 ` [PATCH v11 3/9] drivers: thermal: tsens: Convert msm8960 to reg_field Ansuel Smith
2021-03-19  0:52 ` [PATCH v11 4/9] drivers: thermal: tsens: Use init_common for msm8960 Ansuel Smith
2021-03-19  0:52 ` Ansuel Smith [this message]
2021-03-19 13:11   ` [PATCH v11 5/9] drivers: thermal: tsens: Fix bug in sensor enable " Thara Gopinath
2021-03-22 10:47   ` Marc Gonzalez
2021-03-19  0:52 ` [PATCH v11 6/9] drivers: thermal: tsens: Replace custom 8960 apis with generic apis Ansuel Smith
2021-03-19 13:12   ` Thara Gopinath
2021-03-19  0:52 ` [PATCH v11 7/9] drivers: thermal: tsens: Drop unused define for msm8960 Ansuel Smith
2021-03-19 13:12   ` Thara Gopinath
2021-03-19  0:52 ` [PATCH v11 8/9] drivers: thermal: tsens: Add support for ipq8064-tsens Ansuel Smith
2021-03-19  0:52 ` [PATCH v11 9/9] dt-bindings: thermal: tsens: Document ipq8064 bindings Ansuel Smith

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=20210319005228.1250-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 \
    --cc=thara.gopinath@linaro.org \
    /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.