All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dong Aisheng <aisheng.dong@nxp.com>
To: <linux-pm@vger.kernel.org>
Cc: <linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>, <sboyd@codeaurora.org>,
	<vireshk@kernel.org>, <nm@ti.com>, <rjw@rjwysocki.net>,
	<shawnguo@kernel.org>, <Anson.Huang@nxp.com>, <ping.bai@nxp.com>,
	Dong Aisheng <aisheng.dong@nxp.com>
Subject: [PATCH 5/7] PM / OPP: Add dev_pm_opp_get_cur_clk()
Date: Thu, 24 Aug 2017 00:10:08 +0800	[thread overview]
Message-ID: <1503504610-12880-6-git-send-email-aisheng.dong@nxp.com> (raw)
In-Reply-To: <1503504610-12880-1-git-send-email-aisheng.dong@nxp.com>

User may need to know the current OPP clock for updating policy clk
accordingly. e.g. cpufreq policy clock.
This function does the work.

Cc: Viresh Kumar <vireshk@kernel.org>
Cc: Nishanth Menon <nm@ti.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
 drivers/base/power/opp/core.c | 29 +++++++++++++++++++++++++++++
 include/linux/pm_opp.h        |  3 +++
 2 files changed, 32 insertions(+)

diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index d4656cc..a425f98 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -1441,6 +1441,35 @@ void dev_pm_opp_put_clkname(struct opp_table *opp_table)
 EXPORT_SYMBOL_GPL(dev_pm_opp_put_clkname);
 
 /**
+ * dev_pm_opp_get_cur_clk() - Get the current OPP clock the device is running
+ * @dev: device for which we do this operation
+ *
+ * This must be called before any OPPs are initialized for the device.
+ */
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev)
+{
+	struct opp_table *opp_table;
+	int ret;
+
+	opp_table = dev_pm_opp_get_opp_table(dev);
+	if (!opp_table)
+		return ERR_PTR(-ENOMEM);
+
+	if (IS_ERR(opp_table->cur_clk)) {
+		ret = -ENODEV;
+		goto err;
+	}
+
+	return opp_table->cur_clk;
+
+err:
+	dev_pm_opp_put_opp_table(opp_table);
+
+	return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_get_cur_clk);
+
+/**
  * dev_pm_opp_register_set_opp_helper() - Register custom set OPP helper
  * @dev: Device for which the helper is getting registered.
  * @set_opp: Custom set OPP helper.
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index a8b1e4d..e20d090 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -123,6 +123,7 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * con
 void dev_pm_opp_put_regulators(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char * name);
 void dev_pm_opp_put_clkname(struct opp_table *opp_table);
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev);
 struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
 void dev_pm_opp_register_put_opp_helper(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_register_set_clk_helper(struct device *dev, int (*set_clk)(struct device *dev, struct clk *clk,
@@ -279,6 +280,8 @@ static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const
 
 static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {}
 
+static inline struct clk *dev_pm_opp_get_cur_clk(struct device *dev) {}
+
 static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
 {
 	return -ENOTSUPP;
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: Dong Aisheng <aisheng.dong@nxp.com>
To: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, sboyd@codeaurora.org,
	vireshk@kernel.org, nm@ti.com, rjw@rjwysocki.net,
	shawnguo@kernel.org, Anson.Huang@nxp.com, ping.bai@nxp.com,
	Dong Aisheng <aisheng.dong@nxp.com>
Subject: [PATCH 5/7] PM / OPP: Add dev_pm_opp_get_cur_clk()
Date: Thu, 24 Aug 2017 00:10:08 +0800	[thread overview]
Message-ID: <1503504610-12880-6-git-send-email-aisheng.dong@nxp.com> (raw)
In-Reply-To: <1503504610-12880-1-git-send-email-aisheng.dong@nxp.com>

User may need to know the current OPP clock for updating policy clk
accordingly. e.g. cpufreq policy clock.
This function does the work.

Cc: Viresh Kumar <vireshk@kernel.org>
Cc: Nishanth Menon <nm@ti.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
 drivers/base/power/opp/core.c | 29 +++++++++++++++++++++++++++++
 include/linux/pm_opp.h        |  3 +++
 2 files changed, 32 insertions(+)

diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index d4656cc..a425f98 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -1441,6 +1441,35 @@ void dev_pm_opp_put_clkname(struct opp_table *opp_table)
 EXPORT_SYMBOL_GPL(dev_pm_opp_put_clkname);
 
 /**
+ * dev_pm_opp_get_cur_clk() - Get the current OPP clock the device is running
+ * @dev: device for which we do this operation
+ *
+ * This must be called before any OPPs are initialized for the device.
+ */
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev)
+{
+	struct opp_table *opp_table;
+	int ret;
+
+	opp_table = dev_pm_opp_get_opp_table(dev);
+	if (!opp_table)
+		return ERR_PTR(-ENOMEM);
+
+	if (IS_ERR(opp_table->cur_clk)) {
+		ret = -ENODEV;
+		goto err;
+	}
+
+	return opp_table->cur_clk;
+
+err:
+	dev_pm_opp_put_opp_table(opp_table);
+
+	return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_get_cur_clk);
+
+/**
  * dev_pm_opp_register_set_opp_helper() - Register custom set OPP helper
  * @dev: Device for which the helper is getting registered.
  * @set_opp: Custom set OPP helper.
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index a8b1e4d..e20d090 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -123,6 +123,7 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * con
 void dev_pm_opp_put_regulators(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char * name);
 void dev_pm_opp_put_clkname(struct opp_table *opp_table);
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev);
 struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
 void dev_pm_opp_register_put_opp_helper(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_register_set_clk_helper(struct device *dev, int (*set_clk)(struct device *dev, struct clk *clk,
@@ -279,6 +280,8 @@ static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const
 
 static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {}
 
+static inline struct clk *dev_pm_opp_get_cur_clk(struct device *dev) {}
+
 static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
 {
 	return -ENOTSUPP;
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: aisheng.dong@nxp.com (Dong Aisheng)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 5/7] PM / OPP: Add dev_pm_opp_get_cur_clk()
Date: Thu, 24 Aug 2017 00:10:08 +0800	[thread overview]
Message-ID: <1503504610-12880-6-git-send-email-aisheng.dong@nxp.com> (raw)
In-Reply-To: <1503504610-12880-1-git-send-email-aisheng.dong@nxp.com>

User may need to know the current OPP clock for updating policy clk
accordingly. e.g. cpufreq policy clock.
This function does the work.

Cc: Viresh Kumar <vireshk@kernel.org>
Cc: Nishanth Menon <nm@ti.com>
Cc: Stephen Boyd <sboyd@codeaurora.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
---
 drivers/base/power/opp/core.c | 29 +++++++++++++++++++++++++++++
 include/linux/pm_opp.h        |  3 +++
 2 files changed, 32 insertions(+)

diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index d4656cc..a425f98 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -1441,6 +1441,35 @@ void dev_pm_opp_put_clkname(struct opp_table *opp_table)
 EXPORT_SYMBOL_GPL(dev_pm_opp_put_clkname);
 
 /**
+ * dev_pm_opp_get_cur_clk() - Get the current OPP clock the device is running
+ * @dev: device for which we do this operation
+ *
+ * This must be called before any OPPs are initialized for the device.
+ */
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev)
+{
+	struct opp_table *opp_table;
+	int ret;
+
+	opp_table = dev_pm_opp_get_opp_table(dev);
+	if (!opp_table)
+		return ERR_PTR(-ENOMEM);
+
+	if (IS_ERR(opp_table->cur_clk)) {
+		ret = -ENODEV;
+		goto err;
+	}
+
+	return opp_table->cur_clk;
+
+err:
+	dev_pm_opp_put_opp_table(opp_table);
+
+	return ERR_PTR(ret);
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_get_cur_clk);
+
+/**
  * dev_pm_opp_register_set_opp_helper() - Register custom set OPP helper
  * @dev: Device for which the helper is getting registered.
  * @set_opp: Custom set OPP helper.
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index a8b1e4d..e20d090 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -123,6 +123,7 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * con
 void dev_pm_opp_put_regulators(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char * name);
 void dev_pm_opp_put_clkname(struct opp_table *opp_table);
+struct clk *dev_pm_opp_get_cur_clk(struct device *dev);
 struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
 void dev_pm_opp_register_put_opp_helper(struct opp_table *opp_table);
 struct opp_table *dev_pm_opp_register_set_clk_helper(struct device *dev, int (*set_clk)(struct device *dev, struct clk *clk,
@@ -279,6 +280,8 @@ static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const
 
 static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {}
 
+static inline struct clk *dev_pm_opp_get_cur_clk(struct device *dev) {}
+
 static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq)
 {
 	return -ENOTSUPP;
-- 
2.7.4

  parent reply	other threads:[~2017-08-23 16:10 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-23 16:10 [PATCH 0/7] PM / OPP: per OPP node clock support and imx7ulp cpufreq driver Dong Aisheng
2017-08-23 16:10 ` Dong Aisheng
2017-08-23 16:10 ` Dong Aisheng
2017-08-23 16:10 ` [PATCH 1/7] PM / OPP: Add platform specific set_clk function Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-09-19 22:58   ` Viresh Kumar
2017-09-19 22:58     ` Viresh Kumar
2017-09-20  7:03     ` Dong Aisheng
2017-09-20  7:03       ` Dong Aisheng
2017-09-20 20:30       ` Viresh Kumar
2017-09-20 20:30         ` Viresh Kumar
2017-09-21  2:17         ` A.s. Dong
2017-09-21  2:17           ` A.s. Dong
2017-09-21  2:17           ` A.s. Dong
2017-08-23 16:10 ` [PATCH 2/7] dt-bindings: PM / OPP: add clocks per OPP node support Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-31 17:39   ` Rob Herring
2017-08-31 17:39     ` Rob Herring
2017-09-01 13:01     ` Dong Aisheng
2017-09-01 13:01       ` Dong Aisheng
2017-08-23 16:10 ` [PATCH 3/7] PM / OPP: rename opp_table->clk to opp_table->cur_clk Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10 ` [PATCH 4/7] PM / OPP: use OPP node clock to set CPU frequency Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10 ` Dong Aisheng [this message]
2017-08-23 16:10   ` [PATCH 5/7] PM / OPP: Add dev_pm_opp_get_cur_clk() Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10 ` [PATCH 6/7] cpufreq: make cpufreq_generic_init transition_latency default to CPUFREQ_ETERNAL Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-09-19 23:10   ` Viresh Kumar
2017-09-19 23:10     ` Viresh Kumar
2017-09-20  7:04     ` Dong Aisheng
2017-09-20  7:04       ` Dong Aisheng
2017-09-20 14:45       ` Viresh Kumar
2017-09-20 14:45         ` Viresh Kumar
2017-08-23 16:10 ` [PATCH 7/7] cpufreq: add imx7ulp cpufreq driver Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-08-23 16:10   ` Dong Aisheng
2017-09-11  7:28 ` [PATCH 0/7] PM / OPP: per OPP node clock support and " Dong Aisheng
2017-09-11  7:28   ` Dong Aisheng
2017-09-19 22:54   ` Viresh Kumar
2017-09-19 22:54     ` 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=1503504610-12880-6-git-send-email-aisheng.dong@nxp.com \
    --to=aisheng.dong@nxp.com \
    --cc=Anson.Huang@nxp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=nm@ti.com \
    --cc=ping.bai@nxp.com \
    --cc=rjw@rjwysocki.net \
    --cc=sboyd@codeaurora.org \
    --cc=shawnguo@kernel.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.