Skip to content

Commit

Permalink
ODROID-XU4: Update hack avoiding the invalid temperature by TMU broken
Browse files Browse the repository at this point in the history
Change-Id: I6092834427950a50746535458e99bf7089212044
  • Loading branch information
charles-park authored and tobetter committed Dec 8, 2021
1 parent 2bc9e57 commit 4ea975c
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions drivers/thermal/thermal_helpers.c
Expand Up @@ -75,6 +75,10 @@ EXPORT_SYMBOL(get_thermal_instance);
*
* Return: On success returns 0, an error code otherwise
*/

#define CRITICAL_TEMP 120000
int thermal_zone_data[4] = { 0, };

int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
{
int ret = -EINVAL;
Expand Down Expand Up @@ -108,6 +112,30 @@ int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp)
*temp = tz->emul_temperature;
}

/* save thermal_zone data */
if (!ret)
thermal_zone_data[tz->id] = *temp;
/*
* This case is that the thermal sensor is broken.
* That's not real temperature. Set the fake temperature value in order to
* avoid reaching the ciritical temperature.
*/
if ((thermal_zone_data[tz->id] > CRITICAL_TEMP) && (tz->id != 4)) {
int i, broken_sensor = 0, correct_temp = 0;
for (i = 0; i < 4; i++) {
if ((thermal_zone_data[i] <= CRITICAL_TEMP) &&
(correct_temp <= thermal_zone_data[i]))
correct_temp = thermal_zone_data[i];
if (thermal_zone_data[i] > CRITICAL_TEMP)
broken_sensor++;
}
/*
* if all thermal sensor broken then critical temperature data send
* for system poweroff.
*/
*temp = (broken_sensor == 4) ? CRITICAL_TEMP : correct_temp;
}

mutex_unlock(&tz->lock);
exit:
return ret;
Expand Down

0 comments on commit 4ea975c

Please sign in to comment.