As determined by experimentation and asking a hardware person, the FIFO in the Cadence IP is actually only 8 entries long, not 32. This is fixed in patch #1. As a bonus, patches #2 and #3 fix two other things I noticed while debugging this. Richard Fitzgerald (3): soundwire: cadence: Don't overflow the command FIFOs soundwire: cadence: Remove wasted space in response_buf soundwire: cadence: Drain the RX FIFO after an IO timeout drivers/soundwire/cadence_master.c | 45 +++++++++++++++++++----------- drivers/soundwire/cadence_master.h | 2 +- 2 files changed, 29 insertions(+), 18 deletions(-) -- 2.30.2