Merge branch 'fix/hda' into for-linus
This commit is contained in:
commit
cc2cef505c
2 changed files with 18 additions and 8 deletions
|
@ -110,6 +110,7 @@ struct conexant_spec {
|
|||
|
||||
unsigned int dell_automute;
|
||||
unsigned int port_d_mode;
|
||||
unsigned char ext_mic_bias;
|
||||
};
|
||||
|
||||
static int conexant_playback_pcm_open(struct hda_pcm_stream *hinfo,
|
||||
|
@ -1927,6 +1928,11 @@ static hda_nid_t cxt5066_adc_nids[3] = { 0x14, 0x15, 0x16 };
|
|||
static hda_nid_t cxt5066_capsrc_nids[1] = { 0x17 };
|
||||
#define CXT5066_SPDIF_OUT 0x21
|
||||
|
||||
/* OLPC's microphone port is DC coupled for use with external sensors,
|
||||
* therefore we use a 50% mic bias in order to center the input signal with
|
||||
* the DC input range of the codec. */
|
||||
#define CXT5066_OLPC_EXT_MIC_BIAS PIN_VREF50
|
||||
|
||||
static struct hda_channel_mode cxt5066_modes[1] = {
|
||||
{ 2, NULL },
|
||||
};
|
||||
|
@ -1980,9 +1986,10 @@ static int cxt5066_hp_master_sw_put(struct snd_kcontrol *kcontrol,
|
|||
/* toggle input of built-in and mic jack appropriately */
|
||||
static void cxt5066_automic(struct hda_codec *codec)
|
||||
{
|
||||
static struct hda_verb ext_mic_present[] = {
|
||||
struct conexant_spec *spec = codec->spec;
|
||||
struct hda_verb ext_mic_present[] = {
|
||||
/* enable external mic, port B */
|
||||
{0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
|
||||
{0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, spec->ext_mic_bias},
|
||||
|
||||
/* switch to external mic input */
|
||||
{0x17, AC_VERB_SET_CONNECT_SEL, 0},
|
||||
|
@ -2235,7 +2242,7 @@ static struct hda_verb cxt5066_init_verbs_olpc[] = {
|
|||
{0x19, AC_VERB_SET_CONNECT_SEL, 0x00}, /* DAC1 */
|
||||
|
||||
/* Port B: external microphone */
|
||||
{0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
|
||||
{0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, CXT5066_OLPC_EXT_MIC_BIAS},
|
||||
|
||||
/* Port C: internal microphone */
|
||||
{0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80},
|
||||
|
@ -2353,6 +2360,7 @@ static int patch_cxt5066(struct hda_codec *codec)
|
|||
spec->input_mux = &cxt5066_capture_source;
|
||||
|
||||
spec->port_d_mode = PIN_HP;
|
||||
spec->ext_mic_bias = PIN_VREF80;
|
||||
|
||||
spec->num_init_verbs = 1;
|
||||
spec->init_verbs[0] = cxt5066_init_verbs;
|
||||
|
@ -2384,6 +2392,7 @@ static int patch_cxt5066(struct hda_codec *codec)
|
|||
spec->mixers[spec->num_mixers++] = cxt5066_mixer_master_olpc;
|
||||
spec->mixers[spec->num_mixers++] = cxt5066_mixers;
|
||||
spec->port_d_mode = 0;
|
||||
spec->ext_mic_bias = CXT5066_OLPC_EXT_MIC_BIAS;
|
||||
|
||||
/* no S/PDIF out */
|
||||
spec->multiout.dig_out_nid = 0;
|
||||
|
|
|
@ -4684,9 +4684,9 @@ static int alc880_parse_auto_config(struct hda_codec *codec)
|
|||
spec->multiout.dig_out_nid = dig_nid;
|
||||
else {
|
||||
spec->multiout.slave_dig_outs = spec->slave_dig_outs;
|
||||
spec->slave_dig_outs[i - 1] = dig_nid;
|
||||
if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1)
|
||||
if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
|
||||
break;
|
||||
spec->slave_dig_outs[i - 1] = dig_nid;
|
||||
}
|
||||
}
|
||||
if (spec->autocfg.dig_in_pin)
|
||||
|
@ -6249,7 +6249,7 @@ static struct snd_pci_quirk alc260_cfg_tbl[] = {
|
|||
SND_PCI_QUIRK(0x1025, 0x008f, "Acer", ALC260_ACER),
|
||||
SND_PCI_QUIRK(0x1509, 0x4540, "Favorit 100XS", ALC260_FAVORIT100),
|
||||
SND_PCI_QUIRK(0x103c, 0x2808, "HP d5700", ALC260_HP_3013),
|
||||
SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_HP_3013),
|
||||
SND_PCI_QUIRK(0x103c, 0x280a, "HP d5750", ALC260_AUTO), /* no quirk */
|
||||
SND_PCI_QUIRK(0x103c, 0x3010, "HP", ALC260_HP_3013),
|
||||
SND_PCI_QUIRK(0x103c, 0x3011, "HP", ALC260_HP_3013),
|
||||
SND_PCI_QUIRK(0x103c, 0x3012, "HP", ALC260_HP_DC7600),
|
||||
|
@ -9813,9 +9813,9 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
|
|||
spec->multiout.dig_out_nid = dig_nid;
|
||||
else {
|
||||
spec->multiout.slave_dig_outs = spec->slave_dig_outs;
|
||||
spec->slave_dig_outs[i - 1] = dig_nid;
|
||||
if (i == ARRAY_SIZE(spec->slave_dig_outs) - 1)
|
||||
if (i >= ARRAY_SIZE(spec->slave_dig_outs) - 1)
|
||||
break;
|
||||
spec->slave_dig_outs[i - 1] = dig_nid;
|
||||
}
|
||||
}
|
||||
if (spec->autocfg.dig_in_pin)
|
||||
|
@ -11460,6 +11460,7 @@ static struct snd_pci_quirk alc262_cfg_tbl[] = {
|
|||
SND_PCI_QUIRK(0x104d, 0x820f, "Sony ASSAMD", ALC262_SONY_ASSAMD),
|
||||
SND_PCI_QUIRK(0x104d, 0x9016, "Sony VAIO", ALC262_AUTO), /* dig-only */
|
||||
SND_PCI_QUIRK(0x104d, 0x9025, "Sony VAIO Z21MN", ALC262_TOSHIBA_S06),
|
||||
SND_PCI_QUIRK(0x104d, 0x9035, "Sony VAIO VGN-FW170J", ALC262_AUTO),
|
||||
SND_PCI_QUIRK_MASK(0x104d, 0xff00, 0x9000, "Sony VAIO",
|
||||
ALC262_SONY_ASSAMD),
|
||||
SND_PCI_QUIRK(0x1179, 0x0001, "Toshiba dynabook SS RX1",
|
||||
|
|
Loading…
Reference in a new issue