11 Aug, 2017

1 commit


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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     
  • 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

    Niklas Söderlund
     

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

    Wolfram Sang