diff options
| author | HyeongJun An <sammiee5311@gmail.com> | 2026-09-08 22:41:53 +0900 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2026-09-08 16:23:16 +0200 |
| commit | 7284788743121ec8bed556b00f830dc52ad9955d (patch) | |
| tree | b036d089f1bd83cb9f7a6298c1423cba5b0d72b4 /scripts/Makefile.thinlto | |
| parent | 71c610aeb1770302ac9c9e0b9a4ecd37f1311928 (diff) | |
| download | linux-7284788743121ec8bed556b00f830dc52ad9955d.tar.gz linux-7284788743121ec8bed556b00f830dc52ad9955d.zip | |
ALSA: hda: Report a change when only the channel status bytes move
The put() callback of "IEC958 Playback Default" returns whether the
converted register value moved. The convert_from_spdif_status() helper
reads part of the first two channel status bytes and none of the last
two, while the get() callback returns all four. So a write that lands
only in the bits it does not read changes what userspace reads back and
reports no change. Of the 31 bits above the mode bit, 20 are such bits
in consumer mode and 29 in professional mode. The core notifies only on
a positive return.
Toggling status[2] bit 0 on an HDA HDMI codec moves the read-back from
04 00 00 00 to 04 00 01 00 with no event. Toggling the non-audio bit
in status[0] gives one.
Compare the stored status as well, the way the ac97 code does. The
write to the codec stays gated on the converted value.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: HyeongJun An <sammiee5311@gmail.com>
Assisted-by: Claude:claude-opus-5
Link: https://patch.msgid.link/20260908134153.1614273-1-sammiee5311@gmail.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
