ALSA: usb-audio: Add dB range mapping for Sennheiser Communications Headset PC 8
authorTimo Gurr <timo.gurr@gmail.com>
Mon, 3 May 2021 11:08:22 +0000 (13:08 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 3 May 2021 11:35:58 +0000 (13:35 +0200)
The decibel volume range contains a negative maximum value resulting in
pipewire complaining about the device and effectivly having no sound
output. The wrong values also resulted in the headset sounding muted
already at a mixer level of about ~25%.

BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1049
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=212897
Signed-off-by: Timo Gurr <timo.gurr@gmail.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210503110822.10222-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer_maps.c

index 646deb6244b15e7b68502c81d166f20c75110d47..c5794e83fd800d93b18c4c3d29e5787a5d29fc10 100644 (file)
@@ -337,6 +337,13 @@ static const struct usbmix_name_map bose_companion5_map[] = {
        { 0 }   /* terminator */
 };
 
+/* Sennheiser Communications Headset [PC 8], the dB value is reported as -6 negative maximum  */
+static const struct usbmix_dB_map sennheiser_pc8_dB = {-9500, 0};
+static const struct usbmix_name_map sennheiser_pc8_map[] = {
+       { 9, NULL, .dB = &sennheiser_pc8_dB },
+       { 0 }   /* terminator */
+};
+
 /*
  * Dell usb dock with ALC4020 codec had a firmware problem where it got
  * screwed up when zero volume is passed; just skip it as a workaround
@@ -593,6 +600,11 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
                .id = USB_ID(0x17aa, 0x1046),
                .map = lenovo_p620_rear_map,
        },
+       {
+               /* Sennheiser Communications Headset [PC 8] */
+               .id = USB_ID(0x1395, 0x0025),
+               .map = sennheiser_pc8_map,
+       },
        { 0 } /* terminator */
 };