All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sudeep Holla <sudeep.holla@arm.com>
To: ALKML <linux-arm-kernel@lists.infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	DTML <devicetree@vger.kernel.org>
Cc: Sudeep Holla <sudeep.holla@arm.com>,
	Roy Franz <roy.franz@cavium.com>,
	Harb Abdulhamid <harba@codeaurora.org>,
	Nishanth Menon <nm@ti.com>, Arnd Bergmann <arnd@arndb.de>,
	Loc Ho <lho@apm.com>, Alexey Klimov <klimov.linux@gmail.com>,
	Ryan Harkin <Ryan.Harkin@arm.com>,
	Jassi Brar <jassisinghbrar@gmail.com>,
	linux-pm@vger.kernel.org
Subject: [PATCH v5 20/20] cpufreq: scmi: add support for fast frequency switching
Date: Tue,  2 Jan 2018 14:42:42 +0000	[thread overview]
Message-ID: <1514904162-11201-21-git-send-email-sudeep.holla@arm.com> (raw)
In-Reply-To: <1514904162-11201-1-git-send-email-sudeep.holla@arm.com>

The cpufreq core provides option for drivers to implement fast_switch
callback which is invoked for frequency switching from interrupt context.

This patch adds support for fast_switch callback in SCMI cpufreq driver
by making use of polling based SCMI transfer. It also sets the flag
fast_switch_possible.

Cc: linux-pm@vger.kernel.org
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/cpufreq/scmi-cpufreq.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index 0ee9335d0063..d0a82d7c6fd4 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -64,6 +64,19 @@ scmi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 	return perf_ops->freq_set(handle, priv->domain_id, freq, false);
 }
 
