diff options
| author | Marek Vasut <[email protected]> | 2025-09-06 02:05:33 +0200 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-10-08 13:54:59 -0600 |
| commit | 0ee639ff5af33342c6c2f4579e210d707abc9bc2 (patch) | |
| tree | 65f143d7299bf4eb4e9de0af7aa3035ea368f16c /drivers | |
| parent | 79fe4655d67fb68e4172e45e8983815e26a4cd05 (diff) | |
thermal: Convert .get_temp() return value to millicelsius
Linux kernel .get_temp() callback reports values in millicelsius,
U-Boot currently reports them in celsius. Align the two and report
in millicelsius. Update drivers accordingly. Update callsites that
use thermal_get_temp() as well.
The 'temperature' command now reports temperature in millicelsius
as well, with additional accuracy. This changes command line ABI
slightly.
Signed-off-by: Marek Vasut <[email protected]>
Reviewed-by: Tom Rini <[email protected]>
Reviewed-by: Quentin Schulz <[email protected]>
Reviewed-by: David Zang <[email protected]>
[trini: Update test/cmd/temperature.c]
Signed-off-by: Tom Rini <[email protected]>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/cpu/imx8_cpu.c | 2 | ||||
| -rw-r--r-- | drivers/mmc/omap_hsmmc.c | 1 | ||||
| -rw-r--r-- | drivers/thermal/imx_scu_thermal.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/imx_thermal.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/imx_tmu.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/rcar_gen3_thermal.c | 6 | ||||
| -rw-r--r-- | drivers/thermal/thermal_sandbox.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/ti-bandgap.c | 2 | ||||
| -rw-r--r-- | drivers/thermal/ti-lm74.c | 2 |
9 files changed, 11 insertions, 10 deletions
diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c index 630919a3642..5f17122c36c 100644 --- a/drivers/cpu/imx8_cpu.c +++ b/drivers/cpu/imx8_cpu.c @@ -192,7 +192,7 @@ static int cpu_imx_get_temp(struct cpu_imx_plat *plat) return 0xdeadbeef; } - return cpu_tmp; + return cpu_tmp / 1000; } #else static int cpu_imx_get_temp(struct cpu_imx_plat *plat) diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c index 92bc72b267c..ae742080643 100644 --- a/drivers/mmc/omap_hsmmc.c +++ b/drivers/mmc/omap_hsmmc.c @@ -651,6 +651,7 @@ static int omap_hsmmc_execute_tuning(struct udevice *dev, uint opcode) printf("Couldn't get temperature for tuning\n"); return ret; } + temperature /= 1000; val = readl(&mmc_base->dll); val |= DLL_SWT; writel(val, &mmc_base->dll); diff --git a/drivers/thermal/imx_scu_thermal.c b/drivers/thermal/imx_scu_thermal.c index fc2b0e227b2..6b0b1d10d9d 100644 --- a/drivers/thermal/imx_scu_thermal.c +++ b/drivers/thermal/imx_scu_thermal.c @@ -72,7 +72,7 @@ int imx_sc_thermal_get_temp(struct udevice *dev, int *temp) break; } - *temp = cpu_temp / 1000; + *temp = cpu_temp; return 0; } diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index ea1fcc3dcb2..d04035950ee 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c @@ -223,7 +223,7 @@ int imx_thermal_get_temp(struct udevice *dev, int *temp) cpu_tmp = read_cpu_temperature(dev); } - *temp = cpu_tmp; + *temp = cpu_tmp * 1000; return 0; } diff --git a/drivers/thermal/imx_tmu.c b/drivers/thermal/imx_tmu.c index 70d002aee25..51a072e23c6 100644 --- a/drivers/thermal/imx_tmu.c +++ b/drivers/thermal/imx_tmu.c @@ -245,7 +245,7 @@ int imx_tmu_get_temp(struct udevice *dev, int *temp) return ret; } - *temp = cpu_tmp / 1000; + *temp = cpu_tmp; return 0; } diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c index 522337c8395..45e590535a0 100644 --- a/drivers/thermal/rcar_gen3_thermal.c +++ b/drivers/thermal/rcar_gen3_thermal.c @@ -160,7 +160,7 @@ static int rcar_gen3_thermal_get_temp(struct udevice *dev, int *temp) const struct equation_set_coef *coef; int adj, decicelsius, reg, thcode; - /* Read register and convert to degree Celsius */ + /* Read register and convert to millidegree Celsius */ reg = rcar_gen3_thermal_read(tsc, REG_GEN3_TEMP) & CTEMP_MASK; if (reg < tsc->thcode[1]) { @@ -183,8 +183,8 @@ static int rcar_gen3_thermal_get_temp(struct udevice *dev, int *temp) /* Guaranteed operating range is -40C to 125C. */ - /* Reporting is done in degree Celsius */ - *temp = (decicelsius * 100 + adj * 1000) / 1000; + /* Reporting is done in millidegree Celsius */ + *temp = decicelsius * 100 + adj * 1000; return 0; } diff --git a/drivers/thermal/thermal_sandbox.c b/drivers/thermal/thermal_sandbox.c index b7c567d76cd..2e1f1559e53 100644 --- a/drivers/thermal/thermal_sandbox.c +++ b/drivers/thermal/thermal_sandbox.c @@ -12,7 +12,7 @@ static int sandbox_thermal_get_temp(struct udevice *dev, int *temp) { /* Simply return 100 deg C */ - *temp = 100; + *temp = 100 * 1000; return 0; } diff --git a/drivers/thermal/ti-bandgap.c b/drivers/thermal/ti-bandgap.c index 0ea17a909dd..dc869f108e4 100644 --- a/drivers/thermal/ti-bandgap.c +++ b/drivers/thermal/ti-bandgap.c @@ -163,7 +163,7 @@ static int ti_bandgap_get_temp(struct udevice *dev, int *temp) struct ti_bandgap *bgp = dev_get_priv(dev); bgp->adc_val = 0x3ff & readl(bgp->base + CTRL_CORE_TEMP_SENSOR_MPU); - *temp = dra752_adc_to_temp[bgp->adc_val - DRA752_ADC_START_VALUE]; + *temp = dra752_adc_to_temp[bgp->adc_val - DRA752_ADC_START_VALUE] * 1000; return 0; } diff --git a/drivers/thermal/ti-lm74.c b/drivers/thermal/ti-lm74.c index 0310d3330c0..104c27429f4 100644 --- a/drivers/thermal/ti-lm74.c +++ b/drivers/thermal/ti-lm74.c @@ -28,7 +28,7 @@ static int ti_lm74_get_temp(struct udevice *dev, int *temp) raw = ((buf[0] << 8) + buf[1]) >> 3; - *temp = (((int)raw * 125) + 1000) / 2000; + *temp = (((int)raw * 125) + 1000) / 2; return 0; } |
