firmware: arm_scmi: Parse clock_enable_latency conditionally
authorCristian Marussi <cristian.marussi@arm.com>
Wed, 30 Mar 2022 15:05:41 +0000 (16:05 +0100)
committerSudeep Holla <sudeep.holla@arm.com>
Thu, 28 Apr 2022 17:22:52 +0000 (18:22 +0100)
The clock_enable_latency field in CLOCK_ATTRIBUTES response message has
been added only since SCMI v3.1. Use the advertised SCMI clock protocol
version as a proper condition check for parsing it, instead of the bare
message length lookup.

Link: https://lore.kernel.org/r/20220330150551.2573938-13-cristian.marussi@arm.com
Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
drivers/firmware/arm_scmi/clock.c

index 81f7397..cf26f18 100644 (file)
@@ -132,8 +132,8 @@ static int scmi_clock_attributes_get(const struct scmi_protocol_handle *ph,
                u32 latency = 0;
                attributes = le32_to_cpu(attr->attributes);
                strlcpy(clk->name, attr->name, SCMI_MAX_STR_SIZE);
-               /* Is optional field clock_enable_latency provided ? */
-               if (t->rx.len == sizeof(*attr))
+               /* clock_enable_latency field is present only since SCMI v3.1 */
+               if (PROTOCOL_REV_MAJOR(version) >= 0x2)
                        latency = le32_to_cpu(attr->clock_enable_latency);
                clk->enable_latency = latency ? : U32_MAX;
        }