blob: f983fb6c9c89f400b2aa67eb13d003fde0f4bdd1 [file] [log] [blame]
From horms@vergenet.net Tue Sep 5 10:07:31 2017
From: Simon Horman <horms@verge.net.au>
Date: Tue, 5 Sep 2017 10:06:38 +0200
Subject: [PATCH 03/13] thermal: rcar_gen3_thermal: add delay in .thermal_init on r8a7796
To: Greg KH <gregkh@linuxfoundation.org>
Cc: ltsi-dev@lists.linuxfoundation.org, linux-renesas-soc@vger.kernel.org, Magnus Damm <magnus.damm@gmail.com>
Message-ID: <1504598808-19810-4-git-send-email-horms@verge.net.au>
From: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
The .thermal_init needs to be delayed a short amount of time to allow
for the TEMP register to contain something useful. If it's not delayed
these warnings are common during boot:
thermal thermal_zone0: failed to read out thermal zone (-5)
thermal thermal_zone1: failed to read out thermal zone (-5)
thermal thermal_zone2: failed to read out thermal zone (-5)
The warnings are triggered by the first call to .get_temp() while the
TEMP register contains 0 and rcar_gen3_thermal_get_temp() returns -EIO
since a TEMP value of 0 will result in a temperature reading which is
out of specifications.
This should have been done in the initial commit which adds the driver
as the same issue was found and corrected for r8a7795.
Fixes: 564e73d283af9d4c ("thermal: rcar_gen3_thermal: Add R-Car Gen3 thermal driver")
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
(cherry picked from commit 78aefd2d5911c4e0b5dc0b0578b3b8c7673be1d2)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
drivers/thermal/rcar_gen3_thermal.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/thermal/rcar_gen3_thermal.c
+++ b/drivers/thermal/rcar_gen3_thermal.c
@@ -222,6 +222,8 @@ static void r8a7796_thermal_init(struct
reg_val = rcar_gen3_thermal_read(tsc, REG_GEN3_THCTR);
reg_val |= THCTR_THSST;
rcar_gen3_thermal_write(tsc, REG_GEN3_THCTR, reg_val);
+
+ usleep_range(1000, 2000);
}
static const struct rcar_gen3_thermal_data r8a7795_data = {