diff options
author | Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | 2024-03-26 07:00:21 +0100 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2024-03-28 19:14:04 +0100 |
commit | b3a6809e623c03371ba51845129cdec3ebb7896e (patch) | |
tree | 6ffaa3aed998421501d495c184c2e759b4a11d39 /drivers/soundwire | |
parent | soundwire: amd: use inline function for register update (diff) | |
download | linux-b3a6809e623c03371ba51845129cdec3ebb7896e.tar.xz linux-b3a6809e623c03371ba51845129cdec3ebb7896e.zip |
soundwire: bus: don't clear SDCA_CASCADE bit
The SDCA_CASCADE bit is a SoundWire 1.2 addition. It is technically in
the DP0_INT register, but SDCA interrupts shall not be handled as part
of the DP0 interrupt processing.
The existing code has clear comments that we don't want to touch the
SDCA_CASCADE bit, but it's actually cleared due to faulty logic dating
from SoundWire 1.0
In theory clearing this bit should have no effect: a cascade bit
remains set while all ORed status are set, but better safe than sorry.
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Chao Song <chao.song@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20240326060021.973501-1-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'drivers/soundwire')
-rw-r--r-- | drivers/soundwire/bus.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index f3fec15c3112..05b2db00d9cd 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -1474,7 +1474,7 @@ static int sdw_handle_dp0_interrupt(struct sdw_slave *slave, u8 *slave_status) } do { - clear = status & ~SDW_DP0_INTERRUPTS; + clear = status & ~(SDW_DP0_INTERRUPTS | SDW_DP0_SDCA_CASCADE); if (status & SDW_DP0_INT_TEST_FAIL) { dev_err(&slave->dev, "Test fail for port 0\n"); |