From: Rajendra Nayak <rnayak@codeaurora.org>
To: andy.gross@linaro.org, robh@kernel.org, viresh.kumar@linaro.org,
sboyd@kernel.org, ulf.hansson@linaro.org,
collinsd@codeaurora.org, mka@chromium.org
Cc: devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org, henryc.chen@mediatek.com,
Rajendra Nayak <rnayak@codeaurora.org>
Subject: [PATCH v11 2/9] OPP: Add support for parsing the 'opp-level' property
Date: Thu, 10 Jan 2019 09:32:02 +0530 [thread overview]
Message-ID: <20190110040209.6028-3-rnayak@codeaurora.org> (raw)
In-Reply-To: <20190110040209.6028-1-rnayak@codeaurora.org>
Now that the OPP bindings are updated to include an optional
'opp-level' property, add support to parse it from device tree
and store it as part of dev_pm_opp structure.
Also add and export an helper 'dev_pm_opp_get_level()' that can be
used to get the level value read from device tree when present.
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
---
drivers/opp/core.c | 18 ++++++++++++++++++
drivers/opp/of.c | 2 ++
drivers/opp/opp.h | 2 ++
include/linux/pm_opp.h | 7 +++++++
4 files changed, 29 insertions(+)
diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index e5507add8f04..90b78a122be9 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -130,6 +130,24 @@ unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
}
EXPORT_SYMBOL_GPL(dev_pm_opp_get_freq);
+/**
+ * dev_pm_opp_get_level() - Gets the level corresponding to an available opp
+ * @opp: opp for which level value has to be returned for
+ *
+ * Return: level read from device tree corresponding to the opp, else
+ * return 0.
+ */
+unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp)
+{
+ if (IS_ERR_OR_NULL(opp) || !opp->available) {
+ pr_err("%s: Invalid parameters\n", __func__);
+ return 0;
+ }
+
+ return opp->level;
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_get_level);
+
/**
* dev_pm_opp_is_turbo() - Returns if opp is turbo OPP or not
* @opp: opp for which turbo mode is being verified
diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 06f0f632ec47..1779f2c93291 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -594,6 +594,8 @@ static struct dev_pm_opp *_opp_add_static_v2(struct opp_table *opp_table,
new_opp->rate = (unsigned long)rate;
}
+ of_property_read_u32(np, "opp-level", &new_opp->level);
+
/* Check if the OPP supports hardware's hierarchy of versions or not */
if (!_opp_is_supported(dev, opp_table, np)) {
dev_dbg(dev, "OPP not supported by hardware: %llu\n", rate);
diff --git a/drivers/opp/opp.h b/drivers/opp/opp.h
index e24d81497375..4458175aa661 100644
--- a/drivers/opp/opp.h
+++ b/drivers/opp/opp.h
@@ -60,6 +60,7 @@ extern struct list_head opp_tables;
* @suspend: true if suspend OPP
* @pstate: Device's power domain's performance state.
* @rate: Frequency in hertz
+ * @level: Performance level
* @supplies: Power supplies voltage/current values
* @clock_latency_ns: Latency (in nanoseconds) of switching to this OPP's
* frequency from any other OPP's frequency.
@@ -80,6 +81,7 @@ struct dev_pm_opp {
bool suspend;
unsigned int pstate;
unsigned long rate;
+ unsigned int level;
struct dev_pm_opp_supply *supplies;
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index 0a2a88e5a383..473d2c7516f0 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -86,6 +86,8 @@ unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);
+unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp);
+
bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);
int dev_pm_opp_get_opp_count(struct device *dev);
@@ -157,6 +159,11 @@ static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp)
return 0;
}
+static inline unsigned int dev_pm_opp_get_level(struct dev_pm_opp *opp)
+{
+ return 0;
+}
+
static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp)
{
return false;
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
next prev parent reply other threads:[~2019-01-10 4:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-10 4:02 [PATCH v11 0/9] Add power domain driver for corners on msm8996/sdm845 Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 1/9] dt-bindings: opp: Introduce opp-level bindings Rajendra Nayak
2019-01-10 6:26 ` Viresh Kumar
2019-01-11 19:06 ` Stephen Boyd
2019-01-11 19:06 ` Stephen Boyd
2019-01-11 22:16 ` Doug Anderson
2019-01-15 19:59 ` Rob Herring
2019-01-15 19:59 ` Rob Herring
2019-01-10 4:02 ` Rajendra Nayak [this message]
2019-01-10 6:29 ` [PATCH v11 2/9] OPP: Add support for parsing the 'opp-level' property Viresh Kumar
2019-01-11 19:06 ` Stephen Boyd
2019-01-11 19:06 ` Stephen Boyd
2019-01-10 4:02 ` [PATCH v11 3/9] dt-bindings: power: Add qcom rpm power domain driver bindings Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 4/9] soc: qcom: rpmpd: Add a Power domain driver to model corners Rajendra Nayak
2019-01-17 17:42 ` Guenter Roeck
2019-01-18 4:54 ` Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 5/9] soc: qcom: rpmpd: Add support for get/set performance state Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 6/9] arm64: dts: msm8996: Add rpmpd device node Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 7/9] soc: qcom: rpmhpd: Add RPMh power domain driver Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 8/9] arm64: dts: sdm845: Add rpmh powercontroller node Rajendra Nayak
2019-01-10 4:02 ` [PATCH v11 9/9] soc: qcom: rpmhpd: Mark mx as a parent for cx Rajendra Nayak
2019-01-10 6:33 ` [PATCH v11 0/9] Add power domain driver for corners on msm8996/sdm845 Viresh Kumar
2019-01-16 5:52 ` Bjorn Andersson
2019-01-16 15:18 ` Ulf Hansson
2019-01-17 4:24 ` Viresh Kumar
2019-01-17 15:03 ` Marc Gonzalez
2019-01-18 3:54 ` Rajendra Nayak
2019-01-18 10:17 ` Marc Gonzalez
2019-01-21 9:20 ` Rajendra Nayak
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=20190110040209.6028-3-rnayak@codeaurora.org \
--to=rnayak@codeaurora.org \
--cc=andy.gross@linaro.org \
--cc=collinsd@codeaurora.org \
--cc=devicetree@vger.kernel.org \
--cc=henryc.chen@mediatek.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mka@chromium.org \
--cc=robh@kernel.org \
--cc=sboyd@kernel.org \
--cc=ulf.hansson@linaro.org \
--cc=viresh.kumar@linaro.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.