From 04282fcc795edab73cffb4a1c63459657815bd9d Mon Sep 17 00:00:00 2001 From: Ajay Agarwal Date: Thu, 22 Jun 2017 11:09:33 +0530 Subject: [PATCH] sound: usb: Add quirk to issue SET_CUR volume on 2nd channel Some audio devices with two channels require the host to issue SET_CUR command on the Volume control on both the channels in order to function (playback or record). Currently, the Linux Host driver issues SET_CUR only for the 1st channel. Hence, add the quirk for concerned devices for SET_CUR on 2nd channel. Change-Id: I6f0bbcdfd3a8b3ccb33a1d56c252c701849a442f Signed-off-by: Ajay Agarwal --- sound/usb/mixer.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c index 70dfdd22102e..d5cc315a5eb4 100644 --- a/sound/usb/mixer.c +++ b/sound/usb/mixer.c @@ -1012,6 +1012,17 @@ static void volume_control_quirks(struct usb_mixer_elem_info *cval, cval->res = 384; } break; + + case USB_ID(0x1130, 0x1620): /* Logitech Speakers S150 */ + /* This audio device has 2 channels and it explicitly requires the + * host to send SET_CUR command on the volume control of both the + * channels. 7936 = 0x1F00 is the default value. + */ + if (cval->channels == 2) + snd_usb_mixer_set_ctl_value(cval, UAC_SET_CUR, + (cval->control << 8) | 2, 7936); + break; + } }