Commit Graph

974098 Commits

Author SHA1 Message Date
Cristian Marussi
bb35ff40d5 FROMLIST: firmware: arm_scmi: cleanup events registration transient code
Remove all the events registration code used to ease the transition to the
new interface based on protocol handles..

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: I8470b8cf24ce2e4d004e207a4213003e524f45e5
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:35 -08:00
Cristian Marussi
1b8df55e4f FROMLIST: firmware: arm_scmi: cleanup unused core xfer wrappers
Remove unused core scmi_xfer wrappers now that we have migrated all
protocols to the new interface based on protocol handles.

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: I9b69f34ecb7630da9cc3f4f33ff68e6016deb690
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:35 -08:00
Cristian Marussi
d09db08be5 FROMLIST: firmware: arm_scmi: cleanup legacy protocol init code
Now that all protocols and drivers have been ported to the new interface
based on protocol handles and get/put operations, remove all the legacy
transient initialization code.

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: Ic0870f5d5ee520aa9ba126d83e0adcdabda98fdf
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:34 -08:00
Cristian Marussi
8e441da50f FROMLIST: firmware: arm_scmi: make references to handle const
Now that all the protocol private variable data have been moved out of
struct scmi_handle, mark all of its references as const.

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: I90fb65928da4ec2e4e8043ac5d2179fdaf5fa705
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:34 -08:00
Cristian Marussi
30da353917 FROMLIST: firmware: arm_scmi: remove legacy scmi_voltage_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: I9984ae75fb216fc2080d6351087807a01d76d884
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:34 -08:00
Cristian Marussi
f473ac3b66 FROMLIST: regulator: scmi: port driver to the new scmi_voltage_proto_ops interface
Port driver to the new SCMI Voltage interface based on protocol handles
and common devm_get_ops().

Cc: Mark Brown <broonie@kernel.org>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Acked-by: Mark Brown <broonie@kernel.org>

Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Ieacb5b40cd696fdbec0d4b052cf52c0165dcf792
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:34 -08:00
Cristian Marussi
b974b071e2 FROMLIST: firmware: arm_scmi: port Voltage protocol to new protocols interface
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>
2021-03-02 17:34:34 -08:00
Cristian Marussi
b75183098d FROMLIST: firmware: arm_scmi: port SystemPower protocol to new protocols interface
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.

Remove handle->system_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: I0cc9e9735f5bc81af29dc483e5aaa6c3467a65bb
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:34 -08:00
Cristian Marussi
aa063a1bd2 FROMLIST: firmware: arm_scmi: remove legacy scmi_sensor_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: I6e463c6e080542d664483250bfe1b691cf458d42
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:33 -08:00
Cristian Marussi
efe20430de FROMLIST: hwmon: (scmi) port driver to the new scmi_sensor_proto_ops interface
Port driver to the new SCMI Sensor interface based on protocol handles
and common devm_get_ops().

Cc: Guenter Roeck <linux@roeck-us.net>
Cc: Jean Delvare <jdelvare@suse.com>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>

Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Id42bb46e2f83d9389407836c6d154467a68d847e
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:33 -08:00
Cristian Marussi
5d63c651d6 FROMLIST: firmware: arm_scmi: port Sensor protocol to new protocols interface
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>
2021-03-02 17:34:33 -08:00
Cristian Marussi
7552e331c6 FROMLIST: firmware: arm_scmi: remove legacy scmi_reset_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: I6d7ba8b4ab0383a4fff8c4057a7249f24f2ac453
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:33 -08:00
Cristian Marussi
b2fc2b3791 FROMLIST: reset: reset-scmi: port driver to the new scmi_reset_proto_ops interface
Port driver to the new SCMI Reset interface based on protocol handles
and common devm_get_ops().

