From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: rafael@kernel.org, daniel.lezcano@linaro.org,
shawnguo@kernel.org, s.hauer@pengutronix.de
Cc: amitk@kernel.org, rui.zhang@intel.com, andrew.smirnov@gmail.com,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
linux-arm-kernel@lists.infradead.org, alice.guo@nxp.com,
Peng Fan <peng.fan@nxp.com>
Subject: [PATCH 2/3] thermal: qoriq_thermal: only enable supported sensors
Date: Tue, 16 May 2023 16:37:45 +0800 [thread overview]
Message-ID: <20230516083746.63436-3-peng.fan@oss.nxp.com> (raw)
In-Reply-To: <20230516083746.63436-1-peng.fan@oss.nxp.com>
From: Peng Fan <peng.fan@nxp.com>
There are MAX 16 sensors, but not all of them supported. Such as
i.MX8MQ, there are only 3 sensors. Enabling all 16 sensors will
touch reserved bits from i.MX8MQ reference mannual, and TMU will stuck,
temperature will not update anymore.
Fixes: 45038e03d633 ("thermal: qoriq: Enable all sensors before registering them")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/thermal/qoriq_thermal.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c
index b806a0929459..53748c4a5be1 100644
--- a/drivers/thermal/qoriq_thermal.c
+++ b/drivers/thermal/qoriq_thermal.c
@@ -31,7 +31,6 @@
#define TMR_DISABLE 0x0
#define TMR_ME 0x80000000
#define TMR_ALPF 0x0c000000
-#define TMR_MSITE_ALL GENMASK(15, 0)
#define REGS_TMTMIR 0x008 /* Temperature measurement interval Register */
#define TMTMIR_DEFAULT 0x0000000f
@@ -105,6 +104,11 @@ static int tmu_get_temp(struct thermal_zone_device *tz, int *temp)
* within sensor range. TEMP is an 9 bit value representing
* temperature in KelVin.
*/
+
+ regmap_read(qdata->regmap, REGS_TMR, &val);
+ if (!(val & TMR_ME))
+ return -EAGAIN;
+
if (regmap_read_poll_timeout(qdata->regmap,
REGS_TRITSR(qsensor->id),
val,
@@ -128,15 +132,7 @@ static const struct thermal_zone_device_ops tmu_tz_ops = {
static int qoriq_tmu_register_tmu_zone(struct device *dev,
struct qoriq_tmu_data *qdata)
{
- int id;
-
- if (qdata->ver == TMU_VER1) {
- regmap_write(qdata->regmap, REGS_TMR,
- TMR_MSITE_ALL | TMR_ME | TMR_ALPF);
- } else {
- regmap_write(qdata->regmap, REGS_V2_TMSR, TMR_MSITE_ALL);
- regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2);
- }
+ int id, sites = 0;
for (id = 0; id < SITES_MAX; id++) {
struct thermal_zone_device *tzd;
@@ -153,14 +149,26 @@ static int qoriq_tmu_register_tmu_zone(struct device *dev,
if (ret == -ENODEV)
continue;
- regmap_write(qdata->regmap, REGS_TMR, TMR_DISABLE);
return ret;
}
+ if (qdata->ver == TMU_VER1)
+ sites |= 0x1 << (15 - id);
+ else
+ sites |= 0x1 << id;
+
if (devm_thermal_add_hwmon_sysfs(dev, tzd))
dev_warn(dev,
"Failed to add hwmon sysfs attributes\n");
+ }
+ if (sites) {
+ if (qdata->ver == TMU_VER1) {
+ regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF | sites);
+ } else {
+ regmap_write(qdata->regmap, REGS_V2_TMSR, sites);
+ regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2);
+ }
}
return 0;
--
2.37.1
WARNING: multiple messages have this Message-ID (diff)
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: rafael@kernel.org, daniel.lezcano@linaro.org,
shawnguo@kernel.org, s.hauer@pengutronix.de
Cc: amitk@kernel.org, rui.zhang@intel.com, andrew.smirnov@gmail.com,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com,
linux-arm-kernel@lists.infradead.org, alice.guo@nxp.com,
Peng Fan <peng.fan@nxp.com>
Subject: [PATCH 2/3] thermal: qoriq_thermal: only enable supported sensors
Date: Tue, 16 May 2023 16:37:45 +0800 [thread overview]
Message-ID: <20230516083746.63436-3-peng.fan@oss.nxp.com> (raw)
In-Reply-To: <20230516083746.63436-1-peng.fan@oss.nxp.com>
From: Peng Fan <peng.fan@nxp.com>
There are MAX 16 sensors, but not all of them supported. Such as
i.MX8MQ, there are only 3 sensors. Enabling all 16 sensors will
touch reserved bits from i.MX8MQ reference mannual, and TMU will stuck,
temperature will not update anymore.
Fixes: 45038e03d633 ("thermal: qoriq: Enable all sensors before registering them")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
drivers/thermal/qoriq_thermal.c | 30 +++++++++++++++++++-----------
1 file changed, 19 insertions(+), 11 deletions(-)
diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c
index b806a0929459..53748c4a5be1 100644
--- a/drivers/thermal/qoriq_thermal.c
+++ b/drivers/thermal/qoriq_thermal.c
@@ -31,7 +31,6 @@
#define TMR_DISABLE 0x0
#define TMR_ME 0x80000000
#define TMR_ALPF 0x0c000000
-#define TMR_MSITE_ALL GENMASK(15, 0)
#define REGS_TMTMIR 0x008 /* Temperature measurement interval Register */
#define TMTMIR_DEFAULT 0x0000000f
@@ -105,6 +104,11 @@ static int tmu_get_temp(struct thermal_zone_device *tz, int *temp)
* within sensor range. TEMP is an 9 bit value representing
* temperature in KelVin.
*/
+
+ regmap_read(qdata->regmap, REGS_TMR, &val);
+ if (!(val & TMR_ME))
+ return -EAGAIN;
+
if (regmap_read_poll_timeout(qdata->regmap,
REGS_TRITSR(qsensor->id),
val,
@@ -128,15 +132,7 @@ static const struct thermal_zone_device_ops tmu_tz_ops = {
static int qoriq_tmu_register_tmu_zone(struct device *dev,
struct qoriq_tmu_data *qdata)
{
- int id;
-
- if (qdata->ver == TMU_VER1) {
- regmap_write(qdata->regmap, REGS_TMR,
- TMR_MSITE_ALL | TMR_ME | TMR_ALPF);
- } else {
- regmap_write(qdata->regmap, REGS_V2_TMSR, TMR_MSITE_ALL);
- regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2);
- }
+ int id, sites = 0;
for (id = 0; id < SITES_MAX; id++) {
struct thermal_zone_device *tzd;
@@ -153,14 +149,26 @@ static int qoriq_tmu_register_tmu_zone(struct device *dev,
if (ret == -ENODEV)
continue;
- regmap_write(qdata->regmap, REGS_TMR, TMR_DISABLE);
return ret;
}
+ if (qdata->ver == TMU_VER1)
+ sites |= 0x1 << (15 - id);
+ else
+ sites |= 0x1 << id;
+
if (devm_thermal_add_hwmon_sysfs(dev, tzd))
dev_warn(dev,
"Failed to add hwmon sysfs attributes\n");
+ }
+ if (sites) {
+ if (qdata->ver == TMU_VER1) {
+ regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF | sites);
+ } else {
+ regmap_write(qdata->regmap, REGS_V2_TMSR, sites);
+ regmap_write(qdata->regmap, REGS_TMR, TMR_ME | TMR_ALPF_V2);
+ }
}
return 0;
--
2.37.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-05-16 8:33 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-16 8:37 [PATCH 0/3] thermal: qoriq_thermal: support TMU 2.1 Peng Fan (OSS)
2023-05-16 8:37 ` Peng Fan (OSS)
2023-05-16 8:37 ` [PATCH 1/3] thermal: qoriq_thermal: No need to program site adjustment register Peng Fan (OSS)
2023-05-16 8:37 ` Peng Fan (OSS)
2023-05-16 8:37 ` Peng Fan (OSS) [this message]
2023-05-16 8:37 ` [PATCH 2/3] thermal: qoriq_thermal: only enable supported sensors Peng Fan (OSS)
2023-05-31 11:03 ` Daniel Lezcano
2023-05-31 11:03 ` Daniel Lezcano
2023-05-31 12:05 ` Peng Fan
2023-05-31 12:05 ` Peng Fan
2023-05-31 12:35 ` Daniel Lezcano
2023-05-31 12:35 ` Daniel Lezcano
2023-05-31 13:00 ` Peng Fan
2023-05-31 13:00 ` Peng Fan
2023-06-01 9:52 ` Peng Fan
2023-06-01 9:52 ` Peng Fan
2023-06-02 13:11 ` Daniel Lezcano
2023-06-02 13:11 ` Daniel Lezcano
2023-06-07 6:01 ` Sebastian Krzyszkowiak
2023-06-07 6:01 ` Sebastian Krzyszkowiak
2023-06-07 8:28 ` Daniel Lezcano
2023-06-07 8:28 ` Daniel Lezcano
2023-06-07 17:42 ` Sebastian Krzyszkowiak
2023-06-07 17:42 ` Sebastian Krzyszkowiak
2023-06-07 19:10 ` Daniel Lezcano
2023-06-07 19:10 ` Daniel Lezcano
2023-06-12 6:23 ` Sebastian Krzyszkowiak
2023-06-15 2:29 ` Peng Fan
2023-06-15 2:29 ` Peng Fan
2023-06-15 2:53 ` Sebastian Krzyszkowiak
2023-06-15 2:53 ` Sebastian Krzyszkowiak
2023-06-15 4:04 ` Peng Fan
2023-06-15 4:04 ` Peng Fan
2023-06-15 10:36 ` Daniel Lezcano
2023-06-15 10:36 ` Daniel Lezcano
2023-06-15 11:48 ` Daniel Lezcano
2023-06-15 11:48 ` Daniel Lezcano
2023-06-15 12:07 ` Peng Fan
2023-06-15 12:07 ` Peng Fan
2023-06-15 13:49 ` Daniel Lezcano
2023-06-15 13:49 ` Daniel Lezcano
2023-06-16 1:06 ` Peng Fan
2023-06-16 1:06 ` Peng Fan
2023-06-16 9:01 ` Daniel Lezcano
2023-06-16 9:01 ` Daniel Lezcano
2023-05-16 8:37 ` [PATCH 3/3] thermal: qoriq: support version 2.1 Peng Fan (OSS)
2023-05-16 8:37 ` Peng Fan (OSS)
2023-05-23 1:59 ` [PATCH 0/3] thermal: qoriq_thermal: support TMU 2.1 Alice Guo
2023-05-23 1:59 ` Alice Guo
2023-05-29 3:35 ` Peng Fan
2023-05-29 3:35 ` Peng Fan
2023-06-16 9:02 ` Daniel Lezcano
2023-06-16 9:02 ` 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=20230516083746.63436-3-peng.fan@oss.nxp.com \
--to=peng.fan@oss.nxp.com \
--cc=alice.guo@nxp.com \
--cc=amitk@kernel.org \
--cc=andrew.smirnov@gmail.com \
--cc=daniel.lezcano@linaro.org \
--cc=festevam@gmail.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=peng.fan@nxp.com \
--cc=rafael@kernel.org \
--cc=rui.zhang@intel.com \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.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.