summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-10-01 14:23:45 +0100
committerMark Brown <broonie@kernel.org>2026-10-01 14:23:45 +0100
commitfcdd3adbc668937977cdeed4a1f9a2ca89ef01b8 (patch)
tree2459164e777b301c7a4e45bf2afafa7176d5989b
parentd6f35d31e25395dd28f453dcfc3bcfab718b3bf0 (diff)
parente856ca3013b3074fd07cb81c90b1de332f69153c (diff)
downloadlinux-next-fcdd3adbc668937977cdeed4a1f9a2ca89ef01b8.tar.gz
linux-next-fcdd3adbc668937977cdeed4a1f9a2ca89ef01b8.zip
Merge branch 'thermal/linux-next' of https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git
-rw-r--r--Documentation/devicetree/bindings/thermal/qcom,pm8775-mbg-tm.yaml7
-rw-r--r--Documentation/devicetree/bindings/thermal/renesas,r9a08g045-tsu.yaml4
-rw-r--r--Documentation/devicetree/bindings/thermal/ti,omap-bandgap.yaml177
-rw-r--r--Documentation/devicetree/bindings/thermal/ti_soc_thermal.txt88
-rw-r--r--drivers/thermal/airoha_thermal.c24
-rw-r--r--drivers/thermal/imx91_thermal.c2
-rw-r--r--drivers/thermal/qcom/tsens-v2.c4
-rw-r--r--drivers/thermal/renesas/rzg3e_thermal.c35
-rw-r--r--drivers/thermal/renesas/rzg3s_thermal.c38
-rw-r--r--tools/thermal/tmon/sysfs.c2
-rw-r--r--tools/thermal/tmon/tmon.h2
-rw-r--r--tools/thermal/tmon/tui.c2
12 files changed, 258 insertions, 127 deletions
diff --git a/Documentation/devicetree/bindings/thermal/qcom,pm8775-mbg-tm.yaml b/Documentation/devicetree/bindings/thermal/qcom,pm8775-mbg-tm.yaml
index 2e084d040625..ef8361a55389 100644
--- a/Documentation/devicetree/bindings/thermal/qcom,pm8775-mbg-tm.yaml
+++ b/Documentation/devicetree/bindings/thermal/qcom,pm8775-mbg-tm.yaml
@@ -21,7 +21,12 @@ description:
properties:
compatible:
- const: qcom,pm8775-mbg-tm
+ oneOf:
+ - const: qcom,pm8775-mbg-tm
+ - items:
+ - enum:
+ - qcom,pmau0102-mbg-tm
+ - const: qcom,pm8775-mbg-tm
reg:
maxItems: 1
diff --git a/Documentation/devicetree/bindings/thermal/renesas,r9a08g045-tsu.yaml b/Documentation/devicetree/bindings/thermal/renesas,r9a08g045-tsu.yaml
index 573e2b9d3752..20fc1a8000e3 100644
--- a/Documentation/devicetree/bindings/thermal/renesas,r9a08g045-tsu.yaml
+++ b/Documentation/devicetree/bindings/thermal/renesas,r9a08g045-tsu.yaml
@@ -17,7 +17,9 @@ $ref: thermal-sensor.yaml#
properties:
compatible:
- const: renesas,r9a08g045-tsu
+ enum:
+ - renesas,r9a08g045-tsu
+ - renesas,r9a08g046-tsu
reg:
maxItems: 1
diff --git a/Documentation/devicetree/bindings/thermal/ti,omap-bandgap.yaml b/Documentation/devicetree/bindings/thermal/ti,omap-bandgap.yaml
new file mode 100644
index 000000000000..091b7be28461
--- /dev/null
+++ b/Documentation/devicetree/bindings/thermal/ti,omap-bandgap.yaml
@@ -0,0 +1,177 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/thermal/ti,omap-bandgap.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments OMAP SCM bandgap
+
+maintainers:
+ - Eduardo Valentin <edubezval@gmail.com>
+
+description:
+ In the System Control Module, OMAP supplies a voltage reference and a
+ temperature sensor feature that are gathered in the band gap voltage and
+ temperature sensor (VBGAPTS) module. The band gap provides current and
+ voltage reference for its internal circuits and other analog IP blocks. The
+ analog-to-digital converter (ADC) produces an output value that is
+ proportional to the silicon temperature.
+
+properties:
+ compatible:
+ enum:
+ - ti,omap34xx-bandgap
+ - ti,omap36xx-bandgap
+ - ti,omap4430-bandgap
+ - ti,omap4460-bandgap
+ - ti,omap4470-bandgap
+ - ti,omap5430-bandgap
+ - ti,dra752-bandgap
+
+ reg:
+ minItems: 1
+ maxItems: 6
+
+ interrupts:
+ maxItems: 1
+
+ gpios:
+ maxItems: 1
+ description:
+ used to inform which GPIO line the tshut signal is routed to. The
+ informed GPIO will be treated as an IRQ;
+
+ "#thermal-sensor-cells":
+ enum: [0, 1]
+
+required:
+ - compatible
+ - reg
+
+allOf:
+ - $ref: thermal-sensor.yaml#
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - ti,omap34xx-bandgap
+ - ti,omap36xx-bandgap
+
+ then:
+ properties:
+ reg:
+ minItems: 1
+ maxItems: 1
+
+ interrupts: false
+
+ gpios: false
+
+ "#thermal-sensor-cells":
+ const: 0
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ti,omap4430-bandgap
+
+ then:
+ properties:
+ reg:
+ minItems: 2
+ maxItems: 2
+
+ interrupts: false
+
+ "#thermal-sensor-cells":
+ const: 0
+
+ required:
+ - gpios
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - ti,omap4460-bandgap
+ - ti,omap4470-bandgap
+
+ then:
+ properties:
+ reg:
+ minItems: 3
+ maxItems: 3
+
+ "#thermal-sensor-cells":
+ const: 0
+
+ required:
+ - interrupts
+ - gpios
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ti,omap5430-bandgap
+
+ then:
+ properties:
+ reg:
+ minItems: 4
+ maxItems: 4
+
+ gpios: false
+
+ "#thermal-sensor-cells":
+ const: 1
+
+ required:
+ - interrupts
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: ti,dra752-bandgap
+
+ then:
+ properties:
+ reg:
+ minItems: 6
+ maxItems: 6
+
+ gpios: false
+
+ "#thermal-sensor-cells":
+ const: 1
+
+ required:
+ - interrupts
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ bandgap@48002524 {
+ compatible = "ti,omap34xx-bandgap";
+ reg = <0x48002524 0x4>;
+ #thermal-sensor-cells = <0>;
+ };
+
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ bandgap@4a0021e0 {
+ compatible = "ti,dra752-bandgap";
+ reg = <0x4a0021e0 0xc>, <0x4a00232c 0xc>,
+ <0x4a002380 0x2c>, <0x4a0023c0 0x3c>,
+ <0x4a002564 0x8>, <0x4a002574 0x50>;
+ interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; /* talert */
+ #thermal-sensor-cells = <1>;
+ };
diff --git a/Documentation/devicetree/bindings/thermal/ti_soc_thermal.txt b/Documentation/devicetree/bindings/thermal/ti_soc_thermal.txt
deleted file mode 100644
index 6299dd8de339..000000000000
--- a/Documentation/devicetree/bindings/thermal/ti_soc_thermal.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-* Texas Instrument OMAP SCM bandgap bindings
-
-In the System Control Module, OMAP supplies a voltage reference
-and a temperature sensor feature that are gathered in the band
-gap voltage and temperature sensor (VBGAPTS) module. The band
-gap provides current and voltage reference for its internal
-circuits and other analog IP blocks. The analog-to-digital
-converter (ADC) produces an output value that is proportional
-to the silicon temperature.
-
-Required properties:
-- compatible : Should be:
- - "ti,omap34xx-bandgap" : for OMAP34xx bandgap
- - "ti,omap36xx-bandgap" : for OMAP36xx bandgap
- - "ti,omap4430-bandgap" : for OMAP4430 bandgap
- - "ti,omap4460-bandgap" : for OMAP4460 bandgap
- - "ti,omap4470-bandgap" : for OMAP4470 bandgap
- - "ti,omap5430-bandgap" : for OMAP5430 bandgap
-- interrupts : this entry should indicate which interrupt line
-the talert signal is routed to;
-Specific:
-- gpios : this entry should be used to inform which GPIO
-line the tshut signal is routed to. The informed GPIO will
-be treated as an IRQ;
-- regs : this entry must also be specified and it is specific
-to each bandgap version, because the mapping may change from
-soc to soc, apart of depending on available features.
-
-Example:
-OMAP34xx:
-bandgap {
- reg = <0x48002524 0x4>;
- compatible = "ti,omap34xx-bandgap";
-};
-
-OMAP36xx:
-bandgap {
- reg = <0x48002524 0x4>;
- compatible = "ti,omap36xx-bandgap";
-};
-
-OMAP4430:
-bandgap {
- reg = <0x4a002260 0x4 0x4a00232C 0x4>;
- compatible = "ti,omap4430-bandgap";
-};
-
-OMAP4460:
-bandgap {
- reg = <0x4a002260 0x4
- 0x4a00232C 0x4
- 0x4a002378 0x18>;
- compatible = "ti,omap4460-bandgap";
- interrupts = <0 126 4>; /* talert */
- gpios = <&gpio3 22 0>; /* tshut */
-};
-
-OMAP4470:
-bandgap {
- reg = <0x4a002260 0x4
- 0x4a00232C 0x4
- 0x4a002378 0x18>;
- compatible = "ti,omap4470-bandgap";
- interrupts = <0 126 4>; /* talert */
- gpios = <&gpio3 22 0>; /* tshut */
-};
-
-OMAP5430:
-bandgap {
- reg = <0x4a0021e0 0xc
- 0x4a00232c 0xc
- 0x4a002380 0x2c
- 0x4a0023C0 0x3c>;
- compatible = "ti,omap5430-bandgap";
- interrupts = <0 126 4>; /* talert */
-};
-
-DRA752:
-bandgap {
- reg = <0x4a0021e0 0xc
- 0x4a00232c 0xc
- 0x4a002380 0x2c
- 0x4a0023C0 0x3c
- 0x4a002564 0x8
- 0x4a002574 0x50>;
- compatible = "ti,dra752-bandgap";
- interrupts = <0 126 4>; /* talert */
-};
diff --git a/drivers/thermal/airoha_thermal.c b/drivers/thermal/airoha_thermal.c
index 77b3a1af271f..ea3e2649c280 100644
--- a/drivers/thermal/airoha_thermal.c
+++ b/drivers/thermal/airoha_thermal.c
@@ -528,7 +528,7 @@ static int en7581_thermal_probe(struct platform_device *pdev,
struct device_node *chip_scu_np;
struct device *dev = &pdev->dev;
void __iomem *base;
- int i, irq, ret;
+ int i;
base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(base))
@@ -567,16 +567,6 @@ static int en7581_thermal_probe(struct platform_device *pdev,
of_address_to_resource(chip_scu_np, 0, &priv->scu_adc_res);
of_node_put(chip_scu_np);
- irq = platform_get_irq(pdev, 0);
- if (irq < 0)
- return irq;
-
- ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
- en7581_thermal_irq, IRQF_ONESHOT,
- pdev->name, priv);
- if (ret)
- return ret;
-
en7581_thermal_setup_monitor(priv);
en7581_thermal_setup_adc_val(dev, priv);
@@ -586,6 +576,18 @@ static int en7581_thermal_probe(struct platform_device *pdev,
static int en7581_thermal_post_probe(struct platform_device *pdev)
{
struct airoha_thermal_priv *priv = platform_get_drvdata(pdev);
+ int irq, ret;
+
+ /* After zone registration: the handler uses priv->tz */
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0)
+ return irq;
+
+ ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
+ en7581_thermal_irq, IRQF_ONESHOT,
+ pdev->name, priv);
+ if (ret)
+ return ret;
/* Enable LOW and HIGH interrupt (if supported) */
regmap_write(priv->map, EN7581_TEMPMONINT,
diff --git a/drivers/thermal/imx91_thermal.c b/drivers/thermal/imx91_thermal.c
index 274eee303142..196ee20fce1e 100644
--- a/drivers/thermal/imx91_thermal.c
+++ b/drivers/thermal/imx91_thermal.c
@@ -225,7 +225,7 @@ static int imx91_tmu_change_mode(struct thermal_zone_device *tz, enum thermal_de
return 0;
}
-static struct thermal_zone_device_ops tmu_tz_ops = {
+static const struct thermal_zone_device_ops tmu_tz_ops = {
.get_temp = imx91_tmu_get_temp,
.change_mode = imx91_tmu_change_mode,
.set_trips = imx91_tmu_set_trips,
diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c
index 2ee117aa91ba..843dd29fad2e 100644
--- a/drivers/thermal/qcom/tsens-v2.c
+++ b/drivers/thermal/qcom/tsens-v2.c
@@ -54,8 +54,8 @@ static struct tsens_features tsens_v2_feat = {
.adc = 0,
.srot_split = 1,
.max_sensors = 16,
- .trip_min_temp = -40000,
- .trip_max_temp = 120000,
+ .trip_min_temp = -204000,
+ .trip_max_temp = 204000,
};
static struct tsens_features ipq8074_feat = {
diff --git a/drivers/thermal/renesas/rzg3e_thermal.c b/drivers/thermal/renesas/rzg3e_thermal.c
index c44f5b8858d0..a1ceff79e83e 100644
--- a/drivers/thermal/renesas/rzg3e_thermal.c
+++ b/drivers/thermal/renesas/rzg3e_thermal.c
@@ -93,6 +93,7 @@ struct rzg3e_thermal_info {
* @info: chip type specific information
* @trmval0: calibration value 0 (b)
* @trmval1: calibration value 1 (c)
+ * @sier: cached interrupt enable register
* @lock: protects hardware access during conversions
*/
struct rzg3e_thermal_priv {
@@ -103,6 +104,7 @@ struct rzg3e_thermal_priv {
const struct rzg3e_thermal_info *info;
u16 trmval0;
u16 trmval1;
+ u32 sier;
struct mutex lock;
};
@@ -148,12 +150,16 @@ static int rzg3e_thermal_power_on(struct rzg3e_thermal_priv *priv)
return ret;
}
+ /* Restore interrupt enable state */
+ writel(priv->sier, priv->base + TSU_SIER);
+
return 0;
}
static void rzg3e_thermal_power_off(struct rzg3e_thermal_priv *priv)
{
- /* Disable all interrupts */
+ /* Save and disable all interrupts */
+ priv->sier = readl(priv->base + TSU_SIER);
writel(0, priv->base + TSU_SIER);
/* Clear pending interrupts */
@@ -194,7 +200,12 @@ static u16 rzg3e_thermal_temp_to_code(struct rzg3e_thermal_priv *priv, int temp_
s64 numerator, denominator;
s64 code;
- numerator = (temp_mc - info->temp_d_mc) * (priv->trmval1 - priv->trmval0);
+ /*
+ * Perform the arithmetic in 64 bits so that it cannot overflow for
+ * -INT_MAX/INT_MAX values passed from the thermal core or when
+ * userspace writes arbitrary trip point temperatures.
+ */
+ numerator = ((s64)temp_mc - info->temp_d_mc) * (priv->trmval1 - priv->trmval0);
denominator = info->temp_e_mc - info->temp_d_mc;
code = div64_s64(numerator, denominator) + priv->trmval0;
@@ -214,6 +225,16 @@ static int rzg3e_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
guard(mutex)(&priv->lock);
+ /* Make sure a previous conversion is not in progress */
+ ret = readl_poll_timeout(priv->base + TSU_SSR, status,
+ !(status & TSU_SSR_CONV),
+ TSU_POLL_DELAY_US,
+ USEC_PER_MSEC);
+ if (ret) {
+ dev_err(priv->dev, "Timeout waiting for conversion\n");
+ goto out;
+ }
+
/* Clear any previous conversion status */
writel(TSU_SICR_ADCLR, priv->base + TSU_SICR);
@@ -241,7 +262,6 @@ static int rzg3e_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
*temp, *temp / 1000, abs(*temp) % 1000, code);
out:
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return ret;
}
@@ -254,10 +274,6 @@ static int rzg3e_thermal_set_trips(struct thermal_zone_device *tz,
u32 val;
int ret;
- /* Hardware requires low < high */
- if (low >= high)
- return -EINVAL;
-
ret = pm_runtime_resume_and_get(priv->dev);
if (ret < 0)
return ret;
@@ -293,11 +309,9 @@ static int rzg3e_thermal_set_trips(struct thermal_zone_device *tz,
/* Enable comparison with "out of range" mode (CMPCOND=0) */
writel(TSU_CMSR_CMPEN, priv->base + TSU_CMSR);
- /* Unmask compare IRQ and start a conversion to evaluate window */
+ /* Unmask compare IRQ */
writel(TSU_SIER_CMPIE, priv->base + TSU_SIER);
- writel(TSU_STRGR_ADST, priv->base + TSU_STRGR);
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return 0;
@@ -469,7 +483,6 @@ static int rzg3e_thermal_probe(struct platform_device *pdev)
if (ret)
dev_warn(dev, "Failed to add hwmon sysfs attributes\n");
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
dev_info(dev, "RZ/G3E thermal sensor registered\n");
diff --git a/drivers/thermal/renesas/rzg3s_thermal.c b/drivers/thermal/renesas/rzg3s_thermal.c
index 7ced8f76a0ec..a8716da7fcd2 100644
--- a/drivers/thermal/renesas/rzg3s_thermal.c
+++ b/drivers/thermal/renesas/rzg3s_thermal.c
@@ -12,6 +12,7 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
+#include <linux/property.h>
#include <linux/reset.h>
#include <linux/thermal.h>
#include <linux/units.h>
@@ -27,10 +28,6 @@
#define TSU_READ_STEPS 8
-/* Default calibration values, if FUSE values are missing. */
-#define SW_CALIB0_VAL 1297
-#define SW_CALIB1_VAL 751
-
#define MCELSIUS(temp) ((temp) * MILLIDEGREE_PER_DEGREE)
/**
@@ -55,6 +52,16 @@ struct rzg3s_thermal_priv {
u16 calib1;
};
+/**
+ * struct rzg3s_thermal_info - RZ/G3S thermal information
+ * @calib0: calibration value if FUSE value is missing
+ * @calib1: calibration value if FUSE value is missing
+ */
+struct rzg3s_thermal_info {
+ u16 calib0;
+ u16 calib1;
+};
+
static int rzg3s_thermal_get_temp(struct thermal_zone_device *tz, int *temp)
{
struct rzg3s_thermal_priv *priv = thermal_zone_device_priv(tz);
@@ -149,7 +156,8 @@ static const struct thermal_zone_device_ops rzg3s_tz_of_ops = {
.change_mode = rzg3s_thermal_change_mode,
};
-static int rzg3s_thermal_read_calib(struct rzg3s_thermal_priv *priv)
+static int rzg3s_thermal_read_calib(struct rzg3s_thermal_priv *priv,
+ const struct rzg3s_thermal_info *info)
{
struct device *dev = priv->dev;
u32 val;
@@ -163,13 +171,13 @@ static int rzg3s_thermal_read_calib(struct rzg3s_thermal_priv *priv)
if (val & OTPTSUTRIM_EN_MASK)
priv->calib0 = FIELD_GET(OTPTSUTRIM_MASK, val);
else
- priv->calib0 = SW_CALIB0_VAL;
+ priv->calib0 = info->calib0;
val = readl(priv->base + OTPTSUTRIM_REG(1));
if (val & OTPTSUTRIM_EN_MASK)
priv->calib1 = FIELD_GET(OTPTSUTRIM_MASK, val);
else
- priv->calib1 = SW_CALIB1_VAL;
+ priv->calib1 = info->calib1;
pm_runtime_put_autosuspend(dev);
@@ -178,6 +186,7 @@ static int rzg3s_thermal_read_calib(struct rzg3s_thermal_priv *priv)
static int rzg3s_thermal_probe(struct platform_device *pdev)
{
+ const struct rzg3s_thermal_info *info = device_get_match_data(&pdev->dev);
struct rzg3s_thermal_priv *priv;
struct device *dev = &pdev->dev;
int ret;
@@ -208,7 +217,7 @@ static int rzg3s_thermal_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "Failed to enable runtime PM!\n");
- ret = rzg3s_thermal_read_calib(priv);
+ ret = rzg3s_thermal_read_calib(priv, info);
if (ret)
return dev_err_probe(dev, ret, "Failed to read calibration data!\n");
@@ -251,8 +260,19 @@ static const struct dev_pm_ops rzg3s_thermal_pm_ops = {
SYSTEM_SLEEP_PM_OPS(rzg3s_thermal_suspend, rzg3s_thermal_resume)
};
+static const struct rzg3s_thermal_info rzg3s_info = {
+ .calib0 = 1297,
+ .calib1 = 751,
+};
+
+static const struct rzg3s_thermal_info rzg3l_info = {
+ .calib0 = 1322,
+ .calib1 = 772,
+};
+
static const struct of_device_id rzg3s_thermal_dt_ids[] = {
- { .compatible = "renesas,r9a08g045-tsu" },
+ { .compatible = "renesas,r9a08g045-tsu", .data = &rzg3s_info },
+ { .compatible = "renesas,r9a08g046-tsu", .data = &rzg3l_info },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, rzg3s_thermal_dt_ids);
diff --git a/tools/thermal/tmon/sysfs.c b/tools/thermal/tmon/sysfs.c
index cb1108bc9249..5d64aff12a86 100644
--- a/tools/thermal/tmon/sysfs.c
+++ b/tools/thermal/tmon/sysfs.c
@@ -225,7 +225,7 @@ static int find_tzone_cdev(struct dirent *nl, char *tz_name,
cdev_name, cdev_name_linked, cdev_id);
tzi->cdev_binding |= (1 << cdev_id);
- /* find the trip point in which the cdev is binded to
+ /* find the trip point in which the cdev is bound to
* in this tzone
*/
snprintf(cdev_trip_name, sizeof(cdev_trip_name) - 1,
diff --git a/tools/thermal/tmon/tmon.h b/tools/thermal/tmon/tmon.h
index 44d16d778f04..b7767056f189 100644
--- a/tools/thermal/tmon/tmon.h
+++ b/tools/thermal/tmon/tmon.h
@@ -77,7 +77,7 @@ struct tz_info {
char type[256]; /* e.g. acpitz */
int instance;
int passive; /* active zone has passive node to force passive mode */
- int nr_cdev; /* number of cooling device binded */
+ int nr_cdev; /* number of cooling devices bound */
int nr_trip_pts;
struct trip_point tp[MAX_NR_TRIP];
unsigned long cdev_binding; /* bitmap for attached cdevs */
diff --git a/tools/thermal/tmon/tui.c b/tools/thermal/tmon/tui.c
index 7f5dd2b87f15..dbc3ca95c724 100644
--- a/tools/thermal/tmon/tui.c
+++ b/tools/thermal/tmon/tui.c
@@ -238,7 +238,7 @@ void show_cooling_device(void)
unsigned long trip_binding =
ptdata.tzi[i].trip_binding[cdev_inst];
int k = 0; /* per zone trip point id that
- * binded to this cdev, one to
+ * is bound to this cdev, one to
* many possible based on the
* binding bitmask.
*/