mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
c36de2e73a
Backport almost 50 commits from upstream Linux to improve thermal drivers for MediaTek SoCs and add new LVTS driver for MT7988. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
From 7105a86760bd9e4d107075cefc75016b693a5542 Mon Sep 17 00:00:00 2001
|
|
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
Date: Wed, 19 Apr 2023 08:11:45 +0200
|
|
Subject: [PATCH 16/42] Revert "thermal/drivers/mediatek: Add delay after
|
|
thermal banks initialization"
|
|
|
|
Some more testing revealed that this commit introduces a regression on some
|
|
MT8173 Chromebooks and at least on one MT6795 Sony Xperia M5 smartphone due
|
|
to the delay being apparently variable and machine specific.
|
|
|
|
Another solution would be to delay for a bit more (~70ms) but this is not
|
|
feasible for two reasons: first of all, we're adding an even bigger delay
|
|
in a probe function; second, some machines need less, some may need even
|
|
more, making the msleep at probe solution highly suboptimal.
|
|
|
|
This reverts commit 10debf8c2da8011c8009dd4b3f6d0ab85891c81b.
|
|
|
|
Fixes: 10debf8c2da8 ("thermal/drivers/mediatek: Add delay after thermal banks initialization")
|
|
Reported-by: "kernelci.org bot" <bot@kernelci.org>
|
|
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
|
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
|
|
Link: https://lore.kernel.org/r/20230419061146.22246-2-angelogioacchino.delregno@collabora.com
|
|
---
|
|
drivers/thermal/mediatek/auxadc_thermal.c | 11 ++++++++---
|
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
--- a/drivers/thermal/mediatek/auxadc_thermal.c
|
|
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
|
|
@@ -816,6 +816,14 @@ static int mtk_thermal_bank_temperature(
|
|
mt, conf->bank_data[bank->id].sensors[i], raw);
|
|
|
|
|
|
+ /*
|
|
+ * The first read of a sensor often contains very high bogus
|
|
+ * temperature value. Filter these out so that the system does
|
|
+ * not immediately shut down.
|
|
+ */
|
|
+ if (temp > 200000)
|
|
+ temp = 0;
|
|
+
|
|
if (temp > max)
|
|
max = temp;
|
|
}
|
|
@@ -1273,9 +1281,6 @@ static int mtk_thermal_probe(struct plat
|
|
|
|
platform_set_drvdata(pdev, mt);
|
|
|
|
- /* Delay for thermal banks to be ready */
|
|
- msleep(30);
|
|
-
|
|
tzdev = devm_thermal_of_zone_register(&pdev->dev, 0, mt,
|
|
&mtk_thermal_ops);
|
|
if (IS_ERR(tzdev)) {
|