lkml.org 
[lkml]   [2016]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv4 17/48] thermal: core: split policy_store
    Date
    Similarly to passive_store, policy_store now is split
    between thermal core data structure handling and sysfs handling.

    Cc: Zhang Rui <rui.zhang@intel.com>
    Cc: linux-pm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
    ---
    drivers/thermal/thermal_core.c | 37 ++++++++++++++++++++++++-------------
    drivers/thermal/thermal_core.h | 1 +
    2 files changed, 25 insertions(+), 13 deletions(-)

    diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
    index 59ebe4e..5fd852f 100644
    --- a/drivers/thermal/thermal_core.c
    +++ b/drivers/thermal/thermal_core.c
    @@ -700,6 +700,28 @@ void thermal_zone_device_unbind_exception(struct thermal_zone_device *tz,
    mutex_unlock(&thermal_list_lock);
    }

    +int thermal_zone_device_set_policy(struct thermal_zone_device *tz,
    + char *policy)
    +{
    + struct thermal_governor *gov;
    + int ret = -EINVAL;
    +
    + mutex_lock(&thermal_governor_lock);
    + mutex_lock(&tz->lock);
    +
    + gov = __find_governor(strim(policy));
    + if (!gov)
    + goto exit;
    +
    + ret = thermal_set_governor(tz, gov);
    +
    +exit:
    + mutex_unlock(&tz->lock);
    + mutex_unlock(&thermal_governor_lock);
    +
    + return ret;
    +}
    +
    /* sys I/F for thermal zone */

    #define to_thermal_zone(_dev) \
    @@ -941,27 +963,16 @@ static ssize_t
    policy_store(struct device *dev, struct device_attribute *attr,
    const char *buf, size_t count)
    {
    - int ret = -EINVAL;
    struct thermal_zone_device *tz = to_thermal_zone(dev);
    - struct thermal_governor *gov;
    char name[THERMAL_NAME_LENGTH];
    + int ret;

    snprintf(name, sizeof(name), "%s", buf);

    - mutex_lock(&thermal_governor_lock);
    - mutex_lock(&tz->lock);
    -
    - gov = __find_governor(strim(name));
    - if (!gov)
    - goto exit;
    -
    - ret = thermal_set_governor(tz, gov);
    + ret = thermal_zone_device_set_policy(tz, name);
    if (!ret)
    ret = count;

    -exit:
    - mutex_unlock(&tz->lock);
    - mutex_unlock(&thermal_governor_lock);
    return ret;
    }

    diff --git a/drivers/thermal/thermal_core.h b/drivers/thermal/thermal_core.h
    index a765c75..db65d3b 100644
    --- a/drivers/thermal/thermal_core.h
    +++ b/drivers/thermal/thermal_core.h
    @@ -60,6 +60,7 @@ void thermal_zone_device_rebind_exception(struct thermal_zone_device *,
    const char *, size_t);
    void thermal_zone_device_unbind_exception(struct thermal_zone_device *,
    const char *, size_t);
    +int thermal_zone_device_set_policy(struct thermal_zone_device *, char *);

    #ifdef CONFIG_THERMAL_GOV_STEP_WISE
    int thermal_gov_step_wise_register(void);
    --
    2.1.4
    \
     
     \ /
      Last update: 2016-05-31 08:41    [W:4.358 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site