11 Aug, 2017
1 commit
-
The thermal_zone_of_device_ops structure is only passed as the fourth
argument to devm_thermal_zone_of_sensor_register, which is declared
as const. Thus the thermal_zone_of_device_ops structure itself can
be const.Done with the help of Coccinelle.
Signed-off-by: Julia Lawall
Signed-off-by: Zhang Rui
31 Mar, 2017
7 commits
-
To restore operation it's easiest to reinitialise all TSCs. In order to
do this the current trip window needs to be stored in the TSC structure
so that it can be restored upon resume.Signed-off-by: Niklas Söderlund
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
The device match data needs to be accessible outside the probe function,
store it in the private data structure.Signed-off-by: Niklas Söderlund
Reviewed-by: Geert Uytterhoeven
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
Enable hardware trip points by implementing the set_trips callback. The
thermal core will take care of setting the initial trip point window and
to update it once the driver reports a TSC has moved outside it.The interrupt structure for this device is a bit odd. There is not a
dedicated IRQ for each TSC, instead the interrupts are shared between
all TSCs. IRQn is fired if the temp monitored in IRQTEMPn is reached in
any of the TSCs, example IRQ3 is fired if temperature in IRQTEMP3 is
reached in either TSC0, TSC1 or TSC2.For this reason the usage of interrupts in this driver is an all-on or
all-off design. When an interrupt happens all TSCs are checked and all
thermal zones are updated. This could be refined to be more fine grained
but the thermal core takes care of only updating the thermal zones that
have left their trip point window.Signed-off-by: Niklas Söderlund
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
Record how many TSCs are found in struct rcar_gen3_thermal_priv, this is
needed to be able to add hardware interrupts for trip points later. Also
add a check to make sure at least one TSC is found.Signed-off-by: Niklas Söderlund
Reviewed-by: Geert Uytterhoeven
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
Move the check for a TSC resource before allocating memory for a new
TSC. If no TSC is found there is little point in allocating memory for
it.Signed-off-by: Niklas Söderlund
Reviewed-by: Geert Uytterhoeven
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
There is no point in protecting a register read with a lock. This is
most likely a leftover from when the driver was reworked before being
submitted for upstream.Signed-off-by: Niklas Söderlund
Reviewed-by: Geert Uytterhoeven
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin -
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
Reviewed-by: Geert Uytterhoeven
Reviewed-by: Wolfram Sang
Signed-off-by: Eduardo Valentin
20 Jan, 2017
1 commit
-
Add support for R-Car Gen3 thermal sensors. Polling only for now,
interrupts will be added incrementally. Same goes for reading fuses.
This is documented already, but no hardware available for now.Signed-off-by: Hien Dang
Signed-off-by: Thao Nguyen
Signed-off-by: Khiem Nguyen
Signed-off-by: Wolfram Sang
[Niklas: document and rework temperature calculation]
Signed-off-by: Niklas Söderlund
Signed-off-by: Eduardo Valentin