Re: [PATCH 08/10] OPP: Add support for opp-suspend

Stephen Boyd
2015-07-17T19:22:46Z

On 06/15/2015 04:57 AM, Viresh Kumar wrote:
> diff --git a/drivers/base/power/opp.c b/drivers/base/power/opp.c
> index 6b554e417b1f..0022453e4b60 100644
> --- a/drivers/base/power/opp.c
> +++ b/drivers/base/power/opp.c
> @@ -1218,6 +1219,8 @@ static int _of_init_opp_table_v2(struct device *dev,
> goto put_opp_np;
>
> if (!ret) {
> + const phandle *handle;
> +
> if (!dev_opp) {
> dev_opp = _find_device_opp(dev);
> if (WARN_ON(!dev_opp))
> @@ -1227,6 +1230,25 @@ static int _of_init_opp_table_v2(struct device *dev,
> dev_opp->np = opp_np;
> if (of_get_property(opp_np, "opp-shared", NULL))
> dev_opp->shared_opp = true;
> +
> + /* OPP to select on device suspend */
> + handle = of_get_property(opp_np, "opp-suspend", NULL);
> + if (handle) {
> + struct device_node *suspend_opp_np;
> + struct dev_pm_opp *opp;
> +
> + suspend_opp_np = of_find_node_by_phandle(be32_to_cpup(handle));

Couldn't this be done with of_parse_phandle() instead? Otherwise the
patch looks ok.

> +
> + list_for_each_entry_rcu(opp, &dev_opp->opp_list, node)
> + if (opp->np == suspend_opp_np) {
> + dev_opp->suspend_opp = opp;
> + break;
> + }
> +
> + if (!dev_opp->suspend_opp)
> + dev_err(dev, "%s: Invalid opp-suspend\n",
> + __func__);
> + }
> } else {
> of_free_opp_table(dev);
> }

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project