Cc: Philipp Zabel <p.zabel@pengutronix.de>
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: I245669aea9d2719b3008905d2428cbf62a9cf974
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:33 -08:00
Cristian Marussi
ee69aeba56 FROMLIST: firmware: arm_scmi: port Reset protocol to new protocols interface
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>
2021-03-02 17:34:32 -08:00
Cristian Marussi
cf6cde9f1d FROMLIST: firmware: arm_scmi: remove legacy scmi_clk_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: I8deb2f967d9333bb6f6cf88fb1bb4f7aed622608
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:32 -08:00
Cristian Marussi
bcd627f631 FROMLIST: clk: scmi: port driver to the new scmi_clk_proto_ops interface
Port driver to the new SCMI Clock interface based on protocol handles
and common devm_get_ops().

Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
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: Ieea7fd7fb8536c54c90ed19717a8a6239252482b
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:32 -08:00
Cristian Marussi
1d2b863ec9 FROMLIST: firmware: arm_scmi: port Clock protocol to new protocols interface
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>
2021-03-02 17:34:32 -08:00
Cristian Marussi
478ad998ea FROMLIST: firmware: arm_scmi: remove legacy scmi_power_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: I2b5d3129ca54b5eae810682a5fbd9ca2fe49c9f7
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:32 -08:00
Cristian Marussi
b3498e7475 FROMLIST: firmware: arm_scmi: port GenPD driver to the new scmi_power_proto_ops interface
Port driver to the new SCMI Power interface based on protocol handles
and common devm_get_ops().

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: I400f0356b880711875713054fd9330c7fd97f7c7
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:32 -08:00
Cristian Marussi
ec2e9785ce FROMLIST: firmware: arm_scmi: port Power protocol to new protocols interface
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>
2021-03-02 17:34:31 -08:00
Cristian Marussi
6ffe326ac2 FROMLIST: firmware: arm_scmi: remove legacy scmi_perf_ops protocol interface
Now that all the SCMI driver users have been migrated to the new interface
remove the legacy interface and all the transient code.

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: Ifd74693644daae8e0aa1ee5997cdb4edf1ed8460
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:31 -08:00
Cristian Marussi
8b0d407157 FROMLIST: cpufreq: scmi: port driver to the new scmi_perf_proto_ops interface
Port driver to the new SCMI Perf interface based on protocol handles
and common devm_get_ops().

Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

Bug: 171409184
Link: https://lore.kernel.org/linux-arm-kernel/20210202221555.41167-1-cristian.marussi@arm.com/
Change-Id: Id27af751053ba5f289a3989fdaa6cd28e8e2fa66
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:31 -08:00
Cristian Marussi
213ea76908 FROMLIST: firmware: arm_scmi: port Perf protocol to new protocols interface
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>
2021-03-02 17:34:31 -08:00
Cristian Marussi
59d6bfe64f FROMLIST: firmware: arm_scmi: port Base protocol to new interface
Port Base protocol to new protocol handles based interface.

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: I57264cc7d4708e513ae85b69099bf32a274b0e16
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:31 -08:00
Cristian Marussi
f4423d3944 FROMLIST: firmware: arm_scmi: add helper to access revision area memory
Add an helper to grab, from a protocol handle, the handle common memory
area allocated to store SCMI version data which is exposed on sysfs.
Such helper will be needed by SCMI Base protocol initialization once it
will be moved to new protocol handles scheme.

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: Ic1d9a6c0b7940abfc7e370c0d955aae83c449c6a
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:31 -08:00
Cristian Marussi
a3433ea580 FROMLIST: firmware: arm_scmi: add new protocol handle core xfer ops
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>
2021-03-02 17:34:30 -08:00
Cristian Marussi
a0a8e0f761 FROMLIST: firmware: arm_scmi: convert events registration to protocol handles
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>
2021-03-02 17:34:30 -08:00
Cristian Marussi
834134abe6 FROMLIST: firmware: arm_scmi: refactor events registration
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>
2021-03-02 17:34:30 -08:00
Cristian Marussi
0c203b198e FROMLIST: firmware: arm_scmi: introduce new devres notification ops
Expose to the SCMI drivers a new alternative devres managed notifications
API based on protocol handles.

