linux/drivers/soundwire
Pierre-Louis Bossart 3a9044ea78 soundwire: cadence: fix ACK/NAK handling
[ Upstream commit db9d9f944f95e7f3aa60ac00cbd502415152c421 ]

The existing code reports a NAK only when ACK=0
This is not aligned with the SoundWire 1.x specifications.

Table 32 in the SoundWire 1.2 specification shows that a Device shall
not set NAK=1 if ACK=1. But Table 33 shows the Combined Response
may very well be NAK=1/ACK=1, e.g. if another Device than the one
addressed reports a parity error.

NAK=1 signals a 'Command_Aborted', regardless of the ACK bit value.

Move the tests for NAK so that the NAK=1/ACK=1 combination is properly
detected according to the specification.

Fixes: 956baa1992 ('soundwire: cdns: Add sdw_master_ops and IO transfer support')
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20210115053738.22630-5-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-03-04 10:26:36 +01:00
..
Kconfig soundwire: depend on ACPI || OF 2019-10-15 16:15:58 +05:30
Makefile soundwire updates for v5.4-rc1 2019-09-22 10:52:23 -07:00
bus.c soundwire: bus: disable pm_runtime in sdw_slave_delete 2020-10-01 13:17:36 +02:00
bus.h soundwire: core: add device tree support for slave devices 2019-09-04 13:12:31 +05:30
bus_type.c soundwire: add debugfs support 2019-08-23 12:01:02 +05:30
cadence_master.c soundwire: cadence: fix ACK/NAK handling 2021-03-04 10:26:36 +01:00
cadence_master.h soundwire: intel/cadence: fix startup sequence 2020-10-01 13:17:13 +02:00
debugfs.c soundwire: add debugfs support 2019-08-23 12:01:02 +05:30
intel.c soundwire: intel/cadence: fix startup sequence 2020-10-01 13:17:13 +02:00
intel.h soundwire: fix typo in comments 2019-05-27 10:53:00 +05:30
intel_init.c soundwire: intel_init: add kernel module parameter to filter out links 2019-08-21 14:36:18 +05:30
mipi_disco.c soundwire: mipi_disco: Switch to use fwnode_property_count_uXX() 2019-08-02 17:15:13 +05:30
slave.c soundwire: slave: don't init debugfs on device registration error 2020-06-24 17:50:23 +02:00
stream.c soundwire: fix double free of dangling pointer 2020-09-17 13:47:43 +02:00