diff options
author | Vinod Koul <vkoul@kernel.org> | 2022-11-23 15:21:09 +0100 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2022-11-23 15:21:09 +0100 |
commit | ca1c131ccf6e09f4976aeca035f12529c9a7d8a9 (patch) | |
tree | 96d13e6491e88da26212fbd3d1fbcc813db9865d /drivers | |
parent | dt-bindings: soundwire: Convert text bindings to DT Schema (diff) | |
parent | soundwire: qcom: check for outanding writes before doing a read (diff) | |
download | linux-ca1c131ccf6e09f4976aeca035f12529c9a7d8a9.tar.xz linux-ca1c131ccf6e09f4976aeca035f12529c9a7d8a9.zip |
Merge branch 'fixes' into next
Merge fixes into next as Intel driver has a dependency
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/soundwire/intel.c | 1 | ||||
-rw-r--r-- | drivers/soundwire/qcom.c | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/soundwire/intel.c b/drivers/soundwire/intel.c index e8855a2115f6..b9cb7e31ddb3 100644 --- a/drivers/soundwire/intel.c +++ b/drivers/soundwire/intel.c @@ -1512,6 +1512,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, bus->link_id = auxdev->id; bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN; + bus->clk_stop_timeout = 1; sdw_cdns_probe(cdns); diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c index ce00a5cf980c..335424870290 100644 --- a/drivers/soundwire/qcom.c +++ b/drivers/soundwire/qcom.c @@ -345,6 +345,9 @@ static int qcom_swrm_cmd_fifo_wr_cmd(struct qcom_swrm_ctrl *swrm, u8 cmd_data, if (swrm_wait_for_wr_fifo_avail(swrm)) return SDW_CMD_FAIL_OTHER; + if (cmd_id == SWR_BROADCAST_CMD_ID) + reinit_completion(&swrm->broadcast); + /* Its assumed that write is okay as we do not get any status back */ swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val); @@ -378,6 +381,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); |