All drivers still keep using the old API, 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: I3867be1ada472e5d09335cb8be25cbcac84763b1
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:30 -08:00
Cristian Marussi
d25dc33d27 FROMLIST: firmware: arm_scmi: make notifications aware of protocols users
Account for any active registered notifier against the proper related
protocol; do not consider pending event handlers, only active handlers
will concur to protocol usage accounting.

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: Ic705bf7ccf5dfbd46f687c467a7597ba141ef04e
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:30 -08:00
Cristian Marussi
4225eb5ab1 FROMLIST: firmware: arm_scmi: add devm_acquire_protocol helper
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>
2021-03-02 17:34:29 -08:00
Cristian Marussi
bfacf9cff5 FROMLIST: firmware: arm_scmi: introduce devres get/put protocols operations
Expose to the SCMI drivers a new devres managed common protocols API based
on generic get/put methods and protocol handles.

All drivers still keep using the old API, 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: Icd8d74fb4b40318f0acfcd882728d1ea1f33f363
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:29 -08:00
Cristian Marussi
bd376903a5 FROMLIST: firmware: arm_scmi: introduce protocol handle definitions
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>
2021-03-02 17:34:29 -08:00
Cristian Marussi
cf516fb6f7 FROMLIST: firmware: arm_scmi: review protocol registration interface
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>
2021-03-02 17:34:29 -08:00
Cristian Marussi
f1f7d0dfe6 UPSTREAM: firmware: arm_scmi: Fix call site of scmi_notification_exit
Call scmi_notification_exit() only when SCMI platform driver instance has
been really successfully removed.

Link: https://lore.kernel.org/r/20210112191326.29091-1-cristian.marussi@arm.com
Fixes: 6b8a69131d ("firmware: arm_scmi: Enable notification core")
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
[sudeep.holla: Move the call outside the list mutex locking]
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

(cherry picked from commit a90b6543bf)
Bug: 171409184
Change-Id: I163c317178e00a9177fc57cce78ffaef1781fa8d
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:29 -08:00
Sudeep Holla
3f910da297 UPSTREAM: MAINTAINERS: Update ARM SCMI entry
Cristian is actively developing new features and more involved than me.
So add Cristian as a designated reviewer. Also add the newly added scmi
regulator driver to the list.

Link: https://lore.kernel.org/r/20210105151945.406093-1-sudeep.holla@arm.com
Cc: Cristian Marussi <cristian.marussi@arm.com>
Acked-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

(cherry picked from commit 6054d97ab5)
Bug: 171409184
Change-Id: I4418377ca19d39f5d30a6c72d6ef91c9caf452e5
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:29 -08:00
Jim Quinlan
3ff2080a11 UPSTREAM: firmware: arm_scmi: Augment SMC/HVC to allow optional interrupt
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>
2021-03-02 17:34:28 -08:00
Jim Quinlan
94696ee4a7 UPSTREAM: dt-bindings: arm: Add optional interrupt to smc/hvc SCMI transport
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>
2021-03-02 17:34:28 -08:00
Lukasz Luba
0b22645317 UPSTREAM: cpufreq: arm_scmi: Discover the power scale in performance protocol
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>
2021-03-02 17:34:28 -08:00
Lukasz Luba
9580671a65 UPSTREAM: PM: EM: Add a flag indicating units of power values in Energy Model
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>
2021-03-02 17:34:28 -08:00
Lukasz Luba
8a015a325d UPSTREAM: firmware: arm_scmi: Add power_scale_mw_get() interface
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>
2021-03-02 17:34:28 -08:00
Florian Fainelli
0128f170b3 UPSTREAM: arm64: defconfig: Enable ARM SCMI protocol and drivers
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>
2021-03-02 17:34:28 -08:00
Cristian Marussi
a76ebab186 UPSTREAM: regulator: add SCMI driver
Add a simple regulator based on SCMI Voltage Domain Protocol.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
----
v6 --> v7
- add proper blank lines between semantic blocks
- fix return value on error path of scmi_reg_is_enabled()
- use generic Failure message on err path of info_get()
- fix comment containing apostrophe

v3 --> v4
- using of_match_full_name core regulator flag
- avoid coccinelle falde complaints about pointer-sized allocations