+static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
+					     unsigned int target_freq)
+{
+	struct scmi_data *priv = policy->driver_data;
+	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+
+	if (!perf_ops->freq_set(handle, priv->domain_id,
+				target_freq * 1000, true))
+		return target_freq;
+
+	return 0;
+}
+
 static int
 scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
 {
@@ -163,6 +176,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
 
 	policy->cpuinfo.transition_latency = latency;
 
+	policy->fast_switch_possible = true;
 	return 0;
 
 out_free_cpufreq_table:
@@ -222,6 +236,7 @@ static struct cpufreq_driver scmi_cpufreq_driver = {
 	.verify	= cpufreq_generic_frequency_table_verify,
 	.attr	= cpufreq_generic_attr,
 	.target_index	= scmi_cpufreq_set_target,
+	.fast_switch	= scmi_cpufreq_fast_switch,
 	.get	= scmi_cpufreq_get_rate,
 	.init	= scmi_cpufreq_init,
 	.exit	= scmi_cpufreq_exit,
-- 
2.7.4

WARNING: multiple messages have this Message-ID (diff)
From: Sudeep Holla <sudeep.holla-5wv7dgnIgG8@public.gmane.org>
To: ALKML
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	DTML <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Cc: Sudeep Holla <sudeep.holla-5wv7dgnIgG8@public.gmane.org>,
	Roy Franz <roy.franz-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org>,
	Harb Abdulhamid <harba-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Nishanth Menon <nm-l0cyMroinI0@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Loc Ho <lho-qTEPVZfXA3Y@public.gmane.org>,
	Alexey Klimov
	<klimov.linux-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Ryan Harkin <Ryan.Harkin-5wv7dgnIgG8@public.gmane.org>,
	Jassi Brar
	<jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: [PATCH v5 20/20] cpufreq: scmi: add support for fast frequency switching
Date: Tue,  2 Jan 2018 14:42:42 +0000	[thread overview]
Message-ID: <1514904162-11201-21-git-send-email-sudeep.holla@arm.com> (raw)
In-Reply-To: <1514904162-11201-1-git-send-email-sudeep.holla-5wv7dgnIgG8@public.gmane.org>

The cpufreq core provides option for drivers to implement fast_switch
callback which is invoked for frequency switching from interrupt context.

This patch adds support for fast_switch callback in SCMI cpufreq driver
by making use of polling based SCMI transfer. It also sets the flag
fast_switch_possible.

Cc: linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Acked-by: Rafael J. Wysocki <rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Acked-by: Viresh Kumar <viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
Signed-off-by: Sudeep Holla <sudeep.holla-5wv7dgnIgG8@public.gmane.org>
---
 drivers/cpufreq/scmi-cpufreq.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index 0ee9335d0063..d0a82d7c6fd4 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -64,6 +64,19 @@ scmi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 	return perf_ops->freq_set(handle, priv->domain_id, freq, false);
 }
 
+static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
+					     unsigned int target_freq)
+{
+	struct scmi_data *priv = policy->driver_data;
+	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+
+	if (!perf_ops->freq_set(handle, priv->domain_id,
+				target_freq * 1000, true))
+		return target_freq;
+
+	return 0;
+}
+
 static int
 scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
 {
@@ -163,6 +176,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
 
 	policy->cpuinfo.transition_latency = latency;
 
+	policy->fast_switch_possible = true;
 	return 0;
 
 out_free_cpufreq_table:
@@ -222,6 +236,7 @@ static struct cpufreq_driver scmi_cpufreq_driver = {
 	.verify	= cpufreq_generic_frequency_table_verify,
 	.attr	= cpufreq_generic_attr,
 	.target_index	= scmi_cpufreq_set_target,
+	.fast_switch	= scmi_cpufreq_fast_switch,
 	.get	= scmi_cpufreq_get_rate,
 	.init	= scmi_cpufreq_init,
 	.exit	= scmi_cpufreq_exit,
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: sudeep.holla@arm.com (Sudeep Holla)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 20/20] cpufreq: scmi: add support for fast frequency switching
Date: Tue,  2 Jan 2018 14:42:42 +0000	[thread overview]
Message-ID: <1514904162-11201-21-git-send-email-sudeep.holla@arm.com> (raw)
In-Reply-To: <1514904162-11201-1-git-send-email-sudeep.holla@arm.com>

The cpufreq core provides option for drivers to implement fast_switch
callback which is invoked for frequency switching from interrupt context.

This patch adds support for fast_switch callback in SCMI cpufreq driver
by making use of polling based SCMI transfer. It also sets the flag
fast_switch_possible.

Cc: linux-pm at vger.kernel.org
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
---
 drivers/cpufreq/scmi-cpufreq.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/cpufreq/scmi-cpufreq.c b/drivers/cpufreq/scmi-cpufreq.c
index 0ee9335d0063..d0a82d7c6fd4 100644
--- a/drivers/cpufreq/scmi-cpufreq.c
+++ b/drivers/cpufreq/scmi-cpufreq.c
@@ -64,6 +64,19 @@ scmi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)
 	return perf_ops->freq_set(handle, priv->domain_id, freq, false);
 }
 
+static unsigned int scmi_cpufreq_fast_switch(struct cpufreq_policy *policy,
+					     unsigned int target_freq)
+{
+	struct scmi_data *priv = policy->driver_data;
+	struct scmi_perf_ops *perf_ops = handle->perf_ops;
+
+	if (!perf_ops->freq_set(handle, priv->domain_id,
+				target_freq * 1000, true))
+		return target_freq;
+
+	return 0;
+}
+
 static int
 scmi_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)
 {
@@ -163,6 +176,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy)
 
 	policy->cpuinfo.transition_latency = latency;
 
+	policy->fast_switch_possible = true;
 	return 0;
 
 out_free_cpufreq_table:
