diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2018-12-11 14:09:36 +0300 |
---|---|---|
committer | Viresh Kumar <viresh.kumar@linaro.org> | 2018-12-11 14:21:56 +0300 |
commit | 46f48aca2e5aef3f430e95d1a5fb68227ec8ec85 (patch) | |
tree | 0b4df41cec1365e38ee62495fa59da07363777e8 /drivers/opp/opp.h | |
parent | 90e3577b5feb42bac1269e16bb3d2bdd8f6df40f (diff) | |
download | linux-46f48aca2e5aef3f430e95d1a5fb68227ec8ec85.tar.xz |
OPP: Fix missing debugfs supply directory for OPPs
There is one case where we may end up with no "supply" directory for the
OPPs in debugfs. That happens when the OPP core isn't managing the
regulators for the device and the device's OPP do have microvolt
property. It happens because the opp_table->regulator_count remains set
to 0 and the debugfs routines don't add any supply directory in such a
case.
This commit fixes that by setting opp_table->regulator_count to 1 in
that particular case. But to make everything work nicely and not break
other parts of the core, regulator_count is defined as "int" now instead
of "unsigned int" and it can have different special values now. It is
set to -1 initially to mark it "uninitialized" and later only we set it
to 0 or positive values after checking how many supplies are there.
This also helps in finding the bugs where only few of the OPPs have the
"opp-microvolt" property set and not all.
Fixes: 1fae788ed640 ("PM / OPP: Don't create debugfs "supply-0" directory unnecessarily")
Reported-by: Quentin Perret <quentin.perret@arm.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/opp/opp.h')
-rw-r--r-- | drivers/opp/opp.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h index 9c6544b4f4f9..14d732ccad08 100644 --- a/drivers/opp/opp.h +++ b/drivers/opp/opp.h @@ -138,7 +138,9 @@ enum opp_table_access { * @prop_name: A name to postfix to many DT properties, while parsing them. * @clk: Device's clock handle * @regulators: Supply regulators - * @regulator_count: Number of power supply regulators + * @regulator_count: Number of power supply regulators. Its value can be -1 + * (uninitialized), 0 (no opp-microvolt property) or > 0 (has opp-microvolt + * property). * @genpd_performance_state: Device's power domain support performance state. * @set_opp: Platform specific set_opp callback * @set_opp_data: Data to be passed to set_opp callback @@ -176,7 +178,7 @@ struct opp_table { const char *prop_name; struct clk *clk; struct regulator **regulators; - unsigned int regulator_count; + int regulator_count; bool genpd_performance_state; int (*set_opp)(struct dev_pm_set_opp_data *data); |