summaryrefslogtreecommitdiff
path: root/drivers/firmware/arm_scmi/clock.c
diff options
context:
space:
mode:
authorSudeep Holla <sudeep.holla@arm.com>2020-10-12 14:26:24 +0100
committerSudeep Holla <sudeep.holla@arm.com>2020-10-13 10:01:47 +0100
commit9724722fde8f9bbd2b87340f00b9300c9284001e (patch)
tree1cf10a48b0b9cfdb7757076a9775c6a0c3030d55 /drivers/firmware/arm_scmi/clock.c
parent7adb2c8aaaa6a387af7140e57004beba2c04a4c6 (diff)
firmware: arm_scmi: Add missing Rx size re-initialisation
Few commands provide the list of description partially and require to be called consecutively until all the descriptors are fetched completely. In such cases, we don't release the buffers and reuse them for consecutive transmits. However, currently we don't reset the Rx size which will be set as per the response for the last transmit. This may result in incorrect response size being interpretted as the firmware may repond with size greater than the one set but we read only upto the size set by previous response. Let us reset the receive buffer size to max possible in such cases as we don't know the exact size of the response. Link: https://lore.kernel.org/r/20201012141746.32575-1-sudeep.holla@arm.com Fixes: b6f20ff8bd94 ("firmware: arm_scmi: add common infrastructure and support for base protocol") Reported-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Diffstat (limited to 'drivers/firmware/arm_scmi/clock.c')
-rw-r--r--drivers/firmware/arm_scmi/clock.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index c1cfe3ee3d55..4645677d86f1 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -192,6 +192,8 @@ scmi_clock_describe_rates_get(const struct scmi_handle *handle, u32 clk_id,
}
tot_rate_cnt += num_returned;
+
+ scmi_reset_rx_to_maxsz(handle, t);
/*
* check for both returned and remaining to avoid infinite
* loop due to buggy firmware