• Daniel Lezcano's avatar
    thermal/of: Rework the thermal device tree initialization · 3fd6d6e2
    Daniel Lezcano authored
    The following changes are reworking entirely the thermal device tree
    initialization. The old version is kept until the different drivers
    using it are converted to the new API.
    
    The old approach creates the different actors independently. This
    approach is the source of the code duplication in the thermal OF
    because a thermal zone is created but a sensor is registered
    after. The thermal zones are created unconditionnaly with a fake
    sensor at init time, thus forcing to provide fake ops and store all
    the thermal zone related information in duplicated structures. Then
    the sensor is initialized and the code looks up the thermal zone name
    using the device tree. Then the sensor is associated to the thermal
    zone, and the sensor specific ops are called with a second level of
    indirection from the thermal zone ops.
    
    When a sensor is removed (with a module unload), the thermal zone
    stays there with the fake sensor.
    
    The cooling device associated with a thermal zone and a trip point is
    stored in a list, again duplicating information, using the node name
    of the device tree to match afterwards the cooling devices.
    
    The new approach is simpler, it creates a thermal zone when the sensor
    is registered and destroys it when the sensor is removed. All the
    matching between the cooling device, trip points and thermal zones are
    done using the device tree, as well as bindings. The ops are no longer
    specific but uses the generic ones provided by the thermal framework.
    
    When the old code won't have any users, it can be removed and the
    remaining thermal OF code will be much simpler.
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linexp.org>
    Link: https://lore.kernel.org/r/20220804224349.1926752-2-daniel.lezcano@linexp.orgSigned-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    3fd6d6e2
thermal_of.c 39.9 KB