On 25-10-16, 11:59, Stephen Boyd wrote:
On 10/20, Viresh Kumar wrote:
Later patches would add support for custom opp_set_rate callbacks. This
I know the OPP consumer function has "rate" in the name, but it makes more sense to call the callback set_opp instead because we could be doing a lot more than setting the opp rate.
Done.
patch separates out the code for generic opp_set_rate handler in order to prepare for that.
Signed-off-by: Viresh Kumar viresh.kumar@linaro.org
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c index 45c70ce07864..96f04392daef 100644 --- a/drivers/base/power/opp/core.c +++ b/drivers/base/power/opp/core.c @@ -596,6 +596,73 @@ static int _set_opp_voltage(struct device *dev, struct regulator *reg, return ret; } +static inline int +_generic_opp_set_rate_clk_only(struct device *dev, struct clk *clk,
unsigned long old_freq, unsigned long freq)
+{
- int ret;
- /* Change frequency */
- dev_dbg(dev, "%s: switching OPP: %lu Hz --> %lu Hz\n",
__func__, old_freq, freq);
Perhaps this should stay at the beginning of OPP transitions? Otherwise it can get confusing when multiple switching OPP messages appear on OPP transition failures.
Done.
+struct clk;
Is struct regulator also forward declared?
Done now.
struct dev_pm_opp; struct device; @@ -24,6 +25,36 @@ enum dev_pm_opp_event { OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE, }; +/**
- struct dev_pm_opp_supply - Power supply voltage/current values
- @u_volt: Target voltage in microvolts corresponding to this OPP
- @u_volt_min: Minimum voltage in microvolts corresponding to this OPP
- @u_volt_max: Maximum voltage in microvolts corresponding to this OPP
- @u_amp: Maximum current drawn by the device in microamperes
- This structure stores the voltage/current values for a single power supply.
- */
+struct dev_pm_opp_supply {
- unsigned long u_volt;
- unsigned long u_volt_min;
- unsigned long u_volt_max;
- unsigned long u_amp;
+};
This structure moved during this series. Can we avoid that and already have it in the right place to begin with?
Done.
+struct dev_pm_opp_info {
- unsigned long rate;
- struct dev_pm_opp_supply *supplies;
+};
+struct dev_pm_set_rate_data {
dev_pm_set_opp_data?
Done.
- struct dev_pm_opp_info old_opp;
- struct dev_pm_opp_info new_opp;
- struct regulator **regulators;
- unsigned int regulator_count;
- struct clk *clk;
+};
The above two structures don't get kernel doc?
Done.