thermal: rcar_gen3_thermal: enable hardware interrupts for trip points
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Wed, 29 Mar 2017 18:43:54 +0000 (20:43 +0200)
committerEduardo Valentin <edubezval@gmail.com>
Fri, 31 Mar 2017 04:45:38 +0000 (21:45 -0700)
commit7d4b269776ec67c1b7d83c6c727a2771e5f39d12
treed347d8be43ab66bde61ceec8692105c20e4a6ce2
parent97dad1f1d2b3f2a2a77551849357b7ac38b0b6ff
thermal: rcar_gen3_thermal: enable hardware interrupts for trip points

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 <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/thermal/rcar_gen3_thermal.c