diff options
| author | Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> | 2026-09-02 12:28:38 +0100 |
|---|---|---|
| committer | Vinod Koul <vkoul@kernel.org> | 2026-09-08 19:22:51 +0530 |
| commit | eb9ea1a0fa28abe7a511cb67363a0cc835a02f04 (patch) | |
| tree | 00195a651278c3968ee31bce86383ea787a8d205 /tools/perf/scripts/python | |
| parent | 659d6f148a88467817e9531a6c793ae022661bab (diff) | |
| download | linux-next-eb9ea1a0fa28abe7a511cb67363a0cc835a02f04.tar.gz linux-next-eb9ea1a0fa28abe7a511cb67363a0cc835a02f04.zip | |
soundwire: qcom: cache SCP_ADDRPAGE1/2 to preserve MBQ atomicity
qcom_swrm_xfer_msg() reprograms SCP_ADDRPAGE1/2 before every paged
transfer, even when the paging window hasn't changed. Besides the
wasted bus transactions, this breaks the atomicity that SoundWire
Classic Multi-Byte Quantity (MBQ) writes rely on: the kernel's MBQ
regmap emits an MBQ pair as two sdw_write_no_pm() calls to bit-13
aliases sharing the same page, and the intervening PAGE writes
invalidate the MBQ high-byte staging on Peripherals that observe
them. On WCD9378 FU42 Q7.8 Channel Volume this drops the MSB byte
silently.
Per SDCA v1.1 sections 12.2.5 and 12.2.8.2.1, MBQ pairs are expected
to be atomic on the wire. Cache the last-programmed page values per
Slave, skip the FIFO write when they match, and invalidate on
re-attach since SCP_ADDRPAGE1/2 reset to defaults on re-enumeration.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Cc: Faiz Nabi Kuchay <fkuchay@oss.qualcomm.com>
Link: https://patch.msgid.link/20260902112838.1369446-1-srinivas.kandagatla@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python')
0 files changed, 0 insertions, 0 deletions
