| 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 = { |