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 <takahiro.akashi@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
This commit is contained in:
AKASHI Takahiro 2023-10-11 19:07:01 +09:00 committed by Tom Rini
parent ec8727b7e1
commit 58543c0d41

View file

@ -481,6 +481,7 @@ static int scmi_base_reset_agent_configuration_int(struct udevice *dev,
*/ */
static int scmi_base_probe(struct udevice *dev) static int scmi_base_probe(struct udevice *dev)
{ {
u32 version;
int ret; int ret;
ret = devm_scmi_of_get_channel(dev); 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"); dev_err(dev, "get_channel failed\n");
return ret; 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; return ret;
} }