Merge branch 'fix/hda' into for-linus

+25 -10
+12 -3
sound/pci/hda/patch_conexant.c
··· 110 110 111 111 unsigned int dell_automute; 112 112 unsigned int port_d_mode; 113 + unsigned char ext_mic_bias; 113 114 }; 114 115 115 116 static int conexant_playback_pcm_open(struct hda_pcm_stream *hinfo, ··· 1928 1927 static hda_nid_t cxt5066_capsrc_nids[1] = { 0x17 }; 1929 1928 #define CXT5066_SPDIF_OUT 0x21 1930 1929 1930 + /* OLPC's microphone port is DC coupled for use with external sensors, 1931 + * therefore we use a 50% mic bias in order to center the input signal with 1932 + * the DC input range of the codec. */ 1933 + #define CXT5066_OLPC_EXT_MIC_BIAS PIN_VREF50 1934 + 1931 1935 static struct hda_channel_mode cxt5066_modes[1] = { 1932 1936 { 2, NULL }, 1933 1937 }; ··· 1986 1980 /* toggle input of built-in and mic jack appropriately */ 1987 1981 static void cxt5066_automic(struct hda_codec *codec) 1988 1982 { 1989 - static struct hda_verb ext_mic_present[] = { 1983 + struct conexant_spec *spec = codec->spec; 1984 + struct hda_verb ext_mic_present[] = { 1990 1985 /* enable external mic, port B */ 1991 - {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 1986 + {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, spec->ext_mic_bias}, 1992 1987 1993 1988 /* switch to external mic input */ 1994 1989 {0x17, AC_VERB_SET_CONNECT_SEL, 0}, ··· 2242 2235 {0x19, AC_VERB_SET_CONNECT_SEL, 0x00}, /* DAC1 */ 2243 2236 2244 2237 /* Port B: external microphone */ 2245 - {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, 2238 + {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, CXT5066_OLPC_EXT_MIC_BIAS}, 2246 2239 2247 2240 /* Port C: internal microphone */ 2248 2241 {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, ··· 2360 2353 spec->input_mux = &cxt5066_capture_source; 2361 2354 2362 2355 spec->port_d_mode = PIN_HP; 2356 + spec->ext_mic_bias = PIN_VREF80; 2363 2357 2364 2358 spec->num_init_verbs = 1; 2365 2359 spec->init_verbs[0] = cxt5066_init_verbs; ··· 2392 2384 spec->mixers[spec->num_mixers++] = cxt5066_mixer_master_olpc; 2393 2385 spec->mixers[spec->num_mixers++] = cxt5066_mixers; 2394 2386 spec->port_d_mode = 0; 2387 + spec->ext_mic_bias = CXT5066_OLPC_EXT_MIC_BIAS; 2395 2388 2396 2389 /* no S/PDIF out */ 2397 2390 spec->multiout.dig_out_nid = 0;
+2
sound/pci/hda/patch_nvhdmi.c
··· 397 397 static struct hda_codec_preset snd_hda_preset_nvhdmi[] = { 398 398 { .id = 0x10de0002, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 399 399 { .id = 0x10de0003, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 400 + { .id = 0x10de0005, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 400 401 { .id = 0x10de0006, .name = "MCP78 HDMI", .patch = patch_nvhdmi_8ch }, 401 402 { .id = 0x10de0007, .name = "MCP7A HDMI", .patch = patch_nvhdmi_8ch }, 402 403 { .id = 0x10de0067, .name = "MCP67 HDMI", .patch = patch_nvhdmi_2ch }, ··· 407 406 408 407 MODULE_ALIAS("snd-hda-codec-id:10de0002"); 409 408 MODULE_ALIAS("snd-hda-codec-id:10de0003"); 409 + MODULE_ALIAS("snd-hda-codec-id:10de0005"); 410 410 MODULE_ALIAS("snd-hda-codec-id:10de0006"); 411 411 MODULE_ALIAS("snd-hda-codec-id:10de0007"); 412 412 MODULE_ALIAS("snd-hda-codec-id:10de0067");
+9 -7
sound/pci/hda/patch_realtek.c
··· 4684 4684 spec->multiout.dig_out_nid = dig_nid; 4685 4685 else { 4686 4686 spec->multiout.slave_dig_outs = spec->slave_dig_outs; 4687 - spec->slave_dig_outs[i - 1] = dig_nid; 4688 - if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1) 4687 + if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1) 4689 4688 break; 4689 + spec->slave_dig_outs[i - 1] = dig_nid; 4690 4690 } 4691 4691 } 4692 4692 if (spec->autocfg.dig_in_pin) ··· 6249 6249 SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER), 6250 6250 SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100), 6251 6251 SND_PCI_QUIRK(0x103c, 0x2808, "HP d5700", ALC260_HP_3013), 6252 - SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_HP_3013), 6252 + SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_AUTO), /* no quirk */ 6253 6253 SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013), 6254 6254 SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP_3013), 6255 6255 SND_PCI_QUIRK(0x103c, 0x3012, "HP", ALC260_HP_DC7600), ··· 8911 8911 SND_PCI_QUIRK(0x106b, 0x3800, "MacbookPro 4,1", ALC885_MBP3), 8912 8912 SND_PCI_QUIRK(0x106b, 0x3e00, "iMac 24 Aluminum", ALC885_IMAC24), 8913 8913 SND_PCI_QUIRK(0x106b, 0x3f00, "Macbook 5,1", ALC885_MB5), 8914 - /* FIXME: HP jack sense seems not working for MBP 5,1, so apparently 8915 - * no perfect solution yet 8914 + /* FIXME: HP jack sense seems not working for MBP 5,1 or 5,2, 8915 + * so apparently no perfect solution yet 8916 8916 */ 8917 8917 SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC885_MB5), 8918 + SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC885_MB5), 8918 8919 {} /* terminator */ 8919 8920 }; 8920 8921 ··· 9814 9813 spec->multiout.dig_out_nid = dig_nid; 9815 9814 else { 9816 9815 spec->multiout.slave_dig_outs = spec->slave_dig_outs; 9817 - spec->slave_dig_outs[i - 1] = dig_nid; 9818 - if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1) 9816 + if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1) 9819 9817 break; 9818 + spec->slave_dig_outs[i - 1] = dig_nid; 9820 9819 } 9821 9820 } 9822 9821 if (spec->autocfg.dig_in_pin) ··· 11461 11460 SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD), 11462 11461 SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */ 11463 11462 SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06), 11463 + SND_PCI_QUIRK(0x104d, 0x9035, "Sony VAIO VGN-FW170J", ALC262_AUTO), 11464 11464 SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO", 11465 11465 ALC262_SONY_ASSAMD), 11466 11466 SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
+2
sound/pci/hda/patch_sigmatel.c
··· 1590 1590 "Dell Studio 17", STAC_DELL_M6_DMIC), 1591 1591 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02be, 1592 1592 "Dell Studio 1555", STAC_DELL_M6_DMIC), 1593 + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02bd, 1594 + "Dell Studio 1557", STAC_DELL_M6_DMIC), 1593 1595 {} /* terminator */ 1594 1596 }; 1595 1597