From: Sibi Sankar <sibis@codeaurora.org>
To: viresh.kumar@linaro.org, sboyd@kernel.org,
georgi.djakov@linaro.org, saravanak@google.com, mka@chromium.org
Cc: nm@ti.com, bjorn.andersson@linaro.org, agross@kernel.org,
rjw@rjwysocki.net, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
dianders@chromium.org, vincent.guittot@linaro.org,
amit.kucheria@linaro.org, lukasz.luba@arm.com,
sudeep.holla@arm.com, smasetty@codeaurora.org,
Sibi Sankar <sibis@codeaurora.org>
Subject: [PATCH v6 3/5] OPP: Add and export helper to set bandwidth
Date: Mon, 22 Jun 2020 13:46:47 +0530 [thread overview]
Message-ID: <20200622081649.27280-4-sibis@codeaurora.org> (raw)
In-Reply-To: <20200622081649.27280-1-sibis@codeaurora.org>
Add and export 'dev_pm_opp_set_bw' to set the bandwidth
levels associated with an OPP.
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
---
v7:
* Picked up R-b from Matthias
v6:
* Pass NULL to _set_opp_bw
v5:
https://lkml.org/lkml/2020/5/27/7
* Rework the patch based on ^^
v4:
https://patchwork.kernel.org/patch/11019737/
* Pass device opp to set bw levels [Bjorn]
drivers/opp/core.c | 31 +++++++++++++++++++++++++++++++
include/linux/pm_opp.h | 6 ++++++
2 files changed, 37 insertions(+)
diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index 864cf4c65fff3..c9336aac74e91 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -831,6 +831,37 @@ static int _set_required_opps(struct device *dev,
return ret;
}
+/**
+ * dev_pm_opp_set_bw() - sets bandwidth levels corresponding to an opp
+ * @dev: device for which we do this operation
+ * @opp: opp based on which the bandwidth levels are to be configured
+ *
+ * This configures the bandwidth to the levels specified by the OPP. However
+ * if the OPP specified is NULL the bandwidth levels are cleared out.
+ *
+ * Return: 0 on success or a negative error value.
+ */
+int dev_pm_opp_set_bw(struct device *dev, struct dev_pm_opp *opp)
+{
+ struct opp_table *opp_table;
+ int ret;
+
+ opp_table = _find_opp_table(dev);
+ if (IS_ERR(opp_table)) {
+ dev_err(dev, "%s: device opp table doesn't exist\n", __func__);
+ return PTR_ERR(opp_table);
+ }
+
+ if (opp)
+ ret = _set_opp_bw(opp_table, opp, dev, false);
+ else
+ ret = _set_opp_bw(opp_table, NULL, dev, true);
+
+ dev_pm_opp_put_opp_table(opp_table);
+ return ret;
+}
+EXPORT_SYMBOL_GPL(dev_pm_opp_set_bw);
+
/**
* dev_pm_opp_set_rate() - Configure new OPP based on frequency
* @dev: device for which we do this operation
diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
index d5c4a329321dd..ae68417c0ae00 100644
--- a/include/linux/pm_opp.h
+++ b/include/linux/pm_opp.h
@@ -151,6 +151,7 @@ struct opp_table *dev_pm_opp_attach_genpd(struct device *dev, const char **names
void dev_pm_opp_detach_genpd(struct opp_table *opp_table);
int dev_pm_opp_xlate_performance_state(struct opp_table *src_table, struct opp_table *dst_table, unsigned int pstate);
int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq);
+int dev_pm_opp_set_bw(struct device *dev, struct dev_pm_opp *opp);
int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask);
int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
void dev_pm_opp_remove_table(struct device *dev);
@@ -342,6 +343,11 @@ static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_f
return -ENOTSUPP;
}
+static inline int dev_pm_opp_set_bw(struct device *dev, struct dev_pm_opp *opp)
+{
+ return -EOPNOTSUPP;
+}
+
static inline int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask)
{
return -ENOTSUPP;
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2020-06-22 8:17 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-22 8:16 [PATCH v6 0/5] DDR/L3 Scaling support on SDM845 and SC7180 SoCs Sibi Sankar
2020-06-22 8:16 ` [PATCH v6 1/5] cpufreq: blacklist SDM845 in cpufreq-dt-platdev Sibi Sankar
2020-06-22 8:16 ` [PATCH v6 2/5] cpufreq: blacklist SC7180 " Sibi Sankar
2020-06-22 8:16 ` Sibi Sankar [this message]
2020-06-22 8:16 ` [PATCH v6 4/5] cpufreq: qcom: Update the bandwidth levels on frequency change Sibi Sankar
2020-06-22 15:58 ` Matthias Kaehlcke
2020-06-22 8:16 ` [PATCH v6 5/5] cpufreq: qcom: Disable fast switch when scaling DDR/L3 Sibi Sankar
2020-06-23 10:44 ` [PATCH v6 0/5] DDR/L3 Scaling support on SDM845 and SC7180 SoCs Viresh Kumar
-- strict thread matches above, loose matches on Subject: below --
2020-06-05 21:33 Sibi Sankar
2020-06-05 21:33 ` [PATCH v6 3/5] OPP: Add and export helper to set bandwidth Sibi Sankar
2020-06-15 16:58 ` Matthias Kaehlcke
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=20200622081649.27280-4-sibis@codeaurora.org \
--to=sibis@codeaurora.org \
--cc=agross@kernel.org \
--cc=amit.kucheria@linaro.org \
--cc=bjorn.andersson@linaro.org \
--cc=dianders@chromium.org \
--cc=georgi.djakov@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=mka@chromium.org \
--cc=nm@ti.com \
--cc=rjw@rjwysocki.net \
--cc=saravanak@google.com \
--cc=sboyd@kernel.org \
--cc=smasetty@codeaurora.org \
--cc=sudeep.holla@arm.com \
--cc=vincent.guittot@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.