Re: [PATCH] ALSA: hda: Report a change when only the channel status bytes move
From: Takashi Iwai
Date: Tue Sep 08 2026 - 10:37:54 EST
On Tue, 08 Sep 2026 15:41:53 +0200,
HyeongJun An wrote:
>
> 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@xxxxxxxxx>
> Assisted-by: Claude:claude-opus-5
Applied now. Thanks.
Takashi