From: Cristian Marussi <cristian.marussi@arm.com> To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com Subject: [PATCH 00/22] SCMIv3.1 Miscellaneous changes Date: Wed, 30 Mar 2022 16:05:29 +0100 [thread overview] Message-ID: <20220330150551.2573938-1-cristian.marussi@arm.com> (raw) Hi all, this series introduces a bunch of SCMIv3.1 miscellaneous changes to support basically all the SCMIv3.1 specification [1] addition with the exclusion of the Powercap protocol and driver which will be introduced later on in another series. Most notably the series adds: - supports across all protocols for long resources naming using *_NAME_GET dedicated new commands - Clock protocol Rate change pre and post notifications - Voltage protocol asynchronous voltage level set command (VOLTAGE_LEVEL_SET_COMPLETE delayed response) - Perf protocol power-cost in micro-watts (only internal support) - Perf protocol PERFORMANCE_LIMITS_SET new checks Beside this, the series starts with a few general fixes (01-08/22) and a couple of refactoring: - one (09/22) simply to split out of common.h into a new protocols.h all the structures needed only by protocol code, so that the protocol implementation can include such reduced header instead of the whole common.h which was growing insanely - another around the handling of multi-part commands. SCMI already allowed to issue some commands using a multi-message scheme through which a particularly big response, which could possibly not fit the underlying transport max payload size, could have been split into multiple chunks. Such logic, though, was scattered all across various protocols, leading to a lot of code duplication, so, before adding even more duplication with SCMIv3.1, I split out the common logic to a couple of helpers to handle such mechanism in a common way through some abstract iterators (13/22) and then ported all the protocols users of such mechanism to the common iterators (14,16-18/22). SCMIv3.1 new features have been tested with an emulated backend server, while refactoring has been chekced against a standard SCMI stack running on a JUNO. The series is based on sudeep/for-next/scmi/updates [2] on top of commit 38a0e5b735d6 ("clk: scmi: Support atomic clock enable/disable API") Any feedback very welcome, Thanks, Cristian [1]: https://developer.arm.com/documentation/den0056/d/?lang=en [2]: https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/log/?h=for-next/scmi/updates --- Cristian Marussi (22): firmware: arm_scmi: Fix sorting of retrieved clock rates firmware: arm_scmi: Make protocols init fail on basic errors firmware: arm_scmi: Fix Base list protocols enumeration firmware: arm_scmi: Validate BASE_DISCOVER_LIST_PROTOCOLS reply firmware: arm_scmi: Dynamically allocate protocols array firmware: arm_scmi: Make name_get operations return a const firmware: arm_scmi: Check CLOCK_RATE_SET_COMPLETE async reply firmware: arm_scmi: Remove unneeded NULL termination of clk name firmware: arm_scmi: Split protocol specific definitions in a dedicated header firmware: arm_scmi: Introduce a common SCMIv3.1 .extended_name_get helper firmware: arm_scmi: Add SCMIv3.1 extended names protocols support firmware: arm_scmi: Parse clock_enable_latency conditionally firmware: arm_scmi: Add iterators for multi-part commands firmware: arm_scmi: Use common iterators in Sensor protocol firmware: arm_scmi: Add SCMIv3.1 SENSOR_AXIS_NAME_GET support firmware: arm_scmi: Use common iterators in Clock protocol firmware: arm_scmi: Use common iterators in Voltage protocol firmware: arm_scmi: Use common iterators in Perf protocol firmware: arm_scmi: Add SCMIv3.1 Clock notifications firmware: arm_scmi: Add SCMIv3.1 VOLTAGE_LEVEL_SET_COMPLETE firmware: arm_scmi: Add SCMI v3.1 Perf power-cost in microwatts firmware: arm_scmi: Add SCMIv3.1 PERFORMANCE_LIMITS_SET checks drivers/firmware/arm_scmi/base.c | 43 +- drivers/firmware/arm_scmi/clock.c | 337 +++++++++++--- drivers/firmware/arm_scmi/common.h | 225 +-------- drivers/firmware/arm_scmi/driver.c | 165 ++++++- drivers/firmware/arm_scmi/perf.c | 162 ++++--- drivers/firmware/arm_scmi/power.c | 44 +- drivers/firmware/arm_scmi/protocols.h | 318 +++++++++++++ drivers/firmware/arm_scmi/reset.c | 40 +- drivers/firmware/arm_scmi/sensors.c | 645 +++++++++++++++----------- drivers/firmware/arm_scmi/system.c | 9 +- drivers/firmware/arm_scmi/voltage.c | 218 ++++++--- include/linux/scmi_protocol.h | 31 +- 12 files changed, 1495 insertions(+), 742 deletions(-) create mode 100644 drivers/firmware/arm_scmi/protocols.h -- 2.32.0
WARNING: multiple messages have this Message-ID (diff)
From: Cristian Marussi <cristian.marussi@arm.com> To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: sudeep.holla@arm.com, james.quinlan@broadcom.com, Jonathan.Cameron@Huawei.com, f.fainelli@gmail.com, etienne.carriere@linaro.org, vincent.guittot@linaro.org, souvik.chakravarty@arm.com, cristian.marussi@arm.com Subject: [PATCH 00/22] SCMIv3.1 Miscellaneous changes Date: Wed, 30 Mar 2022 16:05:29 +0100 [thread overview] Message-ID: <20220330150551.2573938-1-cristian.marussi@arm.com> (raw) Hi all, this series introduces a bunch of SCMIv3.1 miscellaneous changes to support basically all the SCMIv3.1 specification [1] addition with the exclusion of the Powercap protocol and driver which will be introduced later on in another series. Most notably the series adds: - supports across all protocols for long resources naming using *_NAME_GET dedicated new commands - Clock protocol Rate change pre and post notifications - Voltage protocol asynchronous voltage level set command (VOLTAGE_LEVEL_SET_COMPLETE delayed response) - Perf protocol power-cost in micro-watts (only internal support) - Perf protocol PERFORMANCE_LIMITS_SET new checks Beside this, the series starts with a few general fixes (01-08/22) and a couple of refactoring: - one (09/22) simply to split out of common.h into a new protocols.h all the structures needed only by protocol code, so that the protocol implementation can include such reduced header instead of the whole common.h which was growing insanely - another around the handling of multi-part commands. SCMI already allowed to issue some commands using a multi-message scheme through which a particularly big response, which could possibly not fit the underlying transport max payload size, could have been split into multiple chunks. Such logic, though, was scattered all across various protocols, leading to a lot of code duplication, so, before adding even more duplication with SCMIv3.1, I split out the common logic to a couple of helpers to handle such mechanism in a common way through some abstract iterators (13/22) and then ported all the protocols users of such mechanism to the common iterators (14,16-18/22). SCMIv3.1 new features have been tested with an emulated backend server, while refactoring has been chekced against a standard SCMI stack running on a JUNO. The series is based on sudeep/for-next/scmi/updates [2] on top of commit 38a0e5b735d6 ("clk: scmi: Support atomic clock enable/disable API") Any feedback very welcome, Thanks, Cristian [1]: https://developer.arm.com/documentation/den0056/d/?lang=en [2]: https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/log/?h=for-next/scmi/updates --- Cristian Marussi (22): firmware: arm_scmi: Fix sorting of retrieved clock rates firmware: arm_scmi: Make protocols init fail on basic errors firmware: arm_scmi: Fix Base list protocols enumeration firmware: arm_scmi: Validate BASE_DISCOVER_LIST_PROTOCOLS reply firmware: arm_scmi: Dynamically allocate protocols array firmware: arm_scmi: Make name_get operations return a const firmware: arm_scmi: Check CLOCK_RATE_SET_COMPLETE async reply firmware: arm_scmi: Remove unneeded NULL termination of clk name firmware: arm_scmi: Split protocol specific definitions in a dedicated header firmware: arm_scmi: Introduce a common SCMIv3.1 .extended_name_get helper firmware: arm_scmi: Add SCMIv3.1 extended names protocols support firmware: arm_scmi: Parse clock_enable_latency conditionally firmware: arm_scmi: Add iterators for multi-part commands firmware: arm_scmi: Use common iterators in Sensor protocol firmware: arm_scmi: Add SCMIv3.1 SENSOR_AXIS_NAME_GET support firmware: arm_scmi: Use common iterators in Clock protocol firmware: arm_scmi: Use common iterators in Voltage protocol firmware: arm_scmi: Use common iterators in Perf protocol firmware: arm_scmi: Add SCMIv3.1 Clock notifications firmware: arm_scmi: Add SCMIv3.1 VOLTAGE_LEVEL_SET_COMPLETE firmware: arm_scmi: Add SCMI v3.1 Perf power-cost in microwatts firmware: arm_scmi: Add SCMIv3.1 PERFORMANCE_LIMITS_SET checks drivers/firmware/arm_scmi/base.c | 43 +- drivers/firmware/arm_scmi/clock.c | 337 +++++++++++--- drivers/firmware/arm_scmi/common.h | 225 +-------- drivers/firmware/arm_scmi/driver.c | 165 ++++++- drivers/firmware/arm_scmi/perf.c | 162 ++++--- drivers/firmware/arm_scmi/power.c | 44 +- drivers/firmware/arm_scmi/protocols.h | 318 +++++++++++++ drivers/firmware/arm_scmi/reset.c | 40 +- drivers/firmware/arm_scmi/sensors.c | 645 +++++++++++++++----------- drivers/firmware/arm_scmi/system.c | 9 +- drivers/firmware/arm_scmi/voltage.c | 218 ++++++--- include/linux/scmi_protocol.h | 31 +- 12 files changed, 1495 insertions(+), 742 deletions(-) create mode 100644 drivers/firmware/arm_scmi/protocols.h -- 2.32.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2022-03-30 15:06 UTC|newest] Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-03-30 15:05 Cristian Marussi [this message] 2022-03-30 15:05 ` [PATCH 00/22] SCMIv3.1 Miscellaneous changes Cristian Marussi 2022-03-30 15:05 ` [PATCH 01/22] firmware: arm_scmi: Fix sorting of retrieved clock rates Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 02/22] firmware: arm_scmi: Make protocols init fail on basic errors Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-04-26 15:35 ` Sudeep Holla 2022-04-26 15:35 ` Sudeep Holla 2022-04-26 16:25 ` Cristian Marussi 2022-04-26 16:25 ` Cristian Marussi 2022-04-28 10:25 ` Sudeep Holla 2022-04-28 10:25 ` Sudeep Holla 2022-04-28 12:07 ` Cristian Marussi 2022-04-28 12:07 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 03/22] firmware: arm_scmi: Fix Base list protocols enumeration Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 04/22] firmware: arm_scmi: Validate BASE_DISCOVER_LIST_PROTOCOLS reply Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-04-28 10:07 ` Sudeep Holla 2022-04-28 10:07 ` Sudeep Holla 2022-04-28 13:45 ` Cristian Marussi 2022-04-28 13:45 ` Cristian Marussi 2022-04-28 13:55 ` Sudeep Holla 2022-04-28 13:55 ` Sudeep Holla 2022-04-28 14:03 ` Cristian Marussi 2022-04-28 14:03 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 05/22] firmware: arm_scmi: Dynamically allocate protocols array Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-04-28 10:27 ` Sudeep Holla 2022-04-28 10:27 ` Sudeep Holla 2022-03-30 15:05 ` [PATCH 06/22] firmware: arm_scmi: Make name_get operations return a const Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 07/22] firmware: arm_scmi: Check CLOCK_RATE_SET_COMPLETE async reply Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 08/22] firmware: arm_scmi: Remove unneeded NULL termination of clk name Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 09/22] firmware: arm_scmi: Split protocol specific definitions in a dedicated header Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 10/22] firmware: arm_scmi: Introduce a common SCMIv3.1 .extended_name_get helper Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 11/22] firmware: arm_scmi: Add SCMIv3.1 extended names protocols support Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-06-15 3:45 ` Florian Fainelli 2022-06-15 3:45 ` Florian Fainelli 2022-06-15 8:17 ` Cristian Marussi 2022-06-15 8:17 ` Cristian Marussi 2022-06-15 9:40 ` Cristian Marussi 2022-06-15 9:40 ` Cristian Marussi 2022-06-15 16:10 ` Florian Fainelli 2022-06-15 16:10 ` Florian Fainelli 2022-06-15 16:29 ` Cristian Marussi 2022-06-15 16:29 ` Cristian Marussi 2022-06-15 17:19 ` Florian Fainelli 2022-06-15 17:19 ` Florian Fainelli 2022-06-15 17:32 ` Cristian Marussi 2022-06-15 17:32 ` Cristian Marussi 2022-06-15 22:58 ` Florian Fainelli 2022-06-15 22:58 ` Florian Fainelli 2022-03-30 15:05 ` [PATCH 12/22] firmware: arm_scmi: Parse clock_enable_latency conditionally Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 13/22] firmware: arm_scmi: Add iterators for multi-part commands Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 14/22] firmware: arm_scmi: Use common iterators in Sensor protocol Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 15/22] firmware: arm_scmi: Add SCMIv3.1 SENSOR_AXIS_NAME_GET support Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-06-02 14:25 ` Peter Hilber 2022-06-02 14:25 ` Peter Hilber 2022-06-06 8:18 ` Cristian Marussi 2022-06-06 8:18 ` Cristian Marussi 2022-06-08 8:40 ` Peter Hilber 2022-06-08 8:40 ` Peter Hilber 2022-06-08 8:49 ` Cristian Marussi 2022-06-08 8:49 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 16/22] firmware: arm_scmi: Use common iterators in Clock protocol Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 17/22] firmware: arm_scmi: Use common iterators in Voltage protocol Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 18/22] firmware: arm_scmi: Use common iterators in Perf protocol Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 19/22] firmware: arm_scmi: Add SCMIv3.1 Clock notifications Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 20/22] firmware: arm_scmi: Add SCMIv3.1 VOLTAGE_LEVEL_SET_COMPLETE Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 15:05 ` [PATCH 21/22] firmware: arm_scmi: Add SCMI v3.1 Perf power-cost in microwatts Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-03-30 16:46 ` Lukasz Luba 2022-03-30 16:46 ` Lukasz Luba 2022-03-30 15:05 ` [PATCH 22/22] firmware: arm_scmi: Add SCMIv3.1 PERFORMANCE_LIMITS_SET checks Cristian Marussi 2022-03-30 15:05 ` Cristian Marussi 2022-04-28 13:13 ` Sudeep Holla 2022-04-28 13:13 ` Sudeep Holla 2022-04-28 13:49 ` Cristian Marussi 2022-04-28 13:49 ` Cristian Marussi 2022-04-28 13:52 ` Sudeep Holla 2022-04-28 13:52 ` Sudeep Holla 2022-04-28 13:46 ` [PATCH 00/22] SCMIv3.1 Miscellaneous changes Sudeep Holla 2022-04-28 13:46 ` Sudeep Holla 2022-05-03 8:03 ` Sudeep Holla 2022-05-03 8:03 ` 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=20220330150551.2573938-1-cristian.marussi@arm.com \ --to=cristian.marussi@arm.com \ --cc=Jonathan.Cameron@Huawei.com \ --cc=etienne.carriere@linaro.org \ --cc=f.fainelli@gmail.com \ --cc=james.quinlan@broadcom.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=souvik.chakravarty@arm.com \ --cc=sudeep.holla@arm.com \ --cc=vincent.guittot@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: linkBe 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.