Messages in this thread | | | Date | Fri, 20 Jan 2023 19:27:50 +0100 | Subject | Re: [PATCH v5 1/3] thermal/acpi: Add ACPI trip point routines | From | Daniel Lezcano <> |
| |
On 20/01/2023 19:15, Rafael J. Wysocki wrote: > On Fri, Jan 20, 2023 at 7:08 PM Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: >> >> >> Hi Rafael, >> >> >> On 19/01/2023 14:15, Rafael J. Wysocki wrote: >> >> [ ... ] >> >>>> +static int thermal_acpi_get_temperature_object(struct acpi_device *adev, >>>> + char *object, int *temperature) >>> >>> So this would become thermal_acpi_get_temp_object(). or even >>> thermal_acpi_get_temp() because it really returns the temperature >>> value. >>> >>> I also don't particularly like returning values via pointers, which is >>> entirely avoidable here, because the temperature value obtained from >>> the ACPI control methods must be a positive number. >>> >>> So I would make it >>> >>> static int thermal_acpi_get_temp(struct acpi_device *adev, char *object_name) >>> { >> >> We are converting decikelvin -> millicelsius. Even it is very unlikely, >> the result could be less than zero (eg. -1°C). We won't be able to >> differentiate -ENODATA with a negative value, no ? >> >> In the future, it is possible we will have to deal with cold trip points >> in order to warm a board. May be we should don't care for now ? > > My point is that the ACPI specification mandates that the return > values be in deciK and so always non-negative.
I understand that but the code does:
static int thermal_acpi_get_temp(struct acpi_device *adev, char *object_name) { ...
return deci_kelvin_to_millicelsius(temp); }
All the callers do:
...
ret = thermal_acpi_get_temp(adev, name); if (ret < 0) return ret; /* This could be an error * or negative millicelsius temperature */
/* here we already have millicelsius */ trip->temperature = ret; ...
So I guess we want to do:
...
ret = thermal_acpi_get_temp(adev, name); if (ret < 0) return ret;
/* we convert here instead in thermal_acpi_get_temp() */ trip->temperature = deci_kelvin_to_millicelsius(ret); ...
Sounds good ?
-- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog
| |