Merge branch 'fix/hda' into for-linus

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