Message ID | 20180305043708.GA23018@vireshk-i7 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Mar 05, 2018 at 10:07:08AM +0530, Viresh Kumar wrote: > On 02-03-18, 14:43, Jordan Crouse wrote: > > Add a function to return the device node associated with a > > specific opp which will facilitate detailing with custom > > properties in client drivers. > > > > Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org> > > --- > > drivers/opp/of.c | 20 ++++++++++++++++++++ > > include/linux/pm_opp.h | 6 ++++++ > > 2 files changed, 26 insertions(+) > > I was using a patch for this for quite sometime now, but never posted it. So its > your patch which should get merged now. But there are few things that you need > to change/fix. Please update your patch based on mine (pasted below) and repost > here. Thanks - I'll make the changes. > And I am not really sure how should this patch get merged. Maybe I will apply > the patch and share a branch (which I wouldn't rebase) and you can use that ? You can go ahead and submit it through your normal process. The a6xx code won't be merged with Linus until there is a open source user-mode driver component available. Until then it will hang out in the various integration kernels and the maintainers will be reminded to take this patch from your repo. Thanks for the review, Jordan > diff --git a/drivers/opp/of.c b/drivers/opp/of.c > index 21265af55117..b17715bc3c0a 100644 > --- a/drivers/opp/of.c > +++ b/drivers/opp/of.c > @@ -736,3 +736,22 @@ struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device *dev, > return opp; > } > EXPORT_SYMBOL_GPL(of_dev_pm_opp_find_required_opp); > + > +/** > + * dev_pm_opp_get_of_node() - Gets the DT node corresponding to an opp > + * @opp: opp for which DT node has to be returned for > + * > + * Return: DT node corresponding to the opp, else 0 on success. > + * > + * The caller needs to put the node of_node_put() after using it. > + */ > +struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp) > +{ > + if (IS_ERR_OR_NULL(opp)) { > + pr_err("%s: Invalid parameters\n", __func__); > + return NULL; > + } > + > + return of_node_get(opp->np); > +} > +EXPORT_SYMBOL_GPL(dev_pm_opp_get_of_node); > diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h > index 528a7d9cf2ef..099b31960dec 100644 > --- a/include/linux/pm_opp.h > +++ b/include/linux/pm_opp.h > @@ -300,6 +300,7 @@ void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask); > int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask); > struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev); > struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device *dev, struct device_node *np); > +struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp); > #else > static inline int dev_pm_opp_of_add_table(struct device *dev) > { > @@ -338,6 +339,10 @@ static inline struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device * > { > return NULL; > } > +static inline struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp) > +{ > + return NULL; > +} > #endif > > #endif /* __LINUX_OPP_H__ */ > > -- > viresh
diff --git a/drivers/opp/of.c b/drivers/opp/of.c index 21265af55117..b17715bc3c0a 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -736,3 +736,22 @@ struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device *dev, return opp; } EXPORT_SYMBOL_GPL(of_dev_pm_opp_find_required_opp); + +/** + * dev_pm_opp_get_of_node() - Gets the DT node corresponding to an opp + * @opp: opp for which DT node has to be returned for + * + * Return: DT node corresponding to the opp, else 0 on success. + * + * The caller needs to put the node of_node_put() after using it. + */ +struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp) +{ + if (IS_ERR_OR_NULL(opp)) { + pr_err("%s: Invalid parameters\n", __func__); + return NULL; + } + + return of_node_get(opp->np); +} +EXPORT_SYMBOL_GPL(dev_pm_opp_get_of_node); diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index 528a7d9cf2ef..099b31960dec 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -300,6 +300,7 @@ void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask); int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask); struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev); struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device *dev, struct device_node *np); +struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp); #else static inline int dev_pm_opp_of_add_table(struct device *dev) { @@ -338,6 +339,10 @@ static inline struct dev_pm_opp *of_dev_pm_opp_find_required_opp(struct device * { return NULL; } +static inline struct device_node *dev_pm_opp_get_of_node(struct dev_pm_opp *opp) +{ + return NULL; +} #endif #endif /* __LINUX_OPP_H__ */