Merge branch 'topic/tlv-minmax' into for-linus
[pandora-kernel.git] / sound / usb / usbmixer.c
index 539b427..df89691 100644 (file)
@@ -423,7 +423,7 @@ static int set_ctl_value(struct usb_mixer_elem_info *cval, int request, int vali
        value_set = convert_bytes_value(cval, value_set);
        buf[0] = value_set & 0xff;
        buf[1] = (value_set >> 8) & 0xff;
-       while (timeout -- > 0)
+       while (timeout-- > 0)
                if (snd_usb_ctl_msg(cval->mixer->chip->dev,
                                    usb_sndctrlpipe(cval->mixer->chip->dev, 0),
                                    request,
@@ -999,20 +999,35 @@ static void build_feature_ctl(struct mixer_build *state, unsigned char *desc,
                break;
        }
 
-       /* quirk for UDA1321/N101 */
-       /* note that detection between firmware 2.1.1.7 (N101) and later 2.1.1.21 */
-       /* is not very clear from datasheets */
-       /* I hope that the min value is -15360 for newer firmware --jk */
+       /* volume control quirks */
        switch (state->chip->usb_id) {
        case USB_ID(0x0471, 0x0101):
        case USB_ID(0x0471, 0x0104):
        case USB_ID(0x0471, 0x0105):
        case USB_ID(0x0672, 0x1041):
+       /* quirk for UDA1321/N101.
+        * note that detection between firmware 2.1.1.7 (N101)
+        * and later 2.1.1.21 is not very clear from datasheets.
+        * I hope that the min value is -15360 for newer firmware --jk
+        */
                if (!strcmp(kctl->id.name, "PCM Playback Volume") &&
                    cval->min == -15616) {
-                       snd_printk(KERN_INFO "using volume control quirk for the UDA1321/N101 chip\n");
+                       snd_printk(KERN_INFO
+                                "set volume quirk for UDA1321/N101 chip\n");
                        cval->max = -256;
                }
+               break;
+
+       case USB_ID(0x046d, 0x09a4):
+               if (!strcmp(kctl->id.name, "Mic Capture Volume")) {
+                       snd_printk(KERN_INFO
+                               "set volume quirk for QuickCam E3500\n");
+                       cval->min = 6080;
+                       cval->max = 8768;
+                       cval->res = 192;
+               }
+               break;
+
        }
 
        snd_printdd(KERN_INFO "[%d] FU [%s] ch = %d, val = %d/%d/%d\n",