mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 19:51:31 -04:00
thermal: samsung: Only update available threshold limits
Currently the threshold limits are updated in 2 stages, once for all software trigger levels and again for hardware trip point. While updating the software trigger levels, it overwrites the threshold limit for hardware trip point thereby forcing the Exynos core to issue an emergency shutdown. Updating only the required fields in threshold register fixes this issue. Signed-off-by: Tushar Behera <[email protected]> Acked-by: Amit Daniel Kachhap <[email protected]> Signed-off-by: Zhang Rui <[email protected]>
This commit is contained in:
parent
ced2284339
commit
c65d34735a
1 changed files with 4 additions and 0 deletions
|
|
@ -225,6 +225,8 @@ skip_calib_data:
|
|||
trigger_levs++;
|
||||
}
|
||||
|
||||
rising_threshold = readl(data->base + reg->threshold_th0);
|
||||
|
||||
if (data->soc == SOC_ARCH_EXYNOS4210) {
|
||||
/* Write temperature code for threshold */
|
||||
threshold_code = temp_to_code(data, pdata->threshold);
|
||||
|
|
@ -249,6 +251,7 @@ skip_calib_data:
|
|||
ret = threshold_code;
|
||||
goto out;
|
||||
}
|
||||
rising_threshold &= ~(0xff << 8 * i);
|
||||
rising_threshold |= threshold_code << 8 * i;
|
||||
if (pdata->threshold_falling) {
|
||||
threshold_code = temp_to_code(data,
|
||||
|
|
@ -281,6 +284,7 @@ skip_calib_data:
|
|||
}
|
||||
if (i == EXYNOS_MAX_TRIGGER_PER_REG - 1) {
|
||||
/* 1-4 level to be assigned in th0 reg */
|
||||
rising_threshold &= ~(0xff << 8 * i);
|
||||
rising_threshold |= threshold_code << 8 * i;
|
||||
writel(rising_threshold,
|
||||
data->base + reg->threshold_th0);
|
||||
|
|
|
|||
Loading…
Reference in a new issue