lkml.org 
[lkml]   [2020]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] opp: Split out _opp_set_rate_zero()
    Date
    Create separate routine _opp_set_rate_zero() to handle !target_freq
    case.

    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    ---
    drivers/opp/core.c | 52 +++++++++++++++++++++++++++++-----------------------
    1 file changed, 29 insertions(+), 23 deletions(-)

    diff --git a/drivers/opp/core.c b/drivers/opp/core.c
    index 5f5da257f58a..e198b57efcf8 100644
    --- a/drivers/opp/core.c
    +++ b/drivers/opp/core.c
    @@ -860,6 +860,34 @@ int dev_pm_opp_set_bw(struct device *dev, struct dev_pm_opp *opp)
    }
    EXPORT_SYMBOL_GPL(dev_pm_opp_set_bw);

    +static int _opp_set_rate_zero(struct device *dev, struct opp_table *opp_table)
    +{
    + int ret;
    +
    + if (!opp_table->enabled)
    + return 0;
    +
    + /*
    + * Some drivers need to support cases where some platforms may
    + * have OPP table for the device, while others don't and
    + * opp_set_rate() just needs to behave like clk_set_rate().
    + */
    + if (!_get_opp_count(opp_table))
    + return 0;
    +
    + ret = _set_opp_bw(opp_table, NULL, dev, true);
    + if (ret)
    + return ret;
    +
    + regulator_disable(opp_table->regulators[0]);
    +
    + ret = _set_required_opps(dev, opp_table, NULL);
    + if (!ret)
    + opp_table->enabled = false;
    +
    + return ret;
    +}
    +
    /**
    * dev_pm_opp_set_rate() - Configure new OPP based on frequency
    * @dev: device for which we do this operation
    @@ -886,29 +914,7 @@ int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
    }

    if (unlikely(!target_freq)) {
    - ret = 0;
    -
    - if (!opp_table->enabled)
    - goto put_opp_table;
    -
    - /*
    - * Some drivers need to support cases where some platforms may
    - * have OPP table for the device, while others don't and
    - * opp_set_rate() just needs to behave like clk_set_rate().
    - */
    - if (!_get_opp_count(opp_table))
    - goto put_opp_table;
    -
    - ret = _set_opp_bw(opp_table, NULL, dev, true);
    - if (ret)
    - goto put_opp_table;
    -
    - regulator_disable(opp_table->regulators[0]);
    -
    - ret = _set_required_opps(dev, opp_table, NULL);
    - if (!ret)
    - opp_table->enabled = false;
    -
    + ret = _opp_set_rate_zero(dev, opp_table);
    goto put_opp_table;
    }

    --
    2.14.1
    \
     
     \ /
      Last update: 2020-08-13 06:29    [W:2.996 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site