From: Viresh Kumar <viresh.kumar@linaro.org>
To: Stephen Boyd <sboyd@codeaurora.org>
Cc: Rafael Wysocki <rjw@rjwysocki.net>,
linaro-kernel@lists.linaro.org, linux-pm@vger.kernel.org,
nm@ti.com
Subject: Re: [PATCH 01/17] PM / OPP: get/put regulators from OPP core
Date: Tue, 12 Jan 2016 10:53:46 +0530 [thread overview]
Message-ID: <20160112052346.GL1084@ubuntu> (raw)
In-Reply-To: <20160112030543.GG1084@ubuntu>
On 12-01-16, 08:35, Viresh Kumar wrote:
> On 11-01-16, 15:21, Stephen Boyd wrote:
> > Is there a reason we capitalize regulator?
>
Something went wrong, I have updated the code correctly. Let me paste
it again..
-------------------------8<-------------------------
Subject: [PATCH] PM / OPP: get/put regulators from OPP core
The allows the OPP core to request/free the regulator resource, attached
to a device OPP. The regulator device is fetched using device node and
name of the device.
For example, a cpu0 device node needs to look like this:
cpu0: cpu@900 {
device_type = "cpu";
compatible = "arm,cortex-a9";
reg = <0x900>;
cpu0-supply = <&varm>;
...
};
This will work for both OPP-v1 and v2 bindings.
This is a preliminary step in moving the OPP switching logic into the
OPP core.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/base/power/opp/core.c | 9 +++++++++
drivers/base/power/opp/opp.h | 4 ++++
2 files changed, 13 insertions(+)
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index cf351d3dab1c..9e437416e155 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -19,6 +19,7 @@
#include <linux/device.h>
#include <linux/of.h>
#include <linux/export.h>
+#include <linux/regulator/consumer.h>
#include "opp.h"
@@ -505,6 +506,7 @@ static struct device_opp *_add_device_opp(struct device *dev)
{
struct device_opp *dev_opp;
struct device_list_opp *list_dev;
+ const char *name = dev_name(dev);
/* Check for existing list for 'dev' first */
dev_opp = _find_device_opp(dev);
@@ -527,6 +529,11 @@ static struct device_opp *_add_device_opp(struct device *dev)
return NULL;
}
+ dev_opp->regulator = regulator_get_optional(dev, name);
+ if (IS_ERR(dev_opp->regulator))
+ dev_info(dev, "%s: no regulator (%s) found: %ld\n", __func__,
+ name, PTR_ERR(dev_opp->regulator));
+
srcu_init_notifier_head(&dev_opp->srcu_head);
INIT_LIST_HEAD(&dev_opp->opp_list);
@@ -565,6 +572,8 @@ static void _remove_device_opp(struct device_opp *dev_opp)
if (dev_opp->prop_name)
return;
+ regulator_put(dev_opp->regulator);
+
list_dev = list_first_entry(&dev_opp->dev_list, struct device_list_opp,
node);
diff --git a/drivers/base/power/opp/opp.h b/drivers/base/power/opp/opp.h
index 690638ef36ee..416293b7da23 100644
--- a/drivers/base/power/opp/opp.h
+++ b/drivers/base/power/opp/opp.h
@@ -22,6 +22,8 @@
#include <linux/rculist.h>
#include <linux/rcupdate.h>
+struct regulator;
+
/* Lock to allow exclusive modification to the device and opp lists */
extern struct mutex dev_opp_list_lock;
@@ -132,6 +134,7 @@ struct device_list_opp {
* @supported_hw: Array of version number to support.
* @supported_hw_count: Number of elements in supported_hw array.
* @prop_name: A name to postfix to many DT properties, while parsing them.
+ * @regulator: Supply regulator
* @dentry: debugfs dentry pointer of the real device directory (not links).
* @dentry_name: Name of the real dentry.
*
@@ -159,6 +162,7 @@ struct device_opp {
unsigned int *supported_hw;
unsigned int supported_hw_count;
const char *prop_name;
+ struct regulator *regulator;
#ifdef CONFIG_DEBUG_FS
struct dentry *dentry;
--
viresh
next prev parent reply other threads:[~2016-01-12 5:23 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-22 10:16 [PATCH 00/17] PM / OPP: Introduce APIs to transition OPPs Viresh Kumar
2015-12-22 10:16 ` [PATCH 01/17] PM / OPP: get/put regulators from OPP core Viresh Kumar
2016-01-11 23:21 ` Stephen Boyd
2016-01-12 3:05 ` Viresh Kumar
2016-01-12 5:23 ` Viresh Kumar [this message]
2016-01-12 19:32 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 02/17] PM / OPP: Add APIs to set regulator-name Viresh Kumar
2016-01-12 1:18 ` Stephen Boyd
2016-01-12 4:43 ` Viresh Kumar
2015-12-22 10:16 ` [PATCH 03/17] PM / OPP: Disable OPPs that aren't supported by the regulator Viresh Kumar
2016-01-12 1:19 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 04/17] PM / OPP: Introduce dev_pm_opp_get_max_volt_latency() Viresh Kumar
2016-01-12 1:25 ` Stephen Boyd
2016-01-12 5:10 ` Viresh Kumar
2016-01-12 19:45 ` Stephen Boyd
2016-01-13 5:34 ` Viresh Kumar
2016-01-18 7:23 ` Viresh Kumar
2016-01-21 0:20 ` Stephen Boyd
2016-01-21 2:32 ` Viresh Kumar
2016-01-21 2:43 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 05/17] PM / OPP: Introduce dev_pm_opp_get_max_transition_latency() Viresh Kumar
2016-01-12 2:20 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 06/17] PM / OPP: Parse clock-latency and voltage-tolerance for v1 bindings Viresh Kumar
2016-01-12 1:29 ` Stephen Boyd
2016-01-12 5:14 ` Viresh Kumar
2016-01-13 0:36 ` Stephen Boyd
2016-01-13 5:35 ` Viresh Kumar
2016-01-15 1:54 ` Stephen Boyd
2016-01-15 1:54 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 07/17] PM / OPP: Manage device clk Viresh Kumar
2016-01-12 1:32 ` Stephen Boyd
2016-01-12 5:43 ` Viresh Kumar
2016-01-12 19:47 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 08/17] PM / OPP: Add dev_pm_opp_set_rate() Viresh Kumar
2016-01-12 1:40 ` Stephen Boyd
2016-01-12 6:58 ` Viresh Kumar
2016-01-13 0:49 ` Stephen Boyd
2016-01-13 5:51 ` Viresh Kumar
2015-12-22 10:16 ` [PATCH 10/17] cpufreq: dt: Rename 'need_update' to 'opp_v1' Viresh Kumar
2016-01-12 1:41 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 11/17] cpufreq: dt: OPP layers handles clock-latency for V1 bindings as well Viresh Kumar
2016-01-12 1:41 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 12/17] cpufreq: dt: Pass regulator name to the OPP core for V1 bindings Viresh Kumar
2016-01-12 1:53 ` Stephen Boyd
2016-01-12 7:11 ` Viresh Kumar
2016-01-13 0:43 ` Stephen Boyd
2016-01-13 5:47 ` Viresh Kumar
2016-01-13 11:15 ` Mark Brown
2015-12-22 10:16 ` [PATCH 13/17] cpufreq: dt: Unsupported OPPs are already disabled Viresh Kumar
2016-01-12 1:53 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 14/17] cpufreq: dt: Reuse dev_pm_opp_get_max_transition_latency() Viresh Kumar
2016-01-12 1:54 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 15/17] cpufreq: dt: Use dev_pm_opp_set_rate() to switch frequency Viresh Kumar
2016-01-12 1:55 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 16/17] cpufreq: dt: drop references to DT node Viresh Kumar
2016-01-12 1:55 ` Stephen Boyd
2015-12-22 10:16 ` [PATCH 17/17] cpufreq: dt: No need to allocate resources anymore Viresh Kumar
2016-01-12 2:20 ` Stephen Boyd
2016-01-12 7:34 ` Viresh Kumar
2016-01-21 1:18 ` Stephen Boyd
2016-01-21 2:36 ` Viresh Kumar
2016-01-21 2:45 ` Stephen Boyd
2016-01-25 10:33 ` Viresh Kumar
2015-12-22 10:20 ` [PATCH 09/17] cpufreq: dt: Convert few pr_debug/err() calls to dev_dbg/err() Viresh Kumar
2016-01-12 1:40 ` Stephen Boyd
2015-12-23 3:12 ` [PATCH 00/17] PM / OPP: Introduce APIs to transition OPPs Rafael J. Wysocki
2015-12-23 2:46 ` Viresh Kumar
2016-01-11 16:28 ` Viresh Kumar
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=20160112052346.GL1084@ubuntu \
--to=viresh.kumar@linaro.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=nm@ti.com \
--cc=rjw@rjwysocki.net \
--cc=sboyd@codeaurora.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.