@@ -222,6 +236,7 @@ static struct cpufreq_driver scmi_cpufreq_driver = {
 	.verify	= cpufreq_generic_frequency_table_verify,
 	.attr	= cpufreq_generic_attr,
 	.target_index	= scmi_cpufreq_set_target,
+	.fast_switch	= scmi_cpufreq_fast_switch,
 	.get	= scmi_cpufreq_get_rate,
 	.init	= scmi_cpufreq_init,
 	.exit	= scmi_cpufreq_exit,
-- 
2.7.4

  parent reply	other threads:[~2018-01-02 14:43 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-02 14:42 [PATCH v5 00/20] firmware: ARM System Control and Management Interface(SCMI) support Sudeep Holla
2018-01-02 14:42 ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 01/20] dt-bindings: mailbox: add support for mailbox client shared memory Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 02/20] dt-bindings: arm: add support for ARM System Control and Management Interface(SCMI) protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 03/20] firmware: arm_scmi: add basic driver infrastructure for SCMI Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-04 19:21   ` Alexey Klimov
2018-01-04 19:21     ` Alexey Klimov
2018-01-04 19:21     ` Alexey Klimov
2018-01-11 14:56   ` Sudeep Holla
2018-01-11 14:56     ` Sudeep Holla
2018-01-11 14:56     ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 04/20] firmware: arm_scmi: add common infrastructure and support for base protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 05/20] firmware: arm_scmi: add scmi protocol bus to enumerate protocol devices Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-02-19 11:35   ` Arnd Bergmann
2018-02-19 11:35     ` Arnd Bergmann
2018-02-19 11:35     ` Arnd Bergmann
2018-02-19 11:44     ` Sudeep Holla
2018-02-19 11:44       ` Sudeep Holla
2018-02-19 11:44       ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 06/20] firmware: arm_scmi: add initial support for performance protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-12 14:55   ` Alexey Klimov
2018-01-12 14:55     ` Alexey Klimov
2018-01-12 14:55     ` Alexey Klimov
2018-01-12 15:41     ` Sudeep Holla
2018-01-12 15:41       ` Sudeep Holla
2018-01-12 15:41       ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 07/20] firmware: arm_scmi: add initial support for clock protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 08/20] firmware: arm_scmi: add initial support for power protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 09/20] firmware: arm_scmi: add initial support for sensor protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 10/20] firmware: arm_scmi: probe and initialise all the supported protocols Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 11/20] firmware: arm_scmi: add support for polling based SCMI transfers Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-02-19 11:32   ` Arnd Bergmann
2018-02-19 11:32     ` Arnd Bergmann
2018-02-19 11:32     ` Arnd Bergmann
2018-02-19 11:50     ` Sudeep Holla
2018-02-19 11:50       ` Sudeep Holla
2018-02-19 11:50       ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 12/20] firmware: arm_scmi: add option for polling based performance domain operations Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 13/20] firmware: arm_scmi: refactor in preparation to support per-protocol channels Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 14/20] firmware: arm_scmi: add per-protocol channels support using idr objects Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 15/20] firmware: arm_scmi: add device power domain support using genpd Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 16/20] clk: add support for clocks provided by SCMI Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 17/20] hwmon: (core) Add hwmon_max to hwmon_sensor_types enumeration Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 18/20] hwmon: add support for sensors exported via ARM SCMI Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` [PATCH v5 19/20] cpufreq: add support for CPU DVFS based on SCMI message protocol Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-02 14:42 ` Sudeep Holla [this message]
2018-01-02 14:42   ` [PATCH v5 20/20] cpufreq: scmi: add support for fast frequency switching Sudeep Holla
2018-01-02 14:42   ` Sudeep Holla
2018-01-04 22:10   ` Alexey Klimov
2018-01-04 22:10     ` Alexey Klimov
2018-01-04 22:10     ` Alexey Klimov
2018-01-05 10:45     ` Sudeep Holla
2018-01-05 10:45       ` Sudeep Holla
2018-02-12 18:45 [PATCH v5 00/20][RESEND] firmware: ARM System Control and Management Interface(SCMI) support Sudeep Holla
2018-02-12 18:45 ` [PATCH v5 20/20] cpufreq: scmi: add support for fast frequency switching Sudeep Holla
2018-02-12 18:45   ` Sudeep Holla

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=1514904162-11201-21-git-send-email-sudeep.holla@arm.com \
    --to=sudeep.holla@arm.com \
    --cc=Ryan.Harkin@arm.com \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=harba@codeaurora.org \
    --cc=jassisinghbrar@gmail.com \
    --cc=klimov.linux@gmail.com \
    --cc=lho@apm.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=roy.franz@cavium.com \
    /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.