From 58543c0d410716d3871c490050819ef7265b7597 Mon Sep 17 00:00:00 2001 From: AKASHI Takahiro Date: Wed, 11 Oct 2023 19:07:01 +0900 Subject: [PATCH] firmware: scmi: add a version check against base protocol In SCMI base protocol version 2 (0x20000), new interfaces, BASE_SET_DEVICE_PERMISSIONS/BASE_SET_PROTOCOL_PERMISSIONS/ BASE_RESET_AGENT_CONFIGURATION, were added. Moreover, the api of BASE_DISCOVER_AGENT was changed to support self-agent discovery. So the driver expects SCMI firmware support version 2 of base protocol. Signed-off-by: AKASHI Takahiro Reviewed-by: Etienne Carriere --- drivers/firmware/scmi/base.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/firmware/scmi/base.c b/drivers/firmware/scmi/base.c index ee84e26194..1d41a8a98f 100644 --- a/drivers/firmware/scmi/base.c +++ b/drivers/firmware/scmi/base.c @@ -481,6 +481,7 @@ static int scmi_base_reset_agent_configuration_int(struct udevice *dev, */ static int scmi_base_probe(struct udevice *dev) { + u32 version; int ret; ret = devm_scmi_of_get_channel(dev); @@ -488,6 +489,13 @@ static int scmi_base_probe(struct udevice *dev) dev_err(dev, "get_channel failed\n"); return ret; } + ret = scmi_base_protocol_version_int(dev, &version); + if (ret) { + dev_err(dev, "getting protocol version failed\n"); + return ret; + } + if (version < SCMI_BASE_PROTOCOL_VERSION) + return -EINVAL; return ret; }