All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ulf Hansson <ulf.hansson@linaro.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>,
	Stephen Boyd <sboyd@kernel.org>,
	linux-pm@vger.kernel.org,
	Vincent Guittot <vincent.guittot@linaro.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/5] OPP: Add _link_required_opps() to avoid code duplication
Date: Mon, 16 Oct 2023 12:11:35 +0200	[thread overview]
Message-ID: <CAPDyKFp=k23RFjSvn1QYfZYF6-e5dkN1BT69oopRceyq2mLCmQ@mail.gmail.com> (raw)
In-Reply-To: <0890df8ddfafba0d9d214e73e4bb0e243a2db9fa.1697186772.git.viresh.kumar@linaro.org>

On Fri, 13 Oct 2023 at 10:48, Viresh Kumar <viresh.kumar@linaro.org> wrote:
>
> Factor out _link_required_opps() to remove duplicate code. No functional
> change.
>
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

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

Kind regards
Uffe


> ---
>  drivers/opp/of.c | 62 ++++++++++++++++++++++--------------------------
>  1 file changed, 29 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/opp/of.c b/drivers/opp/of.c
> index 85e2af3d6a49..81fa27599d58 100644
> --- a/drivers/opp/of.c
> +++ b/drivers/opp/of.c
> @@ -296,24 +296,41 @@ void _of_clear_opp(struct opp_table *opp_table, struct dev_pm_opp *opp)
>         of_node_put(opp->np);
>  }
>
> +static int _link_required_opps(struct dev_pm_opp *opp,
> +                              struct opp_table *required_table, int index)
> +{
> +       struct device_node *np;
> +
> +       np = of_parse_required_opp(opp->np, index);
> +       if (unlikely(!np))
> +               return -ENODEV;
> +
> +       opp->required_opps[index] = _find_opp_of_np(required_table, np);
> +       of_node_put(np);
> +
> +       if (!opp->required_opps[index]) {
> +               pr_err("%s: Unable to find required OPP node: %pOF (%d)\n",
> +                      __func__, opp->np, index);
> +               return -ENODEV;
> +       }
> +
> +       return 0;
> +}
> +
>  /* Populate all required OPPs which are part of "required-opps" list */
>  static int _of_opp_alloc_required_opps(struct opp_table *opp_table,
>                                        struct dev_pm_opp *opp)
>  {
> -       struct dev_pm_opp **required_opps;
>         struct opp_table *required_table;
> -       struct device_node *np;
>         int i, ret, count = opp_table->required_opp_count;
>
>         if (!count)
>                 return 0;
>
> -       required_opps = kcalloc(count, sizeof(*required_opps), GFP_KERNEL);
> -       if (!required_opps)
> +       opp->required_opps = kcalloc(count, sizeof(*opp->required_opps), GFP_KERNEL);
> +       if (!opp->required_opps)
>                 return -ENOMEM;
>
> -       opp->required_opps = required_opps;
> -
>         for (i = 0; i < count; i++) {
>                 required_table = opp_table->required_opp_tables[i];
>
> @@ -321,21 +338,9 @@ static int _of_opp_alloc_required_opps(struct opp_table *opp_table,
>                 if (IS_ERR_OR_NULL(required_table))
>                         continue;
>
> -               np = of_parse_required_opp(opp->np, i);
> -               if (unlikely(!np)) {
> -                       ret = -ENODEV;
> -                       goto free_required_opps;
> -               }
> -
> -               required_opps[i] = _find_opp_of_np(required_table, np);
> -               of_node_put(np);
> -
> -               if (!required_opps[i]) {
> -                       pr_err("%s: Unable to find required OPP node: %pOF (%d)\n",
> -                              __func__, opp->np, i);
> -                       ret = -ENODEV;
> +               ret = _link_required_opps(opp, required_table, i);
> +               if (ret)
>                         goto free_required_opps;
> -               }
>         }
>
>         return 0;
> @@ -350,22 +355,13 @@ static int _of_opp_alloc_required_opps(struct opp_table *opp_table,
>  static int lazy_link_required_opps(struct opp_table *opp_table,
>                                    struct opp_table *new_table, int index)
>  {
> -       struct device_node *required_np;
>         struct dev_pm_opp *opp;
> +       int ret;
>
>         list_for_each_entry(opp, &opp_table->opp_list, node) {
> -               required_np = of_parse_required_opp(opp->np, index);
> -               if (unlikely(!required_np))
> -                       return -ENODEV;
> -
> -               opp->required_opps[index] = _find_opp_of_np(new_table, required_np);
> -               of_node_put(required_np);
> -
> -               if (!opp->required_opps[index]) {
> -                       pr_err("%s: Unable to find required OPP node: %pOF (%d)\n",
> -                              __func__, opp->np, index);
> -                       return -ENODEV;
> -               }
> +               ret = _link_required_opps(opp, new_table, index);
> +               if (ret)
> +                       return ret;
>         }
>
>         return 0;
> --
> 2.31.1.272.g89b43f80a514
>

  reply	other threads:[~2023-10-16 10:12 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-13  8:48 [PATCH 0/5] OPP: Minor cleanups Viresh Kumar
2023-10-13  8:48 ` [PATCH 1/5] OPP: Fix formatting of if/else block Viresh Kumar
2023-10-16 10:11   ` Ulf Hansson
2023-10-13  8:48 ` [PATCH 2/5] OPP: Add _link_required_opps() to avoid code duplication Viresh Kumar
2023-10-16 10:11   ` Ulf Hansson [this message]
2023-10-13  8:48 ` [PATCH 3/5] OPP: Reorder code in _opp_set_required_opps_genpd() Viresh Kumar
2023-10-16 10:11   ` Ulf Hansson
2023-10-16 10:38     ` Viresh Kumar
2023-10-16 14:50       ` Ulf Hansson
2023-10-13  8:48 ` [PATCH 4/5] OPP: Remove genpd_virt_dev_lock Viresh Kumar
2023-10-16 10:11   ` Ulf Hansson
2023-10-13  8:48 ` [PATCH 5/5] OPP: No need to defer probe from _opp_attach_genpd() Viresh Kumar
2023-10-16 10:11   ` Ulf Hansson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPDyKFp=k23RFjSvn1QYfZYF6-e5dkN1BT69oopRceyq2mLCmQ@mail.gmail.com' \
    --to=ulf.hansson@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=rafael@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=vincent.guittot@linaro.org \
    --cc=viresh.kumar@linaro.org \
    --cc=vireshk@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.