diff options
Diffstat (limited to 'sound/pci')
| -rw-r--r-- | sound/pci/ali5451/ali5451.c | 18 | ||||
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 6 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 69 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 6 | ||||
| -rw-r--r-- | sound/pci/hda/patch_via.c | 1 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_lib.c | 3 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen_pcm.c | 2 | ||||
| -rw-r--r-- | sound/pci/vx222/vx222_ops.c | 4 |
8 files changed, 77 insertions, 32 deletions
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index c551006e2920..76d76c08339b 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c | |||
| @@ -310,12 +310,16 @@ static int snd_ali_codec_ready(struct snd_ali *codec, | |||
| 310 | unsigned int res; | 310 | unsigned int res; |
| 311 | 311 | ||
| 312 | end_time = jiffies + msecs_to_jiffies(250); | 312 | end_time = jiffies + msecs_to_jiffies(250); |
| 313 | do { | 313 | |
| 314 | for (;;) { | ||
| 314 | res = snd_ali_5451_peek(codec,port); | 315 | res = snd_ali_5451_peek(codec,port); |
| 315 | if (!(res & 0x8000)) | 316 | if (!(res & 0x8000)) |
| 316 | return 0; | 317 | return 0; |
| 318 | if (!time_after_eq(end_time, jiffies)) | ||
| 319 | break; | ||
| 317 | schedule_timeout_uninterruptible(1); | 320 | schedule_timeout_uninterruptible(1); |
| 318 | } while (time_after_eq(end_time, jiffies)); | 321 | } |
| 322 | |||
| 319 | snd_ali_5451_poke(codec, port, res & ~0x8000); | 323 | snd_ali_5451_poke(codec, port, res & ~0x8000); |
| 320 | snd_printdd("ali_codec_ready: codec is not ready.\n "); | 324 | snd_printdd("ali_codec_ready: codec is not ready.\n "); |
| 321 | return -EIO; | 325 | return -EIO; |
| @@ -327,15 +331,17 @@ static int snd_ali_stimer_ready(struct snd_ali *codec) | |||
| 327 | unsigned long dwChk1,dwChk2; | 331 | unsigned long dwChk1,dwChk2; |
| 328 | 332 | ||
| 329 | dwChk1 = snd_ali_5451_peek(codec, ALI_STIMER); | 333 | dwChk1 = snd_ali_5451_peek(codec, ALI_STIMER); |
| 330 | dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER); | ||
| 331 | |||
| 332 | end_time = jiffies + msecs_to_jiffies(250); | 334 | end_time = jiffies + msecs_to_jiffies(250); |
| 333 | do { | 335 | |
| 336 | for (;;) { | ||
| 334 | dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER); | 337 | dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER); |
| 335 | if (dwChk2 != dwChk1) | 338 | if (dwChk2 != dwChk1) |
| 336 | return 0; | 339 | return 0; |
| 340 | if (!time_after_eq(end_time, jiffies)) | ||
| 341 | break; | ||
| 337 | schedule_timeout_uninterruptible(1); | 342 | schedule_timeout_uninterruptible(1); |
| 338 | } while (time_after_eq(end_time, jiffies)); | 343 | } |
| 344 | |||
| 339 | snd_printk(KERN_ERR "ali_stimer_read: stimer is not ready.\n"); | 345 | snd_printk(KERN_ERR "ali_stimer_read: stimer is not ready.\n"); |
| 340 | return -EIO; | 346 | return -EIO; |
| 341 | } | 347 | } |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 3da85caf8af1..403588c6e3f6 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
| @@ -3835,9 +3835,11 @@ static struct hda_verb ad1884a_laptop_verbs[] = { | |||
| 3835 | /* Port-F (int speaker) mixer - route only from analog mixer */ | 3835 | /* Port-F (int speaker) mixer - route only from analog mixer */ |
| 3836 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | 3836 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, |
| 3837 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | 3837 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, |
| 3838 | /* Port-F pin */ | 3838 | /* Port-F (int speaker) pin */ |
| 3839 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | 3839 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, |
| 3840 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | 3840 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, |
| 3841 | /* required for compaq 6530s/6531s speaker output */ | ||
| 3842 | {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
| 3841 | /* Port-C pin - internal mic-in */ | 3843 | /* Port-C pin - internal mic-in */ |
| 3842 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | 3844 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, |
| 3843 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */ | 3845 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */ |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 51c44fdbc0f0..30eeb304351c 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -6423,9 +6423,9 @@ static struct hda_verb alc885_mbp_ch2_init[] = { | |||
| 6423 | }; | 6423 | }; |
| 6424 | 6424 | ||
| 6425 | /* | 6425 | /* |
| 6426 | * 6ch mode | 6426 | * 4ch mode |
| 6427 | */ | 6427 | */ |
| 6428 | static struct hda_verb alc885_mbp_ch6_init[] = { | 6428 | static struct hda_verb alc885_mbp_ch4_init[] = { |
| 6429 | { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, | 6429 | { 0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT }, |
| 6430 | { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | 6430 | { 0x1a, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, |
| 6431 | { 0x1a, AC_VERB_SET_CONNECT_SEL, 0x01 }, | 6431 | { 0x1a, AC_VERB_SET_CONNECT_SEL, 0x01 }, |
| @@ -6434,9 +6434,9 @@ static struct hda_verb alc885_mbp_ch6_init[] = { | |||
| 6434 | { } /* end */ | 6434 | { } /* end */ |
| 6435 | }; | 6435 | }; |
| 6436 | 6436 | ||
| 6437 | static struct hda_channel_mode alc885_mbp_6ch_modes[2] = { | 6437 | static struct hda_channel_mode alc885_mbp_4ch_modes[2] = { |
| 6438 | { 2, alc885_mbp_ch2_init }, | 6438 | { 2, alc885_mbp_ch2_init }, |
| 6439 | { 6, alc885_mbp_ch6_init }, | 6439 | { 4, alc885_mbp_ch4_init }, |
| 6440 | }; | 6440 | }; |
| 6441 | 6441 | ||
| 6442 | /* | 6442 | /* |
| @@ -6497,10 +6497,11 @@ static struct snd_kcontrol_new alc882_base_mixer[] = { | |||
| 6497 | }; | 6497 | }; |
| 6498 | 6498 | ||
| 6499 | static struct snd_kcontrol_new alc885_mbp3_mixer[] = { | 6499 | static struct snd_kcontrol_new alc885_mbp3_mixer[] = { |
| 6500 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x00, HDA_OUTPUT), | 6500 | HDA_CODEC_VOLUME("Speaker Playback Volume", 0x0c, 0x00, HDA_OUTPUT), |
| 6501 | HDA_BIND_MUTE ("Front Playback Switch", 0x0c, 0x02, HDA_INPUT), | 6501 | HDA_BIND_MUTE ("Speaker Playback Switch", 0x0c, 0x02, HDA_INPUT), |
| 6502 | HDA_CODEC_MUTE ("Speaker Playback Switch", 0x14, 0x00, HDA_OUTPUT), | 6502 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0e, 0x00, HDA_OUTPUT), |
| 6503 | HDA_CODEC_VOLUME("Line-Out Playback Volume", 0x0d, 0x00, HDA_OUTPUT), | 6503 | HDA_BIND_MUTE ("Headphone Playback Switch", 0x0e, 0x02, HDA_INPUT), |
| 6504 | HDA_CODEC_VOLUME("Surround Playback Volume", 0x0d, 0x00, HDA_OUTPUT), | ||
| 6504 | HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), | 6505 | HDA_CODEC_VOLUME("Line Playback Volume", 0x0b, 0x02, HDA_INPUT), |
| 6505 | HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), | 6506 | HDA_CODEC_MUTE ("Line Playback Switch", 0x0b, 0x02, HDA_INPUT), |
| 6506 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x00, HDA_INPUT), | 6507 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x00, HDA_INPUT), |
| @@ -6814,14 +6815,18 @@ static struct hda_verb alc885_mbp3_init_verbs[] = { | |||
| 6814 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | 6815 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, |
| 6815 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | 6816 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, |
| 6816 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | 6817 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, |
| 6818 | /* HP mixer */ | ||
| 6819 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_ZERO}, | ||
| 6820 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
| 6821 | {0x0e, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
| 6817 | /* Front Pin: output 0 (0x0c) */ | 6822 | /* Front Pin: output 0 (0x0c) */ |
| 6818 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | 6823 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, |
| 6819 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | 6824 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, |
| 6820 | {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, | 6825 | {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, |
| 6821 | /* HP Pin: output 0 (0x0d) */ | 6826 | /* HP Pin: output 0 (0x0e) */ |
| 6822 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc4}, | 6827 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, 0xc4}, |
| 6823 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | 6828 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, |
| 6824 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x00}, | 6829 | {0x15, AC_VERB_SET_CONNECT_SEL, 0x02}, |
| 6825 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, | 6830 | {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN}, |
| 6826 | /* Mic (rear) pin: input vref at 80% */ | 6831 | /* Mic (rear) pin: input vref at 80% */ |
| 6827 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | 6832 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, |
| @@ -7195,10 +7200,11 @@ static struct alc_config_preset alc882_presets[] = { | |||
| 7195 | .mixers = { alc885_mbp3_mixer, alc882_chmode_mixer }, | 7200 | .mixers = { alc885_mbp3_mixer, alc882_chmode_mixer }, |
| 7196 | .init_verbs = { alc885_mbp3_init_verbs, | 7201 | .init_verbs = { alc885_mbp3_init_verbs, |
| 7197 | alc880_gpio1_init_verbs }, | 7202 | alc880_gpio1_init_verbs }, |
| 7198 | .num_dacs = ARRAY_SIZE(alc882_dac_nids), | 7203 | .num_dacs = 2, |
| 7199 | .dac_nids = alc882_dac_nids, | 7204 | .dac_nids = alc882_dac_nids, |
| 7200 | .channel_mode = alc885_mbp_6ch_modes, | 7205 | .hp_nid = 0x04, |
| 7201 | .num_channel_mode = ARRAY_SIZE(alc885_mbp_6ch_modes), | 7206 | .channel_mode = alc885_mbp_4ch_modes, |
| 7207 | .num_channel_mode = ARRAY_SIZE(alc885_mbp_4ch_modes), | ||
| 7202 | .input_mux = &alc882_capture_source, | 7208 | .input_mux = &alc882_capture_source, |
| 7203 | .dig_out_nid = ALC882_DIGOUT_NID, | 7209 | .dig_out_nid = ALC882_DIGOUT_NID, |
| 7204 | .dig_in_nid = ALC882_DIGIN_NID, | 7210 | .dig_in_nid = ALC882_DIGIN_NID, |
| @@ -12521,8 +12527,6 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
| 12521 | ALC268_TOSHIBA), | 12527 | ALC268_TOSHIBA), |
| 12522 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), | 12528 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), |
| 12523 | SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO), | 12529 | SND_PCI_QUIRK(0x1170, 0x0040, "ZEPTO", ALC268_ZEPTO), |
| 12524 | SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05", | ||
| 12525 | ALC268_TOSHIBA), | ||
| 12526 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), | 12530 | SND_PCI_QUIRK(0x14c0, 0x0025, "COMPAL IFL90/JFL-92", ALC268_TOSHIBA), |
| 12527 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), | 12531 | SND_PCI_QUIRK(0x152d, 0x0763, "Diverse (CPR2000)", ALC268_ACER), |
| 12528 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), | 12532 | SND_PCI_QUIRK(0x152d, 0x0771, "Quanta IL1", ALC267_QUANTA_IL1), |
| @@ -12530,6 +12534,15 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
| 12530 | {} | 12534 | {} |
| 12531 | }; | 12535 | }; |
| 12532 | 12536 | ||
| 12537 | /* Toshiba laptops have no unique PCI SSID but only codec SSID */ | ||
| 12538 | static struct snd_pci_quirk alc268_ssid_cfg_tbl[] = { | ||
| 12539 | SND_PCI_QUIRK(0x1179, 0xff0a, "TOSHIBA X-200", ALC268_AUTO), | ||
| 12540 | SND_PCI_QUIRK(0x1179, 0xff0e, "TOSHIBA X-200 HDMI", ALC268_AUTO), | ||
| 12541 | SND_PCI_QUIRK_MASK(0x1179, 0xff00, 0xff00, "TOSHIBA A/Lx05", | ||
| 12542 | ALC268_TOSHIBA), | ||
| 12543 | {} | ||
| 12544 | }; | ||
| 12545 | |||
| 12533 | static struct alc_config_preset alc268_presets[] = { | 12546 | static struct alc_config_preset alc268_presets[] = { |
| 12534 | [ALC267_QUANTA_IL1] = { | 12547 | [ALC267_QUANTA_IL1] = { |
| 12535 | .mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer }, | 12548 | .mixers = { alc267_quanta_il1_mixer, alc268_beep_mixer }, |
| @@ -12696,6 +12709,10 @@ static int patch_alc268(struct hda_codec *codec) | |||
| 12696 | alc268_models, | 12709 | alc268_models, |
| 12697 | alc268_cfg_tbl); | 12710 | alc268_cfg_tbl); |
| 12698 | 12711 | ||
| 12712 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) | ||
| 12713 | board_config = snd_hda_check_board_codec_sid_config(codec, | ||
| 12714 | ALC882_MODEL_LAST, alc268_models, alc268_ssid_cfg_tbl); | ||
| 12715 | |||
| 12699 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) { | 12716 | if (board_config < 0 || board_config >= ALC268_MODEL_LAST) { |
| 12700 | printk(KERN_INFO "hda_codec: Unknown model for %s, " | 12717 | printk(KERN_INFO "hda_codec: Unknown model for %s, " |
| 12701 | "trying auto-probe from BIOS...\n", codec->chip_name); | 12718 | "trying auto-probe from BIOS...\n", codec->chip_name); |
| @@ -13563,6 +13580,8 @@ static int patch_alc269(struct hda_codec *codec) | |||
| 13563 | set_capture_mixer(spec); | 13580 | set_capture_mixer(spec); |
| 13564 | set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT); | 13581 | set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT); |
| 13565 | 13582 | ||
| 13583 | spec->vmaster_nid = 0x02; | ||
| 13584 | |||
| 13566 | codec->patch_ops = alc_patch_ops; | 13585 | codec->patch_ops = alc_patch_ops; |
| 13567 | if (board_config == ALC269_AUTO) | 13586 | if (board_config == ALC269_AUTO) |
| 13568 | spec->init_hook = alc269_auto_init; | 13587 | spec->init_hook = alc269_auto_init; |
| @@ -15577,9 +15596,12 @@ static int patch_alc861vd(struct hda_codec *codec) | |||
| 15577 | spec->stream_digital_playback = &alc861vd_pcm_digital_playback; | 15596 | spec->stream_digital_playback = &alc861vd_pcm_digital_playback; |
| 15578 | spec->stream_digital_capture = &alc861vd_pcm_digital_capture; | 15597 | spec->stream_digital_capture = &alc861vd_pcm_digital_capture; |
| 15579 | 15598 | ||
| 15580 | spec->adc_nids = alc861vd_adc_nids; | 15599 | if (!spec->adc_nids) { |
| 15581 | spec->num_adc_nids = ARRAY_SIZE(alc861vd_adc_nids); | 15600 | spec->adc_nids = alc861vd_adc_nids; |
| 15582 | spec->capsrc_nids = alc861vd_capsrc_nids; | 15601 | spec->num_adc_nids = ARRAY_SIZE(alc861vd_adc_nids); |
| 15602 | } | ||
| 15603 | if (!spec->capsrc_nids) | ||
| 15604 | spec->capsrc_nids = alc861vd_capsrc_nids; | ||
| 15583 | 15605 | ||
| 15584 | set_capture_mixer(spec); | 15606 | set_capture_mixer(spec); |
| 15585 | set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT); | 15607 | set_beep_amp(spec, 0x0b, 0x05, HDA_INPUT); |
| @@ -17496,9 +17518,12 @@ static int patch_alc662(struct hda_codec *codec) | |||
| 17496 | spec->stream_digital_playback = &alc662_pcm_digital_playback; | 17518 | spec->stream_digital_playback = &alc662_pcm_digital_playback; |
| 17497 | spec->stream_digital_capture = &alc662_pcm_digital_capture; | 17519 | spec->stream_digital_capture = &alc662_pcm_digital_capture; |
| 17498 | 17520 | ||
| 17499 | spec->adc_nids = alc662_adc_nids; | 17521 | if (!spec->adc_nids) { |
| 17500 | spec->num_adc_nids = ARRAY_SIZE(alc662_adc_nids); | 17522 | spec->adc_nids = alc662_adc_nids; |
| 17501 | spec->capsrc_nids = alc662_capsrc_nids; | 17523 | spec->num_adc_nids = ARRAY_SIZE(alc662_adc_nids); |
| 17524 | } | ||
| 17525 | if (!spec->capsrc_nids) | ||
| 17526 | spec->capsrc_nids = alc662_capsrc_nids; | ||
| 17502 | 17527 | ||
| 17503 | if (!spec->cap_mixer) | 17528 | if (!spec->cap_mixer) |
| 17504 | set_capture_mixer(spec); | 17529 | set_capture_mixer(spec); |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 456ef6ac12e4..6990cfcb6a38 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -76,6 +76,7 @@ enum { | |||
| 76 | STAC_92HD73XX_AUTO, | 76 | STAC_92HD73XX_AUTO, |
| 77 | STAC_92HD73XX_NO_JD, /* no jack-detection */ | 77 | STAC_92HD73XX_NO_JD, /* no jack-detection */ |
| 78 | STAC_92HD73XX_REF, | 78 | STAC_92HD73XX_REF, |
| 79 | STAC_92HD73XX_INTEL, | ||
| 79 | STAC_DELL_M6_AMIC, | 80 | STAC_DELL_M6_AMIC, |
| 80 | STAC_DELL_M6_DMIC, | 81 | STAC_DELL_M6_DMIC, |
| 81 | STAC_DELL_M6_BOTH, | 82 | STAC_DELL_M6_BOTH, |
| @@ -1777,6 +1778,7 @@ static const char *stac92hd73xx_models[STAC_92HD73XX_MODELS] = { | |||
| 1777 | [STAC_92HD73XX_AUTO] = "auto", | 1778 | [STAC_92HD73XX_AUTO] = "auto", |
| 1778 | [STAC_92HD73XX_NO_JD] = "no-jd", | 1779 | [STAC_92HD73XX_NO_JD] = "no-jd", |
| 1779 | [STAC_92HD73XX_REF] = "ref", | 1780 | [STAC_92HD73XX_REF] = "ref", |
| 1781 | [STAC_92HD73XX_INTEL] = "intel", | ||
| 1780 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", | 1782 | [STAC_DELL_M6_AMIC] = "dell-m6-amic", |
| 1781 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", | 1783 | [STAC_DELL_M6_DMIC] = "dell-m6-dmic", |
| 1782 | [STAC_DELL_M6_BOTH] = "dell-m6", | 1784 | [STAC_DELL_M6_BOTH] = "dell-m6", |
| @@ -1789,6 +1791,10 @@ static struct snd_pci_quirk stac92hd73xx_cfg_tbl[] = { | |||
| 1789 | "DFI LanParty", STAC_92HD73XX_REF), | 1791 | "DFI LanParty", STAC_92HD73XX_REF), |
| 1790 | SND_PCI_QUIRK(PCI_VENDOR_ID_DFI, 0x3101, | 1792 | SND_PCI_QUIRK(PCI_VENDOR_ID_DFI, 0x3101, |
| 1791 | "DFI LanParty", STAC_92HD73XX_REF), | 1793 | "DFI LanParty", STAC_92HD73XX_REF), |
| 1794 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x5002, | ||
| 1795 | "Intel DG45ID", STAC_92HD73XX_INTEL), | ||
| 1796 | SND_PCI_QUIRK(PCI_VENDOR_ID_INTEL, 0x5003, | ||
| 1797 | "Intel DG45FC", STAC_92HD73XX_INTEL), | ||
| 1792 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, | 1798 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0254, |
| 1793 | "Dell Studio 1535", STAC_DELL_M6_DMIC), | 1799 | "Dell Studio 1535", STAC_DELL_M6_DMIC), |
| 1794 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, | 1800 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0255, |
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 9008b4b013aa..e8f10b10cceb 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
| @@ -1395,6 +1395,7 @@ static int patch_vt1708(struct hda_codec *codec) | |||
| 1395 | if (!spec->adc_nids && spec->input_mux) { | 1395 | if (!spec->adc_nids && spec->input_mux) { |
| 1396 | spec->adc_nids = vt1708_adc_nids; | 1396 | spec->adc_nids = vt1708_adc_nids; |
| 1397 | spec->num_adc_nids = ARRAY_SIZE(vt1708_adc_nids); | 1397 | spec->num_adc_nids = ARRAY_SIZE(vt1708_adc_nids); |
| 1398 | get_mux_nids(codec); | ||
| 1398 | spec->mixers[spec->num_mixers] = vt1708_capture_mixer; | 1399 | spec->mixers[spec->num_mixers] = vt1708_capture_mixer; |
| 1399 | spec->num_mixers++; | 1400 | spec->num_mixers++; |
| 1400 | } | 1401 | } |
diff --git a/sound/pci/oxygen/oxygen_lib.c b/sound/pci/oxygen/oxygen_lib.c index 312251d39696..9a8936e20744 100644 --- a/sound/pci/oxygen/oxygen_lib.c +++ b/sound/pci/oxygen/oxygen_lib.c | |||
| @@ -260,6 +260,9 @@ oxygen_search_pci_id(struct oxygen *chip, const struct pci_device_id ids[]) | |||
| 260 | * chip didn't if the first EEPROM word was overwritten. | 260 | * chip didn't if the first EEPROM word was overwritten. |
| 261 | */ | 261 | */ |
| 262 | subdevice = oxygen_read_eeprom(chip, 2); | 262 | subdevice = oxygen_read_eeprom(chip, 2); |
| 263 | /* use default ID if EEPROM is missing */ | ||
| 264 | if (subdevice == 0xffff) | ||
| 265 | subdevice = 0x8788; | ||
| 263 | /* | 266 | /* |
| 264 | * We use only the subsystem device ID for searching because it is | 267 | * We use only the subsystem device ID for searching because it is |
| 265 | * unique even without the subsystem vendor ID, which may have been | 268 | * unique even without the subsystem vendor ID, which may have been |
diff --git a/sound/pci/oxygen/oxygen_pcm.c b/sound/pci/oxygen/oxygen_pcm.c index 3b5ca70c9d4d..ef2345d82b86 100644 --- a/sound/pci/oxygen/oxygen_pcm.c +++ b/sound/pci/oxygen/oxygen_pcm.c | |||
| @@ -469,9 +469,11 @@ static int oxygen_multich_hw_params(struct snd_pcm_substream *substream, | |||
| 469 | oxygen_write16_masked(chip, OXYGEN_I2S_MULTICH_FORMAT, | 469 | oxygen_write16_masked(chip, OXYGEN_I2S_MULTICH_FORMAT, |
| 470 | oxygen_rate(hw_params) | | 470 | oxygen_rate(hw_params) | |
| 471 | chip->model.dac_i2s_format | | 471 | chip->model.dac_i2s_format | |
| 472 | oxygen_i2s_mclk(hw_params) | | ||
| 472 | oxygen_i2s_bits(hw_params), | 473 | oxygen_i2s_bits(hw_params), |
| 473 | OXYGEN_I2S_RATE_MASK | | 474 | OXYGEN_I2S_RATE_MASK | |
| 474 | OXYGEN_I2S_FORMAT_MASK | | 475 | OXYGEN_I2S_FORMAT_MASK | |
| 476 | OXYGEN_I2S_MCLK_MASK | | ||
| 475 | OXYGEN_I2S_BITS_MASK); | 477 | OXYGEN_I2S_BITS_MASK); |
| 476 | oxygen_update_dac_routing(chip); | 478 | oxygen_update_dac_routing(chip); |
| 477 | oxygen_update_spdif_source(chip); | 479 | oxygen_update_spdif_source(chip); |
diff --git a/sound/pci/vx222/vx222_ops.c b/sound/pci/vx222/vx222_ops.c index 6416d3f0c7be..a69e774d0b13 100644 --- a/sound/pci/vx222/vx222_ops.c +++ b/sound/pci/vx222/vx222_ops.c | |||
| @@ -885,10 +885,10 @@ static int vx_input_level_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem | |||
| 885 | struct vx_core *_chip = snd_kcontrol_chip(kcontrol); | 885 | struct vx_core *_chip = snd_kcontrol_chip(kcontrol); |
| 886 | struct snd_vx222 *chip = (struct snd_vx222 *)_chip; | 886 | struct snd_vx222 *chip = (struct snd_vx222 *)_chip; |
| 887 | if (ucontrol->value.integer.value[0] < 0 || | 887 | if (ucontrol->value.integer.value[0] < 0 || |
| 888 | ucontrol->value.integer.value[0] < MIC_LEVEL_MAX) | 888 | ucontrol->value.integer.value[0] > MIC_LEVEL_MAX) |
| 889 | return -EINVAL; | 889 | return -EINVAL; |
| 890 | if (ucontrol->value.integer.value[1] < 0 || | 890 | if (ucontrol->value.integer.value[1] < 0 || |
| 891 | ucontrol->value.integer.value[1] < MIC_LEVEL_MAX) | 891 | ucontrol->value.integer.value[1] > MIC_LEVEL_MAX) |
| 892 | return -EINVAL; | 892 | return -EINVAL; |
| 893 | mutex_lock(&_chip->mixer_mutex); | 893 | mutex_lock(&_chip->mixer_mutex); |
| 894 | if (chip->input_level[0] != ucontrol->value.integer.value[0] || | 894 | if (chip->input_level[0] != ucontrol->value.integer.value[0] || |
