Merge tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
"Only driver/device-specific small fixes that are pretty safe to apply:

- USB-audio Android and Logitech webcam fixes
- HD-audio MacBook Air 4,2 quirk
- Complete Dell headset quirk entries that were introduced in 3.10"

* tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
ALSA: hda - Add models for Dell headset jacks
ALSA: usb-audio: Fix invalid volume resolution for Logitech HD Webcam c310
ALSA: hda - Fix pin configurations for MacBook Air 4,2
ALSA: usb-audio: work around Android accessory firmware bug
ALSA: hda - Headset mic support for three more machines

Changed files
+53 -2
Documentation
sound
sound
+3
Documentation/sound/alsa/HD-Audio-Models.txt
··· 29 29 alc271-dmic Enable ALC271X digital mic workaround 30 30 inv-dmic Inverted internal mic workaround 31 31 lenovo-dock Enables docking station I/O for some Lenovos 32 + dell-headset-multi Headset jack, which can also be used as mic-in 33 + dell-headset-dock Headset jack (without mic-in), and also dock I/O 32 34 33 35 ALC662/663/272 34 36 ============== ··· 44 42 asus-mode7 ASUS 45 43 asus-mode8 ASUS 46 44 inv-dmic Inverted internal mic workaround 45 + dell-headset-multi Headset jack, which can also be used as mic-in 47 46 48 47 ALC680 49 48 ======
+23
sound/pci/hda/patch_cirrus.c
··· 58 58 CS420X_GPIO_23, 59 59 CS420X_MBP101, 60 60 CS420X_MBP81, 61 + CS420X_MBA42, 61 62 CS420X_AUTO, 62 63 /* aliases */ 63 64 CS420X_IMAC27_122 = CS420X_GPIO_23, ··· 347 346 { .id = CS420X_APPLE, .name = "apple" }, 348 347 { .id = CS420X_MBP101, .name = "mbp101" }, 349 348 { .id = CS420X_MBP81, .name = "mbp81" }, 349 + { .id = CS420X_MBA42, .name = "mba42" }, 350 350 {} 351 351 }; 352 352 ··· 363 361 SND_PCI_QUIRK(0x106b, 0x1c00, "MacBookPro 8,1", CS420X_MBP81), 364 362 SND_PCI_QUIRK(0x106b, 0x2000, "iMac 12,2", CS420X_IMAC27_122), 365 363 SND_PCI_QUIRK(0x106b, 0x2800, "MacBookPro 10,1", CS420X_MBP101), 364 + SND_PCI_QUIRK(0x106b, 0x5b00, "MacBookAir 4,2", CS420X_MBA42), 366 365 SND_PCI_QUIRK_VENDOR(0x106b, "Apple", CS420X_APPLE), 367 366 {} /* terminator */ 368 367 }; ··· 414 411 { 0x0d, 0x40ab90f0 }, 415 412 { 0x0e, 0x90a600f0 }, 416 413 { 0x12, 0x50a600f0 }, 414 + {} /* terminator */ 415 + }; 416 + 417 + static const struct hda_pintbl mba42_pincfgs[] = { 418 + { 0x09, 0x012b4030 }, /* HP */ 419 + { 0x0a, 0x400000f0 }, 420 + { 0x0b, 0x90100120 }, /* speaker */ 421 + { 0x0c, 0x400000f0 }, 422 + { 0x0d, 0x90a00110 }, /* mic */ 423 + { 0x0e, 0x400000f0 }, 424 + { 0x0f, 0x400000f0 }, 425 + { 0x10, 0x400000f0 }, 426 + { 0x12, 0x400000f0 }, 427 + { 0x15, 0x400000f0 }, 417 428 {} /* terminator */ 418 429 }; 419 430 ··· 496 479 {0x11, AC_VERB_SET_PROC_COEF, 0x102a}, 497 480 {} 498 481 }, 482 + .chained = true, 483 + .chain_id = CS420X_GPIO_13, 484 + }, 485 + [CS420X_MBA42] = { 486 + .type = HDA_FIXUP_PINS, 487 + .v.pins = mba42_pincfgs, 499 488 .chained = true, 500 489 .chain_id = CS420X_GPIO_13, 501 490 },
+6
sound/pci/hda/patch_realtek.c
··· 3483 3483 SND_PCI_QUIRK(0x1028, 0x05ca, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3484 3484 SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3485 3485 SND_PCI_QUIRK(0x1028, 0x05de, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3486 + SND_PCI_QUIRK(0x1028, 0x05e0, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), 3486 3487 SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3487 3488 SND_PCI_QUIRK(0x1028, 0x05ea, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3488 3489 SND_PCI_QUIRK(0x1028, 0x05eb, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), ··· 3495 3494 SND_PCI_QUIRK(0x1028, 0x05f5, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3496 3495 SND_PCI_QUIRK(0x1028, 0x05f6, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3497 3496 SND_PCI_QUIRK(0x1028, 0x05f8, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3497 + SND_PCI_QUIRK(0x1028, 0x0606, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3498 + SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3498 3499 SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), 3499 3500 SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2), 3500 3501 SND_PCI_QUIRK(0x103c, 0x18e6, "HP", ALC269_FIXUP_HP_GPIO_LED), ··· 3599 3596 {.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"}, 3600 3597 {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"}, 3601 3598 {.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"}, 3599 + {.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"}, 3600 + {.id = ALC269_FIXUP_DELL2_MIC_NO_PRESENCE, .name = "dell-headset-dock"}, 3602 3601 {} 3603 3602 }; 3604 3603 ··· 4280 4275 {.id = ALC662_FIXUP_ASUS_MODE7, .name = "asus-mode7"}, 4281 4276 {.id = ALC662_FIXUP_ASUS_MODE8, .name = "asus-mode8"}, 4282 4277 {.id = ALC662_FIXUP_INV_DMIC, .name = "inv-dmic"}, 4278 + {.id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE, .name = "dell-headset-multi"}, 4283 4279 {} 4284 4280 }; 4285 4281
+20 -2
sound/usb/card.c
··· 147 147 return -EINVAL; 148 148 } 149 149 150 + alts = &iface->altsetting[0]; 151 + altsd = get_iface_desc(alts); 152 + 153 + /* 154 + * Android with both accessory and audio interfaces enabled gets the 155 + * interface numbers wrong. 156 + */ 157 + if ((chip->usb_id == USB_ID(0x18d1, 0x2d04) || 158 + chip->usb_id == USB_ID(0x18d1, 0x2d05)) && 159 + interface == 0 && 160 + altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC && 161 + altsd->bInterfaceSubClass == USB_SUBCLASS_VENDOR_SPEC) { 162 + interface = 2; 163 + iface = usb_ifnum_to_if(dev, interface); 164 + if (!iface) 165 + return -EINVAL; 166 + alts = &iface->altsetting[0]; 167 + altsd = get_iface_desc(alts); 168 + } 169 + 150 170 if (usb_interface_claimed(iface)) { 151 171 snd_printdd(KERN_INFO "%d:%d:%d: skipping, already claimed\n", 152 172 dev->devnum, ctrlif, interface); 153 173 return -EINVAL; 154 174 } 155 175 156 - alts = &iface->altsetting[0]; 157 - altsd = get_iface_desc(alts); 158 176 if ((altsd->bInterfaceClass == USB_CLASS_AUDIO || 159 177 altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC) && 160 178 altsd->bInterfaceSubClass == USB_SUBCLASS_MIDISTREAMING) {
+1
sound/usb/mixer.c
··· 885 885 886 886 case USB_ID(0x046d, 0x0808): 887 887 case USB_ID(0x046d, 0x0809): 888 + case USB_ID(0x046d, 0x081b): /* HD Webcam c310 */ 888 889 case USB_ID(0x046d, 0x081d): /* HD Webcam c510 */ 889 890 case USB_ID(0x046d, 0x0825): /* HD Webcam c270 */ 890 891 case USB_ID(0x046d, 0x0991):