mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 02:46:06 +00:00
firmware: arm_scmi: Implement is_notify_supported callback in system power protocol
Add a preliminary check to verify if the system power protocol related notify enable commands are supported at all by the SCMI platform, and then provide the callback needed to allow the core SCMI notification subsytem to do a fine-grain check if a specific resource domain supports notifications. Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> Link: https://lore.kernel.org/r/20240212123233.1230090-6-cristian.marussi@arm.com Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
b7e400bc2e
commit
9f5ddbc222
@ -36,8 +36,20 @@ struct scmi_system_power_state_notifier_payld {
|
||||
struct scmi_system_info {
|
||||
u32 version;
|
||||
bool graceful_timeout_supported;
|
||||
bool power_state_notify_cmd;
|
||||
};
|
||||
|
||||
static bool scmi_system_notify_supported(const struct scmi_protocol_handle *ph,
|
||||
u8 evt_id, u32 src_id)
|
||||
{
|
||||
struct scmi_system_info *pinfo = ph->get_priv(ph);
|
||||
|
||||
if (evt_id != SCMI_EVENT_SYSTEM_POWER_STATE_NOTIFIER)
|
||||
return false;
|
||||
|
||||
return pinfo->power_state_notify_cmd;
|
||||
}
|
||||
|
||||
static int scmi_system_request_notify(const struct scmi_protocol_handle *ph,
|
||||
bool enable)
|
||||
{
|
||||
@ -114,6 +126,7 @@ static const struct scmi_event system_events[] = {
|
||||
};
|
||||
|
||||
static const struct scmi_event_ops system_event_ops = {
|
||||
.is_notify_supported = scmi_system_notify_supported,
|
||||
.set_notify_enabled = scmi_system_set_notify_enabled,
|
||||
.fill_custom_report = scmi_system_fill_custom_report,
|
||||
};
|
||||
@ -147,6 +160,9 @@ static int scmi_system_protocol_init(const struct scmi_protocol_handle *ph)
|
||||
if (PROTOCOL_REV_MAJOR(pinfo->version) >= 0x2)
|
||||
pinfo->graceful_timeout_supported = true;
|
||||
|
||||
if (!ph->hops->protocol_msg_check(ph, SYSTEM_POWER_STATE_NOTIFY, NULL))
|
||||
pinfo->power_state_notify_cmd = true;
|
||||
|
||||
return ph->set_priv(ph, pinfo, version);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user