• Mateusz Majewski's avatar
    thermal/drivers/exynos: Use set_trips ops · 5314b154
    Mateusz Majewski authored
    Currently, each trip point defined in the device tree corresponds to a
    single hardware interrupt. This commit instead switches to using two
    hardware interrupts, whose values are set dynamically using the
    set_trips callback. Additionally, the critical temperature threshold is
    handled specifically.
    
    Setting interrupts in this way also fixes a long-standing lockdep
    warning, which was caused by calling thermal_zone_get_trips with our
    lock being held. Do note that this requires TMU initialization to be
    split into two parts, as done by the parent commit: parts of the
    initialization call into the thermal_zone_device structure and so must
    be done after its registration, but the initialization is also
    responsible for setting up calibration, which must be done before
    thermal_zone_device registration, which will call set_trips for the
    first time; if the calibration is not done in time, the interrupt values
    will be silently wrong!
    Reviewed-by: default avatarLukasz Luba <lukasz.luba@arm.com>
    Signed-off-by: default avatarMateusz Majewski <m.majewski2@samsung.com>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20231201095625.301884-10-m.majewski2@samsung.com
    5314b154
exynos_tmu.c 33.4 KB