summaryrefslogtreecommitdiff
path: root/drivers/soundwire/master.c
diff options
context:
space:
mode:
authorRichard Fitzgerald <rf@opensource.cirrus.com>2022-12-02 19:18:12 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-03-11 18:40:18 +0300
commita6549336f574658433e10a34e72f7669cac6afbe (patch)
treed19024719587609ae9a688d57fabd1ee57dbb52a /drivers/soundwire/master.c
parente5ca5b71363a0a4902f8968191e8ddf939b5018e (diff)
downloadlinux-a6549336f574658433e10a34e72f7669cac6afbe.tar.xz
soundwire: cadence: Drain the RX FIFO after an IO timeout
[ Upstream commit 0603a47bd3a8f439d7844b841eee1819353063e0 ] If wait_for_completion_timeout() times-out in _cdns_xfer_msg() it is possible that something could have been written to the RX FIFO. In this case, we should drain the RX FIFO so that anything in it doesn't carry over and mess up the next transfer. Obviously, if we got to this state something went wrong, and we don't really know the state of everything. The cleanup in this situation cannot be bullet-proof but we should attempt to avoid breaking future transaction, if only to reduce the amount of error noise when debugging the failure from a kernel log. Note that this patch only implements the draining for blocking (non-deferred) transfers. The deferred API doesn't have any proper handling of error conditions and would need some re-design before implementing cleanup. That is a task for a separate patch... Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20221202161812.4186897-4-rf@opensource.cirrus.com Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/soundwire/master.c')
0 files changed, 0 insertions, 0 deletions