v2 --> v3
- remove multiple linear mappings support
- removed duplicated voltage name printout
- added a few comments
- simplified return path in scmi_reg_set_voltage_sel()

v1 --> v2
- removed duplicate regulator naming
- removed redundant .get/set_voltage ops: only _sel variants implemented
- removed condexpr on fail path to increase readability

v0 --> v1
- fixed init_data constraint parsing
- fixes for v5.8 (linear_range.h)
- fixed commit message content and subject line format
- factored out SCMI core specific changes to distinct patch
- reworked Kconfig and Makefile to keep proper alphabetic order
- fixed SPDX comment style
- removed unneeded inline functions
- reworked conditionals for legibility
- fixed some return paths to properly report SCMI original errors codes
- added some more descriptive error messages when fw returns invalid ranges
- removed unneeded explicit devm_regulator_unregister from .remove()
Link: https://lore.kernel.org/r/20201123202336.46701-4-cristian.marussi@arm.com

Signed-off-by: Mark Brown <broonie@kernel.org>

(cherry picked from commit 0fbeae70ee)
Bug: 171409184
Change-Id: I4fd47805d821ad993f0240cf3fb1879ce01a4a06
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:27 -08:00
Cristian Marussi
126a7a4649 UPSTREAM: regulator: core: add of_match_full_name boolean flag
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>
2021-03-02 17:34:27 -08:00
Cristian Marussi
d3c7786605 UPSTREAM: dt-bindings: arm: remove optional properties for SCMI Regulators
Remove optional properties bindings descriptions for SCMI Regulators.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Link: https://lore.kernel.org/r/20201123202336.46701-2-cristian.marussi@arm.com
Signed-off-by: Mark Brown <broonie@kernel.org>

(cherry picked from commit e8056bf010)
Bug: 171409184
Change-Id: Id8bc01fbda1d908f4df777fbd49b5f7ccb76ca53
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:27 -08:00
Cristian Marussi
9b9cac3804 UPSTREAM: firmware: arm_scmi: Remove residual _le structs naming
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>
2021-03-02 17:34:27 -08:00
Cristian Marussi
9d5f3776d3 UPSTREAM: firmware: arm_scmi: Add SCMI v3.0 sensor notifications
Add support for new SCMI v3.0 SENSOR_UPDATE notification.

Link: https://lore.kernel.org/r/20201119174906.43862-7-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 e3811190ac)
Bug: 171409184
Change-Id: Ica718e92cbdefe9d28360a3ba39d6b7d9c821517
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:27 -08:00
Cristian Marussi
ac18ef8d26 UPSTREAM: firmware: arm_scmi: Add SCMI v3.0 sensor configuration support
Add SCMI v3.0 sensor support for CONFIG_GET/CONFIG_SET commands.

Link: https://lore.kernel.org/r/20201119174906.43862-6-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 7b83c5f410)
Bug: 171409184
Change-Id: Id03823bdf67f108de679198a9447c4c5456dac60
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:27 -08:00
Cristian Marussi
69e0cb32b5 UPSTREAM: firmware: arm_scmi: Add SCMI v3.0 sensors timestamped reads
Add new .reading_get_timestamped() method to sensor_ops to support SCMI v3.0
timestamped reads.

Link: https://lore.kernel.org/r/20201119174906.43862-5-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 e2083d3673)
Bug: 171409184
Change-Id: Ic743ae3414a7ebb256f054b3028844455240bb08
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:26 -08:00
Cristian Marussi
7f202f96e1 UPSTREAM: hwmon: (scmi) Update hwmon internal scale data type
Use an int to calculate scale values inside scmi_hwmon_scale() to match
the updated scale data type in struct scmi_sensor_info.

Link: https://lore.kernel.org/r/20201119174906.43862-4-cristian.marussi@arm.com
Cc: linux-hwmon@vger.kernel.org
Acked-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

(cherry picked from commit d7971d57d2)
Bug: 171409184
Change-Id: I07d67bd30f54f6162177e760b1c8c3983b0ab3c8
Signed-off-by: Rishabh Bhatnagar <quic_rishabhb@quicinc.com>
2021-03-02 17:34:26 -08:00