From: Lars Povlsen Date: Thu, 3 Sep 2020 13:47:04 +0000 (+0200) Subject: hwmon: (sparx5) Fix initial reading of temperature X-Git-Tag: v5.10.7~1464^2~63 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fcb575bfac80d6deb4940d2ebf506d6701761f38;p=platform%2Fkernel%2Flinux-rpi.git hwmon: (sparx5) Fix initial reading of temperature If the temperature is read before the internal calibration is completed, the driver returns -EIO. Instead it should return -EAGAIN to encourage repeating the operation. Note (groeck): Returning -EAGAIN to userspace may result in hard loops; some userspace code interprets -EAGAIN as request to retry immediately. I would prefer -ENODATA, but it turns out that the thermal subsystem only handles -EAGAIN silently, so we'll have to stick with that. Signed-off-by: Lars Povlsen Link: https://lore.kernel.org/r/20200903134704.8949-1-lars.povlsen@microchip.com Signed-off-by: Guenter Roeck --- diff --git a/drivers/hwmon/sparx5-temp.c b/drivers/hwmon/sparx5-temp.c index 1a2b102..98be48e 100644 --- a/drivers/hwmon/sparx5-temp.c +++ b/drivers/hwmon/sparx5-temp.c @@ -56,7 +56,7 @@ static int s5_read(struct device *dev, enum hwmon_sensor_types type, case hwmon_temp_input: stat = readl_relaxed(hwmon->base + TEMP_STAT); if (!(stat & TEMP_STAT_VALID)) - return -EIO; + return -EAGAIN; value = stat & TEMP_STAT_TEMP; /* * From register documentation: