Re: [PATCH V2 1/9] OPP: Identify and mark genpd OPP tables

From: Ulf Hansson
Date: Fri Oct 12 2018 - 11:12:10 EST


On 12 October 2018 at 13:11, Viresh Kumar <viresh.kumar@xxxxxxxxxx> wrote:
> We need to handle genpd OPP tables differently, this is already the case
> at one location and will be extended going forward. Add another field to
> the OPP table to check if the table belongs to a genpd or not.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>

Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>

> ---
> drivers/opp/of.c | 6 ++++--
> drivers/opp/opp.h | 2 ++
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/opp/of.c b/drivers/opp/of.c
> index 5a4b47958073..5f114cd3d88c 100644
> --- a/drivers/opp/of.c
> +++ b/drivers/opp/of.c
> @@ -92,6 +92,9 @@ void _of_init_opp_table(struct opp_table *opp_table, struct device *dev,
> of_property_read_u32(np, "voltage-tolerance",
> &opp_table->voltage_tolerance_v1);
>
> + if (of_find_property(np, "#power-domain-cells", NULL))
> + opp_table->is_genpd = true;
> +
> /* Get OPP table node */
> opp_np = _opp_of_get_opp_desc_node(np, index);
> of_node_put(np);
> @@ -326,8 +329,7 @@ static struct dev_pm_opp *_opp_add_static_v2(struct opp_table *opp_table,
> ret = of_property_read_u64(np, "opp-hz", &rate);
> if (ret < 0) {
> /* "opp-hz" is optional for devices like power domains. */
> - if (!of_find_property(dev->of_node, "#power-domain-cells",
> - NULL)) {
> + if (!opp_table->is_genpd) {
> dev_err(dev, "%s: opp-hz not found\n", __func__);
> goto free_opp;
> }
> diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
> index 9c6544b4f4f9..cdb0c2b095e2 100644
> --- a/drivers/opp/opp.h
> +++ b/drivers/opp/opp.h
> @@ -140,6 +140,7 @@ enum opp_table_access {
> * @regulators: Supply regulators
> * @regulator_count: Number of power supply regulators
> * @genpd_performance_state: Device's power domain support performance state.
> + * @is_genpd: Marks if the OPP table belongs to a genpd.
> * @set_opp: Platform specific set_opp callback
> * @set_opp_data: Data to be passed to set_opp callback
> * @dentry: debugfs dentry pointer of the real device directory (not links).
> @@ -178,6 +179,7 @@ struct opp_table {
> struct regulator **regulators;
> unsigned int regulator_count;
> bool genpd_performance_state;
> + bool is_genpd;
>
> int (*set_opp)(struct dev_pm_set_opp_data *data);
> struct dev_pm_set_opp_data *set_opp_data;
> --
> 2.18.0.rc1.242.g61856ae69a2c
>