diff options
author | Cristian Marussi <cristian.marussi@arm.com> | 2021-03-16 12:48:31 +0000 |
---|---|---|
committer | Sudeep Holla <sudeep.holla@arm.com> | 2021-03-29 10:00:35 +0100 |
commit | 533c7095b1ff9271a32e5a4b45b2d35f1432ea04 (patch) | |
tree | a998893bc27acf3d6058dfe275ed0f399d7131f4 /drivers/firmware/arm_scmi/base.c | |
parent | 5ad3d1cf7d34c00aa5b425d93373b5c0044aa0a9 (diff) | |
download | linux-533c7095b1ff9271a32e5a4b45b2d35f1432ea04.tar.gz linux-533c7095b1ff9271a32e5a4b45b2d35f1432ea04.tar.bz2 linux-533c7095b1ff9271a32e5a4b45b2d35f1432ea04.zip |
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.
Also 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.
Link: https://lore.kernel.org/r/20210316124903.35011-7-cristian.marussi@arm.com
Tested-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'drivers/firmware/arm_scmi/base.c')
-rw-r--r-- | drivers/firmware/arm_scmi/base.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/firmware/arm_scmi/base.c b/drivers/firmware/arm_scmi/base.c index b0e16bea614a..34c8a29ede0c 100644 --- a/drivers/firmware/arm_scmi/base.c +++ b/drivers/firmware/arm_scmi/base.c @@ -318,6 +318,14 @@ static const struct scmi_event_ops base_event_ops = { .fill_custom_report = scmi_base_fill_custom_report, }; +static const struct scmi_protocol_events base_protocol_events = { + .queue_sz = 4 * SCMI_PROTO_QUEUE_SZ, + .ops = &base_event_ops, + .evts = base_events, + .num_events = ARRAY_SIZE(base_events), + .num_sources = SCMI_BASE_NUM_SOURCES, +}; + int scmi_base_protocol_init(struct scmi_handle *h) { int id, ret; @@ -352,12 +360,6 @@ int scmi_base_protocol_init(struct scmi_handle *h) dev_dbg(dev, "Found %d protocol(s) %d agent(s)\n", rev->num_protocols, rev->num_agents); - scmi_register_protocol_events(handle, SCMI_PROTOCOL_BASE, - (4 * SCMI_PROTO_QUEUE_SZ), - &base_event_ops, base_events, - ARRAY_SIZE(base_events), - SCMI_BASE_NUM_SOURCES); - for (id = 0; id < rev->num_agents; id++) { scmi_base_discover_agent_get(handle, id, name); dev_dbg(dev, "Agent %d: %s\n", id, name); @@ -370,6 +372,7 @@ static const struct scmi_protocol scmi_base = { .id = SCMI_PROTOCOL_BASE, .init = &scmi_base_protocol_init, .ops = NULL, + .events = &base_protocol_events, }; DEFINE_SCMI_PROTOCOL_REGISTER_UNREGISTER(base, scmi_base) |