[PATCH 2/2] thermal: mediatek: lvts: Add MT8189 support
Philipp Zabel
p.zabel at pengutronix.de
Mon Apr 27 02:14:31 PDT 2026
On Mo, 2026-04-27 at 14:48 +0800, mtk36707 wrote:
> From: Kuanfu Lu <kuanfu.lu at mediatek.com>
>
> Add LVTS thermal support for MediaTek MT8189 by adding MT8189-specific
> controller/sensor topology and platform data for the MCU and AP domains.
>
> MT8189 differs from previous SoCs in a few aspects, so extend the driver
> to handle these variations:
> - Program the hardware thermal shutdown threshold (tshut) using raw units.
> - Add per-SoC feature flags to skip clock gating and reset control when
> they are not required, and to enable Stage-3 monitor interrupt setup.
> - Pass SoC data into lvts_irq_init() and lvts_ctrl_configure() so the
> initialization can be configured per platform.
>
> This enables monitoring of MT8189 CPU clusters and AP domain sensors
> (SOC/APU/GPU) with the existing LVTS driver.
>
> Signed-off-by: Kuanfu Lu <kuanfu.lu at mediatek.com>
> ---
> drivers/thermal/mediatek/lvts_thermal.c | 142 +++++++++++++++++++++---
> 1 file changed, 129 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/thermal/mediatek/lvts_thermal.c b/drivers/thermal/mediatek/lvts_thermal.c
> index a9617d5e0077..9dbd9191e3ba 100644
> --- a/drivers/thermal/mediatek/lvts_thermal.c
> +++ b/drivers/thermal/mediatek/lvts_thermal.c
[...]
> @@ -1470,10 +1482,12 @@ static int lvts_probe(struct platform_device *pdev)
> if (IS_ERR(lvts_td->base))
> return dev_err_probe(dev, PTR_ERR(lvts_td->base), "Failed to map io resource\n");
>
> - lvts_td->reset = devm_reset_control_get_by_index(dev, 0);
First of all, this should have been:
lvts_td->reset = devm_reset_control_get_exclusive(dev, NULL);
since there is only a single reset control defined in the binding.
> - if (IS_ERR(lvts_td->reset))
> - return dev_err_probe(dev, PTR_ERR(lvts_td->reset), "Failed to get reset control\n");
> -
> + if (!lvts_data->reset_no_need) {
> + lvts_td->reset = devm_reset_control_get_by_index(dev, 0);
So this can be changed to
lvts_td->reset = devm_reset_control_get_optional_exclusive(dev, NULL);
instead. There is no need for the reset_no_need parameter at all.
Whether the reset control is required or not is already specified in
the device tree bindings.
> + if (IS_ERR(lvts_td->reset))
> + return dev_err_probe(dev, PTR_ERR(lvts_td->reset),
> + "Failed to get reset control\n");
> + }
> irq = platform_get_irq(pdev, 0);
> if (irq < 0)
> return irq;
regards
Philipp
More information about the Linux-mediatek
mailing list