* [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver [not found] <CGME20240911121149eucas1p29b9ccf99a545cfaa924b122cd8dd3183@eucas1p2.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski [not found] ` <CGME20240911121152eucas1p113445ce1ce6b6bd9c8f96322604bf517@eucas1p1.samsung.com> ` (7 more replies) 0 siblings, 8 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski This series adds initial Exynos850 support to the thermal driver together with its requirements (sanitize_temp_error fix, adding the new string to dt-bindings), while also cleaning up a bit (improving power management support and removing some outdated information from dt-bindings). Changelog: v4: - Cleaned up sanitize_temp_error a bit more - Modified exynos_tmu_update_temp to match sanitize_temp_error v3: - Reworded the commit message of the dt-binding information removal change v2: - Reimplemented to use the Exynos850 TMU clock: removed the patch to make the clock optional and changed dt-bindings change accordingly - Improved the Exynos850 implementation itself (style and one correct register offset) - Removed conditional compilation in favor of pm_sleep_ptr - Shortened dt-bindings description Mateusz Majewski (7): drivers/thermal/exynos: use DEFINE_SIMPLE_DEV_PM_OPS drivers/thermal/exynos: use pm_sleep_ptr instead of conditional compilation drivers/thermal/exynos: improve sanitize_temp_error drivers/thermal/exynos: reuse data->temp_mask in exynos_tmu_update_temp dt-bindings: thermal: samsung,exynos: add exynos850-tmu string drivers/thermal/exynos: add initial Exynos850 support dt-bindings: thermal: samsung,exynos: remove driver-specific information .../thermal/samsung,exynos-thermal.yaml | 8 +- drivers/thermal/samsung/exynos_tmu.c | 237 +++++++++++++++--- 2 files changed, 209 insertions(+), 36 deletions(-) -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121152eucas1p113445ce1ce6b6bd9c8f96322604bf517@eucas1p1.samsung.com>]
* [PATCH v4 1/7] drivers/thermal/exynos: use DEFINE_SIMPLE_DEV_PM_OPS [not found] ` <CGME20240911121152eucas1p113445ce1ce6b6bd9c8f96322604bf517@eucas1p1.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski SIMPLE_DEV_PM_OPS is deprecated, as noted next to its definition. Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> --- drivers/thermal/samsung/exynos_tmu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 96cffb2c44ba..9b7ca93a72f1 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -1150,8 +1150,8 @@ static int exynos_tmu_resume(struct device *dev) return 0; } -static SIMPLE_DEV_PM_OPS(exynos_tmu_pm, - exynos_tmu_suspend, exynos_tmu_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(exynos_tmu_pm, + exynos_tmu_suspend, exynos_tmu_resume); #define EXYNOS_TMU_PM (&exynos_tmu_pm) #else #define EXYNOS_TMU_PM NULL -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121153eucas1p20f864c51746e6a7de55ecd0e52efe5c4@eucas1p2.samsung.com>]
* [PATCH v4 2/7] drivers/thermal/exynos: use pm_sleep_ptr instead of conditional compilation [not found] ` <CGME20240911121153eucas1p20f864c51746e6a7de55ecd0e52efe5c4@eucas1p2.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski Slightly simpler and nothing is lost if _suspend and _resume functions are built unconditionally. Suggested-by: Anand Moon <linux.amoon@gmail.com> Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- drivers/thermal/samsung/exynos_tmu.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 9b7ca93a72f1..b68e9755c933 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -1132,7 +1132,6 @@ static void exynos_tmu_remove(struct platform_device *pdev) clk_unprepare(data->clk_sec); } -#ifdef CONFIG_PM_SLEEP static int exynos_tmu_suspend(struct device *dev) { exynos_tmu_control(to_platform_device(dev), false); @@ -1152,15 +1151,11 @@ static int exynos_tmu_resume(struct device *dev) static DEFINE_SIMPLE_DEV_PM_OPS(exynos_tmu_pm, exynos_tmu_suspend, exynos_tmu_resume); -#define EXYNOS_TMU_PM (&exynos_tmu_pm) -#else -#define EXYNOS_TMU_PM NULL -#endif static struct platform_driver exynos_tmu_driver = { .driver = { .name = "exynos-tmu", - .pm = EXYNOS_TMU_PM, + .pm = pm_sleep_ptr(&exynos_tmu_pm), .of_match_table = exynos_tmu_match, }, .probe = exynos_tmu_probe, -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121154eucas1p1a429a565c446cdd968f565df1ffae42c@eucas1p1.samsung.com>]
* [PATCH v4 3/7] drivers/thermal/exynos: improve sanitize_temp_error [not found] ` <CGME20240911121154eucas1p1a429a565c446cdd968f565df1ffae42c@eucas1p1.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski There are two minor issues regarding this function. One is that it attempts to calculate the second calibration value even if 1-point trimming is being used; in this case, the calculated value is probably not useful and is never used anyway. Changing this also requires a minor reordering in Exynos5433 initialization function, so that we know which type of trimming is used before we call sanitize_temp_error. The second issue is that the function is not very consistent when it comes to the use of Exynos7-specific parameters. This seems to not be an issue in practice, in part because some of these issues are related to the mentioned calculation of the second calibration value. However, fixing this makes the code a bit less confusing, and will be required for Exynos850 which has 9-bit temperature values and uses 2-point trimming. Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- v3 -> v4: further reworked to avoid SoC-specific code, instead using SoC-specific parameters inside of exynos_tmu_data (probably different enough to drop R-b). v1 -> v2: reworked to change shift instead of only mask and to also fix the 2-point trimming issue. drivers/thermal/samsung/exynos_tmu.c | 40 ++++++++++++++++++---------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index b68e9755c933..8b1014915c31 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -111,6 +111,7 @@ #define EXYNOS7_TMU_REG_EMUL_CON 0x160 #define EXYNOS7_TMU_TEMP_MASK 0x1ff +#define EXYNOS7_TMU_TEMP_SHIFT 9 #define EXYNOS7_PD_DET_EN_SHIFT 23 #define EXYNOS7_TMU_INTEN_RISE0_SHIFT 0 #define EXYNOS7_EMUL_DATA_SHIFT 7 @@ -152,6 +153,8 @@ enum soc_type { * @max_efuse_value: maximum valid trimming data * @temp_error1: fused value of the first point trim. * @temp_error2: fused value of the second point trim. + * @temp_mask: SoC specific temperature mask + * @temp_85_shift: SoC specific address shift * @gain: gain of amplifier in the positive-TC generator block * 0 < gain <= 15 * @reference_voltage: reference voltage of amplifier @@ -182,6 +185,8 @@ struct exynos_tmu_data { u32 min_efuse_value; u32 max_efuse_value; u16 temp_error1, temp_error2; + u16 temp_mask; + int temp_85_shift; u8 gain; u8 reference_voltage; struct thermal_zone_device *tzd; @@ -229,25 +234,26 @@ static int code_to_temp(struct exynos_tmu_data *data, u16 temp_code) EXYNOS_FIRST_POINT_TRIM; } +/* + * Sanitize sensor calibration values, according to minimum and maximum + * values defined for each SoC. + */ static void sanitize_temp_error(struct exynos_tmu_data *data, u32 trim_info) { - u16 tmu_temp_mask = - (data->soc == SOC_ARCH_EXYNOS7) ? EXYNOS7_TMU_TEMP_MASK - : EXYNOS_TMU_TEMP_MASK; - - data->temp_error1 = trim_info & tmu_temp_mask; - data->temp_error2 = ((trim_info >> EXYNOS_TRIMINFO_85_SHIFT) & - EXYNOS_TMU_TEMP_MASK); - + data->temp_error1 = trim_info & data->temp_mask; if (!data->temp_error1 || (data->min_efuse_value > data->temp_error1) || (data->temp_error1 > data->max_efuse_value)) - data->temp_error1 = data->efuse_value & EXYNOS_TMU_TEMP_MASK; + data->temp_error1 = data->efuse_value & data->temp_mask; - if (!data->temp_error2) - data->temp_error2 = - (data->efuse_value >> EXYNOS_TRIMINFO_85_SHIFT) & - EXYNOS_TMU_TEMP_MASK; + if (data->cal_type == TYPE_TWO_POINT_TRIMMING) { + data->temp_error2 = (trim_info >> data->temp_85_shift) & + data->temp_mask; + if (!data->temp_error2) + data->temp_error2 = + (data->efuse_value >> data->temp_85_shift) & + data->temp_mask; + } } static int exynos_tmu_initialize(struct platform_device *pdev) @@ -510,7 +516,6 @@ static void exynos5433_tmu_initialize(struct platform_device *pdev) int sensor_id, cal_type; trim_info = readl(data->base + EXYNOS_TMU_REG_TRIMINFO); - sanitize_temp_error(data, trim_info); /* Read the temperature sensor id */ sensor_id = (trim_info & EXYNOS5433_TRIMINFO_SENSOR_ID_MASK) @@ -532,6 +537,8 @@ static void exynos5433_tmu_initialize(struct platform_device *pdev) break; } + sanitize_temp_error(data, trim_info); + dev_info(&pdev->dev, "Calibration type is %d-point calibration\n", cal_type ? 2 : 1); } @@ -876,6 +883,7 @@ static int exynos_map_dt_data(struct platform_device *pdev) data->tmu_control = exynos4210_tmu_control; data->tmu_read = exynos4210_tmu_read; data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->temp_mask = EXYNOS_TMU_TEMP_MASK; data->gain = 15; data->reference_voltage = 7; data->efuse_value = 55; @@ -898,6 +906,7 @@ static int exynos_map_dt_data(struct platform_device *pdev) data->tmu_read = exynos4412_tmu_read; data->tmu_set_emulation = exynos4412_tmu_set_emulation; data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->temp_mask = EXYNOS_TMU_TEMP_MASK; data->gain = 8; data->reference_voltage = 16; data->efuse_value = 55; @@ -919,6 +928,8 @@ static int exynos_map_dt_data(struct platform_device *pdev) data->tmu_read = exynos4412_tmu_read; data->tmu_set_emulation = exynos4412_tmu_set_emulation; data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->temp_mask = EXYNOS_TMU_TEMP_MASK; + data->temp_85_shift = EXYNOS_TRIMINFO_85_SHIFT; data->gain = 8; if (res.start == EXYNOS5433_G3D_BASE) data->reference_voltage = 23; @@ -939,6 +950,7 @@ static int exynos_map_dt_data(struct platform_device *pdev) data->tmu_read = exynos7_tmu_read; data->tmu_set_emulation = exynos4412_tmu_set_emulation; data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->temp_mask = EXYNOS7_TMU_TEMP_MASK; data->gain = 9; data->reference_voltage = 17; data->efuse_value = 75; -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121155eucas1p160223d89bff83a89a03c5447252f44a9@eucas1p1.samsung.com>]
* [PATCH v4 4/7] drivers/thermal/exynos: reuse data->temp_mask in exynos_tmu_update_temp [not found] ` <CGME20240911121155eucas1p160223d89bff83a89a03c5447252f44a9@eucas1p1.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski Both the intention and the actual logic is identical, little point in duplicating it. Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- drivers/thermal/samsung/exynos_tmu.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 8b1014915c31..9bddf9fd5049 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -357,15 +357,10 @@ static void exynos_tmu_update_bit(struct exynos_tmu_data *data, int reg_off, static void exynos_tmu_update_temp(struct exynos_tmu_data *data, int reg_off, int bit_off, u8 temp) { - u16 tmu_temp_mask; u32 th; - tmu_temp_mask = - (data->soc == SOC_ARCH_EXYNOS7) ? EXYNOS7_TMU_TEMP_MASK - : EXYNOS_TMU_TEMP_MASK; - th = readl(data->base + reg_off); - th &= ~(tmu_temp_mask << bit_off); + th &= ~(data->temp_mask << bit_off); th |= temp_to_code(data, temp) << bit_off; writel(th, data->base + reg_off); } -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121157eucas1p2a8ff398f0f30f141de974763680bb041@eucas1p2.samsung.com>]
* [PATCH v4 5/7] dt-bindings: thermal: samsung,exynos: add exynos850-tmu string [not found] ` <CGME20240911121157eucas1p2a8ff398f0f30f141de974763680bb041@eucas1p2.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski, Krzysztof Kozlowski Like most of the SoCs, it requires 1 clock and 1 register. Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- v1 -> v2: make the clock required in Exynos850. .../devicetree/bindings/thermal/samsung,exynos-thermal.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml b/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml index 29a08b0729ee..b8c0bb7f4263 100644 --- a/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml +++ b/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml @@ -27,6 +27,7 @@ properties: - samsung,exynos5420-tmu-ext-triminfo - samsung,exynos5433-tmu - samsung,exynos7-tmu + - samsung,exynos850-tmu clocks: minItems: 1 @@ -131,6 +132,7 @@ allOf: - samsung,exynos5250-tmu - samsung,exynos5260-tmu - samsung,exynos5420-tmu + - samsung,exynos850-tmu then: properties: clocks: -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121158eucas1p2ab3ec5b5b59351af22c5740e02236b16@eucas1p2.samsung.com>]
* [PATCH v4 6/7] drivers/thermal/exynos: add initial Exynos850 support [not found] ` <CGME20240911121158eucas1p2ab3ec5b5b59351af22c5740e02236b16@eucas1p2.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski This is loosely adapted from an implementation available at https://gitlab.com/Linaro/96boards/e850-96/kernel/-/blob/android-exynos-4.14-linaro/drivers/thermal/samsung/exynos_tmu.c Some differences from that implementation: - unlike that implementation, we do not use the ACPM mechanism, instead we just access the registers, like we do for other SoCs, - the SoC is supposed to support multiple sensors inside one unit. The vendor implementation uses one kernel device per sensor, we would probably prefer to have one device for all sensors, have #thermal-sensor-cells = <1> and so on. We implemented this, but we could not get the extra sensors to work on our hardware so far. This might be due to a misconfiguration and we will probably come back to this, however our implementation only supports a single sensor for now, - the vendor implementation supports disabling CPU cores as a cooling device. We did not attempt to port this, and this would not really fit this driver anyway. Additionally, some differences from the other SoCs supported by this driver: - we do not really constrain the e-fuse information like the other SoCs do (data->{min,max}_efuse_value). In our tests, those values (as well as the raw sensor values) were much higher than in the other SoCs, to the degree that reusing the data->{min,max}_efuse_value from the other SoCs would cause instant critical temperature reset on boot, - this SoC provides more information in the e-fuse data than other SoCs, so we read some values inside exynos850_tmu_initialize instead of hardcoding them in exynos_map_dt_data. Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- v3 -> v4: adapted to sanitize_temp_error change. v1 -> v2: rename and reorder some registers, use the correct register offset for EXYNOS850_TMU_REG_AVG_CON, make the clock required, additionally do some minor style changes. drivers/thermal/samsung/exynos_tmu.c | 179 ++++++++++++++++++++++++++- 1 file changed, 176 insertions(+), 3 deletions(-) diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c index 9bddf9fd5049..c5769f9b6471 100644 --- a/drivers/thermal/samsung/exynos_tmu.c +++ b/drivers/thermal/samsung/exynos_tmu.c @@ -117,6 +117,41 @@ #define EXYNOS7_EMUL_DATA_SHIFT 7 #define EXYNOS7_EMUL_DATA_MASK 0x1ff +/* Exynos850 specific registers */ +#define EXYNOS850_TMU_REG_CURRENT_TEMP0_1 0x40 +#define EXYNOS850_TMU_REG_THD_TEMP0_RISE 0x50 +#define EXYNOS850_TMU_REG_THD_TEMP0_FALL 0x60 + +#define EXYNOS850_TMU_TRIMINFO_SHIFT 4 +#define EXYNOS850_TMU_TRIMINFO_OFFSET(n) \ + (EXYNOS_TMU_REG_TRIMINFO + (n) * EXYNOS850_TMU_TRIMINFO_SHIFT) +#define EXYNOS850_TMU_T_TRIM0_SHIFT 18 + +#define EXYNOS850_TMU_REG_CONTROL1 0x24 +#define EXYNOS850_TMU_LPI_MODE_MASK 1 +#define EXYNOS850_TMU_LPI_MODE_SHIFT 10 + +#define EXYNOS850_TMU_REG_COUNTER_VALUE0 0x30 +#define EXYNOS850_TMU_EN_TEMP_SEN_OFF_MASK 0xffff +#define EXYNOS850_TMU_EN_TEMP_SEN_OFF_SHIFT 0 + +#define EXYNOS850_TMU_REG_COUNTER_VALUE1 0x34 +#define EXYNOS850_TMU_CLK_SENSE_ON_MASK 0xffff +#define EXYNOS850_TMU_CLK_SENSE_ON_SHIFT 16 + +#define EXYNOS850_TMU_REG_AVG_CON 0x38 +#define EXYNOS850_TMU_AVG_MODE_MASK 0x7 +#define EXYNOS850_TMU_DEM_ENABLE BIT(4) + +#define EXYNOS850_TMU_REG_TRIM0 0x3c +#define EXYNOS850_TMU_TRIM0_MASK 0xf +#define EXYNOS850_TMU_VBEI_TRIM_SHIFT 8 +#define EXYNOS850_TMU_VREF_TRIM_SHIFT 12 +#define EXYNOS850_TMU_BGRI_TRIM_SHIFT 20 + +#define EXYNOS850_TMU_TEM1051X_SENSE_VALUE 0x028a +#define EXYNOS850_TMU_TEM1456X_SENSE_VALUE 0x0a28 + #define EXYNOS_FIRST_POINT_TRIM 25 #define EXYNOS_SECOND_POINT_TRIM 85 @@ -134,6 +169,7 @@ enum soc_type { SOC_ARCH_EXYNOS5420_TRIMINFO, SOC_ARCH_EXYNOS5433, SOC_ARCH_EXYNOS7, + SOC_ARCH_EXYNOS850, }; /** @@ -584,6 +620,114 @@ static void exynos7_tmu_initialize(struct platform_device *pdev) sanitize_temp_error(data, trim_info); } +static void exynos850_tmu_set_low_temp(struct exynos_tmu_data *data, u8 temp) +{ + exynos_tmu_update_temp(data, EXYNOS850_TMU_REG_THD_TEMP0_FALL + 12, 0, + temp); + exynos_tmu_update_bit(data, EXYNOS7_TMU_REG_INTEN, + EXYNOS_TMU_INTEN_FALL0_SHIFT + 0, true); +} + +static void exynos850_tmu_set_high_temp(struct exynos_tmu_data *data, u8 temp) +{ + exynos_tmu_update_temp(data, EXYNOS850_TMU_REG_THD_TEMP0_RISE + 12, 16, + temp); + exynos_tmu_update_bit(data, EXYNOS7_TMU_REG_INTEN, + EXYNOS7_TMU_INTEN_RISE0_SHIFT + 1, true); +} + +static void exynos850_tmu_disable_low(struct exynos_tmu_data *data) +{ + exynos_tmu_update_bit(data, EXYNOS7_TMU_REG_INTEN, + EXYNOS_TMU_INTEN_FALL0_SHIFT + 0, false); +} + +static void exynos850_tmu_disable_high(struct exynos_tmu_data *data) +{ + exynos_tmu_update_bit(data, EXYNOS7_TMU_REG_INTEN, + EXYNOS7_TMU_INTEN_RISE0_SHIFT + 1, false); +} + +static void exynos850_tmu_set_crit_temp(struct exynos_tmu_data *data, u8 temp) +{ + exynos_tmu_update_temp(data, EXYNOS850_TMU_REG_THD_TEMP0_RISE + 0, 16, + temp); + exynos_tmu_update_bit(data, EXYNOS_TMU_REG_CONTROL, + EXYNOS_TMU_THERM_TRIP_EN_SHIFT, true); + exynos_tmu_update_bit(data, EXYNOS7_TMU_REG_INTEN, + EXYNOS7_TMU_INTEN_RISE0_SHIFT + 7, true); +} + +static void exynos850_tmu_initialize(struct platform_device *pdev) +{ + struct exynos_tmu_data *data = platform_get_drvdata(pdev); + u32 cal_type, avg_mode, reg, bgri, vref, vbei; + + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(0)); + cal_type = (reg & EXYNOS5433_TRIMINFO_CALIB_SEL_MASK) >> + EXYNOS5433_TRIMINFO_CALIB_SEL_SHIFT; + data->reference_voltage = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & + EXYNOS_TMU_REF_VOLTAGE_MASK; + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(1)); + data->gain = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & + EXYNOS_TMU_BUF_SLOPE_SEL_MASK; + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(2)); + avg_mode = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & + EXYNOS850_TMU_AVG_MODE_MASK; + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(3)); + bgri = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & EXYNOS850_TMU_TRIM0_MASK; + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(4)); + vref = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & EXYNOS850_TMU_TRIM0_MASK; + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(5)); + vbei = (reg >> EXYNOS850_TMU_T_TRIM0_SHIFT) & EXYNOS850_TMU_TRIM0_MASK; + + data->cal_type = cal_type == EXYNOS5433_TRIMINFO_TWO_POINT_TRIMMING ? + TYPE_TWO_POINT_TRIMMING : + TYPE_ONE_POINT_TRIMMING; + + reg = readl(data->base + EXYNOS850_TMU_TRIMINFO_OFFSET(0)); + sanitize_temp_error(data, reg); + + dev_info(&pdev->dev, "Calibration type is %d-point calibration\n", + cal_type ? 2 : 1); + + reg = readl(data->base + EXYNOS850_TMU_REG_AVG_CON); + reg &= ~EXYNOS850_TMU_AVG_MODE_MASK; + reg &= ~EXYNOS850_TMU_DEM_ENABLE; + if (avg_mode) { + reg |= avg_mode; + reg |= EXYNOS850_TMU_DEM_ENABLE; + } + writel(reg, data->base + EXYNOS850_TMU_REG_AVG_CON); + + reg = readl(data->base + EXYNOS850_TMU_REG_COUNTER_VALUE0); + reg &= ~(EXYNOS850_TMU_EN_TEMP_SEN_OFF_MASK + << EXYNOS850_TMU_EN_TEMP_SEN_OFF_SHIFT); + reg |= EXYNOS850_TMU_TEM1051X_SENSE_VALUE + << EXYNOS850_TMU_EN_TEMP_SEN_OFF_SHIFT; + writel(reg, data->base + EXYNOS850_TMU_REG_COUNTER_VALUE0); + + reg = readl(data->base + EXYNOS850_TMU_REG_COUNTER_VALUE1); + reg &= ~(EXYNOS850_TMU_CLK_SENSE_ON_MASK + << EXYNOS850_TMU_CLK_SENSE_ON_SHIFT); + reg |= EXYNOS850_TMU_TEM1051X_SENSE_VALUE + << EXYNOS850_TMU_CLK_SENSE_ON_SHIFT; + writel(reg, data->base + EXYNOS850_TMU_REG_COUNTER_VALUE1); + + reg = readl(data->base + EXYNOS850_TMU_REG_TRIM0); + reg &= ~(EXYNOS850_TMU_TRIM0_MASK << EXYNOS850_TMU_BGRI_TRIM_SHIFT); + reg &= ~(EXYNOS850_TMU_TRIM0_MASK << EXYNOS850_TMU_VREF_TRIM_SHIFT); + reg &= ~(EXYNOS850_TMU_TRIM0_MASK << EXYNOS850_TMU_VBEI_TRIM_SHIFT); + reg |= bgri << EXYNOS850_TMU_BGRI_TRIM_SHIFT; + reg |= vref << EXYNOS850_TMU_VREF_TRIM_SHIFT; + reg |= vbei << EXYNOS850_TMU_VBEI_TRIM_SHIFT; + writel(reg, data->base + EXYNOS850_TMU_REG_TRIM0); + + reg = readl(data->base + EXYNOS850_TMU_REG_CONTROL1); + reg &= ~(EXYNOS850_TMU_LPI_MODE_MASK << EXYNOS850_TMU_LPI_MODE_SHIFT); + writel(reg, data->base + EXYNOS850_TMU_REG_CONTROL1); +} + static void exynos4210_tmu_control(struct platform_device *pdev, bool on) { struct exynos_tmu_data *data = platform_get_drvdata(pdev); @@ -673,7 +817,8 @@ static u32 get_emul_con_reg(struct exynos_tmu_data *data, unsigned int val, val &= ~(EXYNOS_EMUL_TIME_MASK << EXYNOS_EMUL_TIME_SHIFT); val |= (EXYNOS_EMUL_TIME << EXYNOS_EMUL_TIME_SHIFT); - if (data->soc == SOC_ARCH_EXYNOS7) { + if (data->soc == SOC_ARCH_EXYNOS7 || + data->soc == SOC_ARCH_EXYNOS850) { val &= ~(EXYNOS7_EMUL_DATA_MASK << EXYNOS7_EMUL_DATA_SHIFT); val |= (temp_to_code(data, temp) << @@ -703,7 +848,8 @@ static void exynos4412_tmu_set_emulation(struct exynos_tmu_data *data, emul_con = EXYNOS5260_EMUL_CON; else if (data->soc == SOC_ARCH_EXYNOS5433) emul_con = EXYNOS5433_TMU_EMUL_CON; - else if (data->soc == SOC_ARCH_EXYNOS7) + else if (data->soc == SOC_ARCH_EXYNOS7 || + data->soc == SOC_ARCH_EXYNOS850) emul_con = EXYNOS7_TMU_REG_EMUL_CON; else emul_con = EXYNOS_EMUL_CON; @@ -758,6 +904,12 @@ static int exynos7_tmu_read(struct exynos_tmu_data *data) EXYNOS7_TMU_TEMP_MASK; } +static int exynos850_tmu_read(struct exynos_tmu_data *data) +{ + return readw(data->base + EXYNOS850_TMU_REG_CURRENT_TEMP0_1) & + EXYNOS7_TMU_TEMP_MASK; +} + static irqreturn_t exynos_tmu_threaded_irq(int irq, void *id) { struct exynos_tmu_data *data = id; @@ -784,7 +936,8 @@ static void exynos4210_tmu_clear_irqs(struct exynos_tmu_data *data) if (data->soc == SOC_ARCH_EXYNOS5260) { tmu_intstat = EXYNOS5260_TMU_REG_INTSTAT; tmu_intclear = EXYNOS5260_TMU_REG_INTCLEAR; - } else if (data->soc == SOC_ARCH_EXYNOS7) { + } else if (data->soc == SOC_ARCH_EXYNOS7 || + data->soc == SOC_ARCH_EXYNOS850) { tmu_intstat = EXYNOS7_TMU_REG_INTPEND; tmu_intclear = EXYNOS7_TMU_REG_INTPEND; } else if (data->soc == SOC_ARCH_EXYNOS5433) { @@ -835,6 +988,9 @@ static const struct of_device_id exynos_tmu_match[] = { }, { .compatible = "samsung,exynos7-tmu", .data = (const void *)SOC_ARCH_EXYNOS7, + }, { + .compatible = "samsung,exynos850-tmu", + .data = (const void *)SOC_ARCH_EXYNOS850, }, { }, }; @@ -952,6 +1108,23 @@ static int exynos_map_dt_data(struct platform_device *pdev) data->min_efuse_value = 15; data->max_efuse_value = 100; break; + case SOC_ARCH_EXYNOS850: + data->tmu_set_low_temp = exynos850_tmu_set_low_temp; + data->tmu_set_high_temp = exynos850_tmu_set_high_temp; + data->tmu_disable_low = exynos850_tmu_disable_low; + data->tmu_disable_high = exynos850_tmu_disable_high; + data->tmu_set_crit_temp = exynos850_tmu_set_crit_temp; + data->tmu_initialize = exynos850_tmu_initialize; + data->tmu_control = exynos4210_tmu_control; + data->tmu_read = exynos850_tmu_read; + data->tmu_set_emulation = exynos4412_tmu_set_emulation; + data->tmu_clear_irqs = exynos4210_tmu_clear_irqs; + data->temp_mask = EXYNOS7_TMU_TEMP_MASK; + data->temp_85_shift = EXYNOS7_TMU_TEMP_SHIFT; + data->efuse_value = 55; + data->min_efuse_value = 0; + data->max_efuse_value = 511; + break; default: dev_err(&pdev->dev, "Platform not supported\n"); return -EINVAL; -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20240911121159eucas1p1ecfa41871f21953b49d90c287d121409@eucas1p1.samsung.com>]
* [PATCH v4 7/7] dt-bindings: thermal: samsung,exynos: remove driver-specific information [not found] ` <CGME20240911121159eucas1p1ecfa41871f21953b49d90c287d121409@eucas1p1.samsung.com> @ 2024-09-11 12:11 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2024-09-11 12:11 UTC (permalink / raw) To: linux-pm, linux-samsung-soc, devicetree, linux-arm-kernel, linux-kernel Cc: Mateusz Majewski, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski, Krzysztof Kozlowski The number of supported trip points was only limited by the driver implementation at the time, which mapped each trip point defined in the devicetree source file to a hardware trip point. An implementation that does not have this limitation is possible; indeed, that is how the driver works currently. Therefore, this information should be removed from the bindings description, which are meant to be independent of the details of the driver implementation. Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Mateusz Majewski <m.majewski2@samsung.com> --- v2 -> v3: reword the commit message to be easier to understand in context of dt-bindings. v1 -> v2: remove an unnecessary sentence. .../devicetree/bindings/thermal/samsung,exynos-thermal.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml b/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml index b8c0bb7f4263..b85b4c420cd3 100644 --- a/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml +++ b/Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml @@ -40,11 +40,7 @@ properties: interrupts: description: | The Exynos TMU supports generating interrupts when reaching given - temperature thresholds. Number of supported thermal trip points depends - on the SoC (only first trip points defined in DT will be configured):: - - most of SoC: 4 - - samsung,exynos5433-tmu: 8 - - samsung,exynos7-tmu: 8 + temperature thresholds. maxItems: 1 reg: -- 2.45.2 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver 2024-09-11 12:11 ` [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver Mateusz Majewski ` (6 preceding siblings ...) [not found] ` <CGME20240911121159eucas1p1ecfa41871f21953b49d90c287d121409@eucas1p1.samsung.com> @ 2026-02-18 18:29 ` Alexey Klimov 2026-03-03 9:02 ` Mateusz Majewski 7 siblings, 1 reply; 13+ messages in thread From: Alexey Klimov @ 2026-02-18 18:29 UTC (permalink / raw) To: Mateusz Majewski, linux-samsung-soc Cc: linux-pm, devicetree, linux-arm-kernel, linux-kernel, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski Hi Mateusz, On Wed Sep 11, 2024 at 1:11 PM BST, Mateusz Majewski wrote: > This series adds initial Exynos850 support to the thermal driver > together with its requirements (sanitize_temp_error fix, adding the new > string to dt-bindings), while also cleaning up a bit (improving power > management support and removing some outdated information from > dt-bindings). > > Changelog: > v4: > - Cleaned up sanitize_temp_error a bit more > - Modified exynos_tmu_update_temp to match sanitize_temp_error > v3: > - Reworded the commit message of the dt-binding information removal > change > v2: > - Reimplemented to use the Exynos850 TMU clock: removed the patch to > make the clock optional and changed dt-bindings change accordingly > - Improved the Exynos850 implementation itself (style and one correct > register offset) > - Removed conditional compilation in favor of pm_sleep_ptr > - Shortened dt-bindings description > > > Mateusz Majewski (7): > drivers/thermal/exynos: use DEFINE_SIMPLE_DEV_PM_OPS > drivers/thermal/exynos: use pm_sleep_ptr instead of conditional > compilation > drivers/thermal/exynos: improve sanitize_temp_error > drivers/thermal/exynos: reuse data->temp_mask in > exynos_tmu_update_temp > dt-bindings: thermal: samsung,exynos: add exynos850-tmu string > drivers/thermal/exynos: add initial Exynos850 support > dt-bindings: thermal: samsung,exynos: remove driver-specific > information > > .../thermal/samsung,exynos-thermal.yaml | 8 +- > drivers/thermal/samsung/exynos_tmu.c | 237 +++++++++++++++--- I applied the whole series locally, it applies fine on 6.19 but I didn't check linux-next; and tested it on Exynos850 E850-96 board with the following DT node: tmuctrl_0: tmu@10070000 { compatible = "samsung,exynos850-tmu"; reg = <0x10070000 0x800>; interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cmu_peri CLK_GOUT_BUSIF_TMU_PCLK>; clock-names = "tmu_apbif"; #thermal-sensor-cells = <0>; }; and thermal zones as you mentioned way back. It works just fine. Temp goes up to 48 C with a loaded CPUs and settles at 36-37C when idle. So for the whole series: Tested-by: Alexey Klimov <alexey.klimov@linaro.org> However, do you have plans to update it or re-submit? Or any other plans working on it? Thank you! Best regards, Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver 2026-02-18 18:29 ` [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver Alexey Klimov @ 2026-03-03 9:02 ` Mateusz Majewski 2026-03-06 12:35 ` Mateusz Majewski 2026-03-10 2:56 ` Alexey Klimov 0 siblings, 2 replies; 13+ messages in thread From: Mateusz Majewski @ 2026-03-03 9:02 UTC (permalink / raw) To: Alexey Klimov Cc: Mateusz Majewski, linux-samsung-soc, linux-pm, devicetree, linux-arm-kernel, linux-kernel, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski Hello and sorry for missing your mail, thankfully Marek pointed it out to me. > I applied the whole series locally, it applies fine on 6.19 but I didn't > check linux-next; and tested it on Exynos850 E850-96 board with the > following DT node: > > tmuctrl_0: tmu@10070000 { > compatible = "samsung,exynos850-tmu"; > reg = <0x10070000 0x800>; > interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>; > clocks = <&cmu_peri CLK_GOUT_BUSIF_TMU_PCLK>; > clock-names = "tmu_apbif"; > #thermal-sensor-cells = <0>; > }; > > and thermal zones as you mentioned way back. It works just fine. > Temp goes up to 48 C with a loaded CPUs and settles at 36-37C when idle. > > So for the whole series: > Tested-by: Alexey Klimov <alexey.klimov@linaro.org> Thank you! > However, do you have plans to update it or re-submit? > Or any other plans working on it? Honestly not sure. If any other patches are merged that conflict with this series, I definitely can resolve the commits (for now it applies just fine to next-20260227, though I haven't compiled the result yet). Correct me if I am wrong, but I don't recall anything to be done in this series otherwise. If there is interest in this series, I can retest this on the other boards and re-submit this later this week. Kind regards, Mateusz Majewski ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver 2026-03-03 9:02 ` Mateusz Majewski @ 2026-03-06 12:35 ` Mateusz Majewski 2026-03-10 2:56 ` Alexey Klimov 1 sibling, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2026-03-06 12:35 UTC (permalink / raw) To: Alexey Klimov Cc: Mateusz Majewski, linux-samsung-soc, linux-pm, devicetree, linux-arm-kernel, linux-kernel, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski > Honestly not sure. If any other patches are merged that conflict with > this series, I definitely can resolve the commits (for now it applies > just fine to next-20260227, though I haven't compiled the result yet). > Correct me if I am wrong, but I don't recall anything to be done in this > series otherwise. If there is interest in this series, I can retest this > on the other boards and re-submit this later this week. I see that others are working on different SoCs actively and that my series conflict with theirs. Probably would make more sense to re-submit/rebase when the dust settles, unless somebody wants to use these patches now (I am assuming that you are just cleaning up the review queue for now). (Also, I somehow managed to break threading by sending my previous message with only In-Reply-To: and without References:. Sorry about that...) Kind regards, Mateusz Majewski ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver 2026-03-03 9:02 ` Mateusz Majewski 2026-03-06 12:35 ` Mateusz Majewski @ 2026-03-10 2:56 ` Alexey Klimov [not found] ` <CGME20260312160809eucas1p1fc79e4d333f3995a48b68ff07ec7726c@eucas1p1.samsung.com> 1 sibling, 1 reply; 13+ messages in thread From: Alexey Klimov @ 2026-03-10 2:56 UTC (permalink / raw) To: Mateusz Majewski Cc: linux-samsung-soc, linux-pm, devicetree, linux-arm-kernel, linux-kernel, Bartlomiej Zolnierkiewicz, Krzysztof Kozlowski, Rafael J. Wysocki, Daniel Lezcano, Zhang Rui, Lukasz Luba, Rob Herring, Conor Dooley, Alim Akhtar, Sam Protsenko, Anand Moon, Marek Szyprowski Hello Mateusz, Sorry for delayed response too. On Tue Mar 3, 2026 at 9:02 AM GMT, Mateusz Majewski wrote: > Hello and sorry for missing your mail, thankfully Marek pointed it out > to me. > >> I applied the whole series locally, it applies fine on 6.19 but I didn't >> check linux-next; and tested it on Exynos850 E850-96 board with the >> following DT node: >> >> tmuctrl_0: tmu@10070000 { >> compatible = "samsung,exynos850-tmu"; >> reg = <0x10070000 0x800>; >> interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>; >> clocks = <&cmu_peri CLK_GOUT_BUSIF_TMU_PCLK>; >> clock-names = "tmu_apbif"; >> #thermal-sensor-cells = <0>; >> }; >> >> and thermal zones as you mentioned way back. It works just fine. >> Temp goes up to 48 C with a loaded CPUs and settles at 36-37C when idle. >> >> So for the whole series: >> Tested-by: Alexey Klimov <alexey.klimov@linaro.org> > > Thank you! > >> However, do you have plans to update it or re-submit? >> Or any other plans working on it? > > Honestly not sure. If any other patches are merged that conflict with > this series, I definitely can resolve the commits (for now it applies > just fine to next-20260227, though I haven't compiled the result yet). > Correct me if I am wrong, but I don't recall anything to be done in this > series otherwise. If there is interest in this series, I can retest this > on the other boards and re-submit this later this week. So, I bumped into the same issue you described in your other email. Other sensors seems to be not initialised and always return some weird temp (minus 29 or smth like that). Only first sensors works. I initially started to look at this after enabling idle states on E850-96 (they work with only some un-upstreamable change). Having at least one sensor is better than nothing. I am looking at enabling ACPM thermal thingy but so far I see similar issue that temp of all sensors is reported as 10 C regardless via ACPM. Having said that I am not going to oppose this series moving forward if you wish. Thank you. Best regards, Alexey ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CGME20260312160809eucas1p1fc79e4d333f3995a48b68ff07ec7726c@eucas1p1.samsung.com>]
* Re: [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver [not found] ` <CGME20260312160809eucas1p1fc79e4d333f3995a48b68ff07ec7726c@eucas1p1.samsung.com> @ 2026-03-12 16:07 ` Mateusz Majewski 0 siblings, 0 replies; 13+ messages in thread From: Mateusz Majewski @ 2026-03-12 16:07 UTC (permalink / raw) To: alexey.klimov Cc: alim.akhtar, bzolnier, conor+dt, daniel.lezcano, devicetree, krzk, linux-arm-kernel, linux-kernel, linux-pm, linux-samsung-soc, linux.amoon, lukasz.luba, m.majewski2, m.szyprowski, rafael, robh, rui.zhang, semen.protsenko > I am looking at enabling ACPM thermal thingy but so far I see similar > issue that temp of all sensors is reported as 10 C regardless via ACPM. > > Having said that I am not going to oppose this series moving forward if > you wish. Sure, I will probably get back to this when the other series are more resolved like I said in the last email :) Or maybe by this time I will learn more about ACPM but I doubt it. Kind regards, Mateusz Majewski ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-03-12 16:08 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20240911121149eucas1p29b9ccf99a545cfaa924b122cd8dd3183@eucas1p2.samsung.com>
2024-09-11 12:11 ` [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver Mateusz Majewski
[not found] ` <CGME20240911121152eucas1p113445ce1ce6b6bd9c8f96322604bf517@eucas1p1.samsung.com>
2024-09-11 12:11 ` [PATCH v4 1/7] drivers/thermal/exynos: use DEFINE_SIMPLE_DEV_PM_OPS Mateusz Majewski
[not found] ` <CGME20240911121153eucas1p20f864c51746e6a7de55ecd0e52efe5c4@eucas1p2.samsung.com>
2024-09-11 12:11 ` [PATCH v4 2/7] drivers/thermal/exynos: use pm_sleep_ptr instead of conditional compilation Mateusz Majewski
[not found] ` <CGME20240911121154eucas1p1a429a565c446cdd968f565df1ffae42c@eucas1p1.samsung.com>
2024-09-11 12:11 ` [PATCH v4 3/7] drivers/thermal/exynos: improve sanitize_temp_error Mateusz Majewski
[not found] ` <CGME20240911121155eucas1p160223d89bff83a89a03c5447252f44a9@eucas1p1.samsung.com>
2024-09-11 12:11 ` [PATCH v4 4/7] drivers/thermal/exynos: reuse data->temp_mask in exynos_tmu_update_temp Mateusz Majewski
[not found] ` <CGME20240911121157eucas1p2a8ff398f0f30f141de974763680bb041@eucas1p2.samsung.com>
2024-09-11 12:11 ` [PATCH v4 5/7] dt-bindings: thermal: samsung,exynos: add exynos850-tmu string Mateusz Majewski
[not found] ` <CGME20240911121158eucas1p2ab3ec5b5b59351af22c5740e02236b16@eucas1p2.samsung.com>
2024-09-11 12:11 ` [PATCH v4 6/7] drivers/thermal/exynos: add initial Exynos850 support Mateusz Majewski
[not found] ` <CGME20240911121159eucas1p1ecfa41871f21953b49d90c287d121409@eucas1p1.samsung.com>
2024-09-11 12:11 ` [PATCH v4 7/7] dt-bindings: thermal: samsung,exynos: remove driver-specific information Mateusz Majewski
2026-02-18 18:29 ` [PATCH v4 0/7] Add initial Exynos850 support to the thermal driver Alexey Klimov
2026-03-03 9:02 ` Mateusz Majewski
2026-03-06 12:35 ` Mateusz Majewski
2026-03-10 2:56 ` Alexey Klimov
[not found] ` <CGME20260312160809eucas1p1fc79e4d333f3995a48b68ff07ec7726c@eucas1p1.samsung.com>
2026-03-12 16:07 ` Mateusz Majewski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®