* [PATCH] ALSA: 6fire: Fix input volume change detection
@ 2026-04-16 13:24 Cássio Gabriel
2026-04-17 7:51 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: Cássio Gabriel @ 2026-04-16 13:24 UTC (permalink / raw)
To: Takashi Iwai, Jaroslav Kysela, Torsten Schenk
Cc: linux-sound, linux-kernel, stable, Cássio Gabriel
usb6fire_control_input_vol_put() stores the analog capture volume
as a signed offset in rt->input_vol[] (-15..+15), but it compares
the cached value against the user-visible mixer value (0..30)
before subtracting 15.
This mixes two domains in the change detection path. Since the
runtime is zero-initialized, the visible default is 15; writing 0
right after probe is ignored, while writing 15 is reported as a
change even though the cached value remains 0.
Normalize the user value before comparing it with the cached offset.
Fixes: 06bb4e743501 ("ALSA: snd-usb-6fire: add analog input volume control")
Cc: stable@vger.kernel.org
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
---
sound/usb/6fire/control.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/sound/usb/6fire/control.c b/sound/usb/6fire/control.c
index dd25a6407b63..c77a21a9acd7 100644
--- a/sound/usb/6fire/control.c
+++ b/sound/usb/6fire/control.c
@@ -290,15 +290,17 @@ static int usb6fire_control_input_vol_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
struct control_runtime *rt = snd_kcontrol_chip(kcontrol);
+ int vol0 = ucontrol->value.integer.value[0] - 15;
+ int vol1 = ucontrol->value.integer.value[1] - 15;
int changed = 0;
- if (rt->input_vol[0] != ucontrol->value.integer.value[0]) {
- rt->input_vol[0] = ucontrol->value.integer.value[0] - 15;
+ if (rt->input_vol[0] != vol0) {
+ rt->input_vol[0] = vol0;
rt->ivol_updated &= ~(1 << 0);
changed = 1;
}
- if (rt->input_vol[1] != ucontrol->value.integer.value[1]) {
- rt->input_vol[1] = ucontrol->value.integer.value[1] - 15;
+ if (rt->input_vol[1] != vol1) {
+ rt->input_vol[1] = vol1;
rt->ivol_updated &= ~(1 << 1);
changed = 1;
}
---
base-commit: 10cdf5ba267d89b7fc5d9f693c65a6e4af3f8e13
change-id: 20260416-alsa-6fire-input-volume-change-detection-de50b8fe278f
Best regards,
--
Cássio Gabriel <cassiogabrielcontato@gmail.com>
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] ALSA: 6fire: Fix input volume change detection
2026-04-16 13:24 [PATCH] ALSA: 6fire: Fix input volume change detection Cássio Gabriel
@ 2026-04-17 7:51 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-04-17 7:51 UTC (permalink / raw)
To: Cássio Gabriel
Cc: Takashi Iwai, Jaroslav Kysela, Torsten Schenk, linux-sound,
linux-kernel, stable
On Thu, 16 Apr 2026 15:24:40 +0200,
Cássio Gabriel wrote:
>
> usb6fire_control_input_vol_put() stores the analog capture volume
> as a signed offset in rt->input_vol[] (-15..+15), but it compares
> the cached value against the user-visible mixer value (0..30)
> before subtracting 15.
>
> This mixes two domains in the change detection path. Since the
> runtime is zero-initialized, the visible default is 15; writing 0
> right after probe is ignored, while writing 15 is reported as a
> change even though the cached value remains 0.
>
> Normalize the user value before comparing it with the cached offset.
>
> Fixes: 06bb4e743501 ("ALSA: snd-usb-6fire: add analog input volume control")
> Cc: stable@vger.kernel.org
> Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
Thanks, applied now.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-17 7:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-16 13:24 [PATCH] ALSA: 6fire: Fix input volume change detection Cássio Gabriel
2026-04-17 7:51 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox