Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->voltage_ops still
around to ease transition.
Remove handle->voltage_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: I3a0c415891792c46bc94179f063068fe913efe5f
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->sensor_ops still
around to ease transition.
Remove handle->sensor_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: I5928b7dfa0828139c9c4edf81169ea875119ebc6
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->reset_ops still
around to ease transition.
Remove handle->reset_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Iaf3ded6b344194dcfc4fcef5fc5cbadb6f8da07c
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->clk_ops still
around to ease transition.
Remove handle->clock_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: I57fffd97027470f96ffde4222ea997b67285207d
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->power_ops still
around to ease transition.
Remove handle->power_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Iaaaa1094d8cff6eec7ea6a21cbf0be9dbaa6fb32
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert internals of protocol implementation to use protocol handles and
expose a new protocol operations interface for SCMI driver using the new
get/put common operations, while keeping the old handle->perf_ops still
around to ease transition.
Remove handle->perf_priv now unused.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ia8d5dc1c40c392df41e19873064900f681588a9c
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add new core SCMI xfer operations based on protocol handles to enable
protocols to builds and send their own protocol specific messages.
Keep old original scmi_xfer_ operations interface as wrappers around the
new interface in order to let coexist old and new interfaces to ease
protocol by protocol migration.
In order to support such migration the above wrappers and some additional
transient code is also introduced in this commit: it will be later removed
as a whole once the full migration of protocols and SCMI drivers will have
been completed.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ia2a11c4f20573f9185e591625faa017883857b55
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Convert refactored events registration routines to use protocol handles.
In order to maintain bisectability and to allow protocols and drivers
to be later ported to the new protocol handle interface one by one,
introduce here also some transient code and typing that will be removed
later in order to ease such transition.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ic74cc4576b9189c0fff8968b8063a86375bb7ae7
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add a new refactored protocol events registration helper and invoke it
from the centralized initialization process triggered by get_ops() and
friends.
Add a .get_num_sources as a new optional callback amongst protocol events
operations; finally remove events registration call-sites from within the
legacy protocol init routines.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ib875eb3ec6be086c7d02175a6ff3742eb112026e
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add a method to get hold of a protocol, causing it to be initialized and
its resource accounting updated, without getting access to its operations
and handle.
Some protocols, like SCMI SystemPower, do not expose any protocol ops to
the Kernel OSPM agent but still need to be at least initialized: this
helper avoids the need to invoke a full devm_get_protocol() only to get
the protocol initialized while throwing away unused the protocol ops and
handle.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ic40ef47b4133e761db8eb3e93d00ab6b7c3c2fb8
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add basic protocol handles definitions and private data helpers support.
A protocol handle identifies a protocol instance initialized against a
specific handle; it embeds all the references to the core SCMI xfer methods
that will be needed by a protocol implementation to build and send its own
protocol specific messages using common core methods.
As such, in the interface, a protocol handle will be passed down from the
core to the protocol specific initialization callback at init time.
Anyway at this point only definitions are introduced, all protocols
initialization code and SCMI drivers probing is still based on the old
interface, so no functional change.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: I30e1f6ca36c660ef887c263db13031c077c815db
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Extend common protocol registration routines and provide some new generic
protocols get/put helpers that can track protocols usage and automatically
perform the proper initialization and de-initialization on demand when
required.
Convert all standard protocols to use this new registration scheme while
keeping them all still using the usual initialization logic bound to SCMI
devices probing.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: I8d40f1f25f8d007f1fa4788f432a7ffeb012e1c2
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
The SMC/HVC SCMI transport is modified to allow the completion of an
SCMI message to be indicated by an interrupt rather than the return of
the smc/hvc call. This accommodates the existing behavior of the
BrcmSTB SCMI "platform".
Link: https://lore.kernel.org/r/20201222145603.40192-3-jim2101024@gmail.com
Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
[sudeep.holla: added call to reinit_completion, whitespace cleanup, dropped
irrelavant info in the commit log]
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
(cherry picked from commit dd820ee21d)
Bug: 171409184
Change-Id: I0267e59fad1ae7ac17eccb44322f9eebbf13e920
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
In the normal use of smc/hvc as SCMI transport, the message completion
is indicated by the return of the SMC call. This binding provides for
an optional interrupt named "a2p" which can be used instead to indicate
the completion of a message.
Link: https://lore.kernel.org/r/20201222145603.40192-2-jim2101024@gmail.com
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
[sudeep.holla: minor wording changes to the commit log]
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
(cherry picked from commit 99a064fb3a)
Bug: 171409184
Change-Id: Ib9a89d395e04ad9f74c22d7a0197da9662b7f688
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add mechanism to discover the power scale present in the performance
protocol for all domains. Provide this information to Energy Model,
which then can be checked in other frameworks, e.g. thermal.
Suggested-by: Morten Rasmussen <morten.rasmussen@arm.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
(cherry picked from commit f9b0498d29)
Bug: 171409184
Change-Id: Id198065d55d4e54f55fc4e7ad00a0610da1ce9a7
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
There are different platforms and devices which might use different scale
for the power values. Kernel sub-systems might need to check if all
Energy Model (EM) devices are using the same scale. Address that issue and
store the information inside EM for each device. Thanks to that they can
be easily compared and proper action triggered.
Suggested-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Reviewed-by: Quentin Perret <qperret@google.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
(cherry picked from commit c250d50fe2)
Bug: 171409184
Change-Id: Ie6dc51db1e431b7287ed986114ce2f5b6732bd3b
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Add a new interface to the existing perf_ops and export the information
about the power values scale.
This would be used by the cpufreq driver and Energy Model framework to
set the performance domains scale: milli-Watts or abstract scale.
Suggested-by: Morten Rasmussen <morten.rasmussen@arm.com>
Reviewed-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
(cherry picked from commit 76ea4d8eee)
Bug: 171409184
Change-Id: Ibc3fb4b9bdb0c7175c1d53c9e953e46d30f362b6
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
Enable the ARM SCMI protocol and the common clock, cpufreq, reset and
sensors drivers. Broadcom STB platforms (ARCH_BRCMSTB) implement SCMI to
provide support for CPU frequency scaling, clock configuration and
temperature and current sensors.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
(cherry picked from commit 6a7dc2b363)
Bug: 171409184
Change-Id: I8ce128c46a27c3490b1d44694b07d0b179141c28
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
During regulators registration, if .of_match and .regulators_node are
defined as non-null strings in struct regulator_desc the core searches the
DT subtree rooted at .regulators_node trying to match, at first, .of_match
against the 'regulator-compatible' property and, then, falling back to use
the name of the node itself to determine a good match.
Property 'regulator-compatible', though, is now deprecated and falling back
to match against the node name, works fine only as long as the involved
nodes are named in an unique way across the searched subtree; if that's not
the case, like when using <common-name>@<unit> style naming for properties
indexed via 'reg' property (as advised by the standard), the above matching
mechanism based on the simple common name will lead to multiple matches and
the only viable alternative would be to properly define the now deprecated
'regulator-compatible' as the node full name, i.e. <common-name>@<unit>.
In order to address this case without using such deprecated binding, define
a new boolean flag .of_match_full_name in struct regulator_desc to force
the core to match against the node full-name instead of the plain name.
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Link: https://lore.kernel.org/r/20201119191051.46363-4-cristian.marussi@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit e7095c35ab)
Bug: 171409184
Change-Id: Ic1fea2f338f0691f7470365f757d49d50587b191
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
For sake of consistency, remove any residual naming based on _le
suffixes in SCMI sensors protocol, since little endianness is already
assumed across all of SCMI implementation and, as such, all currently
existent names do not explicitly state their endianness.
No functional change.
Link: https://lore.kernel.org/r/20201123162008.35814-1-cristian.marussi@arm.com
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
(cherry picked from commit e945927dc7)
Bug: 171409184
Change-Id: I4a34b7cb607e873e37acdac6c3f184f2ecb2f95a
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>