diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2022-10-26 14:02:06 +0300 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2022-10-28 14:30:38 +0300 |
commit | 49a467310dc4fae591a3547860ee04d8730780f4 (patch) | |
tree | 1f7078d91b248cec5b473bf5af426e2739595a67 /drivers/soundwire | |
parent | f936fa7a954b262cb3908bbc8f01ba19dfaf9fbf (diff) | |
download | linux-49a467310dc4fae591a3547860ee04d8730780f4.tar.xz |
soundwire: qcom: check for outanding writes before doing a read
Reading will increase the fifo count, so check for outstanding cmd wrt.
write fifo depth to avoid overflow as read will also increase
write fifo cnt.
Fixes: a661308c34de ("soundwire: qcom: wait for fifo space to be available before read/write")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20221026110210.6575-3-srinivas.kandagatla@linaro.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire')
-rw-r--r-- | drivers/soundwire/qcom.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c index 8f1a1eb017a2..cee2b2223141 100644 --- a/drivers/soundwire/qcom.c +++ b/drivers/soundwire/qcom.c @@ -380,6 +380,12 @@ static int qcom_swrm_cmd_fifo_rd_cmd(struct qcom_swrm_ctrl *swrm, val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr); + /* + * Check for outstanding cmd wrt. write fifo depth to avoid + * overflow as read will also increase write fifo cnt. + */ + swrm_wait_for_wr_fifo_avail(swrm); + /* wait for FIFO RD to complete to avoid overflow */ usleep_range(100, 105); swrm->reg_write(swrm, SWRM_CMD_FIFO_RD_CMD, val); |