diff options
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/ac97/ac97_codec.c | 2 | ||||
-rw-r--r-- | sound/pci/ac97/ac97_patch.c | 7 | ||||
-rw-r--r-- | sound/pci/atiixp.c | 6 | ||||
-rw-r--r-- | sound/pci/bt87x.c | 6 | ||||
-rw-r--r-- | sound/pci/ca0106/ca0106_mixer.c | 2 | ||||
-rw-r--r-- | sound/pci/cmipci.c | 2 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigodjx.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigoiox.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/hda_intel.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_analog.c | 45 | ||||
-rw-r--r-- | sound/pci/hda/patch_conexant.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 113 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 17 | ||||
-rw-r--r-- | sound/pci/intel8x0.c | 6 | ||||
-rw-r--r-- | sound/pci/korg1212/korg1212.c | 6 | ||||
-rw-r--r-- | sound/pci/riptide/riptide.c | 10 | ||||
-rw-r--r-- | sound/pci/via82xx.c | 2 |
17 files changed, 203 insertions, 25 deletions
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index 97ee127ac33..78288dbfc17 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
@@ -2122,7 +2122,7 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template, | |||
2122 | } | 2122 | } |
2123 | /* nothing should be in powerdown mode */ | 2123 | /* nothing should be in powerdown mode */ |
2124 | snd_ac97_write_cache(ac97, AC97_GENERAL_PURPOSE, 0); | 2124 | snd_ac97_write_cache(ac97, AC97_GENERAL_PURPOSE, 0); |
2125 | end_time = jiffies + msecs_to_jiffies(100); | 2125 | end_time = jiffies + msecs_to_jiffies(120); |
2126 | do { | 2126 | do { |
2127 | if ((snd_ac97_read(ac97, AC97_POWERDOWN) & 0x0f) == 0x0f) | 2127 | if ((snd_ac97_read(ac97, AC97_POWERDOWN) & 0x0f) == 0x0f) |
2128 | goto __ready_ok; | 2128 | goto __ready_ok; |
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index 81bc93e5f1e..7337abdbe4e 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c | |||
@@ -958,10 +958,13 @@ static int patch_sigmatel_stac9708_3d(struct snd_ac97 * ac97) | |||
958 | } | 958 | } |
959 | 959 | ||
960 | static const struct snd_kcontrol_new snd_ac97_sigmatel_4speaker = | 960 | static const struct snd_kcontrol_new snd_ac97_sigmatel_4speaker = |
961 | AC97_SINGLE("Sigmatel 4-Speaker Stereo Playback Switch", AC97_SIGMATEL_DAC2INVERT, 2, 1, 0); | 961 | AC97_SINGLE("Sigmatel 4-Speaker Stereo Playback Switch", |
962 | AC97_SIGMATEL_DAC2INVERT, 2, 1, 0); | ||
962 | 963 | ||
964 | /* "Sigmatel " removed due to excessive name length: */ | ||
963 | static const struct snd_kcontrol_new snd_ac97_sigmatel_phaseinvert = | 965 | static const struct snd_kcontrol_new snd_ac97_sigmatel_phaseinvert = |
964 | AC97_SINGLE("Sigmatel Surround Phase Inversion Playback Switch", AC97_SIGMATEL_DAC2INVERT, 3, 1, 0); | 966 | AC97_SINGLE("Surround Phase Inversion Playback Switch", |
967 | AC97_SIGMATEL_DAC2INVERT, 3, 1, 0); | ||
965 | 968 | ||
966 | static const struct snd_kcontrol_new snd_ac97_sigmatel_controls[] = { | 969 | static const struct snd_kcontrol_new snd_ac97_sigmatel_controls[] = { |
967 | AC97_SINGLE("Sigmatel DAC 6dB Attenuate", AC97_SIGMATEL_ANALOG, 1, 1, 0), | 970 | AC97_SINGLE("Sigmatel DAC 6dB Attenuate", AC97_SIGMATEL_ANALOG, 1, 1, 0), |
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index 9ce8548c03e..71515ddb459 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c | |||
@@ -1393,6 +1393,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = { | |||
1393 | .name = "HP nx6125", | 1393 | .name = "HP nx6125", |
1394 | .type = AC97_TUNE_MUTE_LED | 1394 | .type = AC97_TUNE_MUTE_LED |
1395 | }, | 1395 | }, |
1396 | { | ||
1397 | .subvendor = 0x103c, | ||
1398 | .subdevice = 0x3091, | ||
1399 | .name = "unknown HP", | ||
1400 | .type = AC97_TUNE_MUTE_LED | ||
1401 | }, | ||
1396 | { } /* terminator */ | 1402 | { } /* terminator */ |
1397 | }; | 1403 | }; |
1398 | 1404 | ||
diff --git a/sound/pci/bt87x.c b/sound/pci/bt87x.c index a299340519d..ce3f2e90f4d 100644 --- a/sound/pci/bt87x.c +++ b/sound/pci/bt87x.c | |||
@@ -349,7 +349,8 @@ static struct snd_pcm_hardware snd_bt87x_digital_hw = { | |||
349 | .info = SNDRV_PCM_INFO_MMAP | | 349 | .info = SNDRV_PCM_INFO_MMAP | |
350 | SNDRV_PCM_INFO_INTERLEAVED | | 350 | SNDRV_PCM_INFO_INTERLEAVED | |
351 | SNDRV_PCM_INFO_BLOCK_TRANSFER | | 351 | SNDRV_PCM_INFO_BLOCK_TRANSFER | |
352 | SNDRV_PCM_INFO_MMAP_VALID, | 352 | SNDRV_PCM_INFO_MMAP_VALID | |
353 | SNDRV_PCM_INFO_BATCH, | ||
353 | .formats = SNDRV_PCM_FMTBIT_S16_LE, | 354 | .formats = SNDRV_PCM_FMTBIT_S16_LE, |
354 | .rates = 0, /* set at runtime */ | 355 | .rates = 0, /* set at runtime */ |
355 | .channels_min = 2, | 356 | .channels_min = 2, |
@@ -365,7 +366,8 @@ static struct snd_pcm_hardware snd_bt87x_analog_hw = { | |||
365 | .info = SNDRV_PCM_INFO_MMAP | | 366 | .info = SNDRV_PCM_INFO_MMAP | |
366 | SNDRV_PCM_INFO_INTERLEAVED | | 367 | SNDRV_PCM_INFO_INTERLEAVED | |
367 | SNDRV_PCM_INFO_BLOCK_TRANSFER | | 368 | SNDRV_PCM_INFO_BLOCK_TRANSFER | |
368 | SNDRV_PCM_INFO_MMAP_VALID, | 369 | SNDRV_PCM_INFO_MMAP_VALID | |
370 | SNDRV_PCM_INFO_BATCH, | ||
369 | .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8, | 371 | .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8, |
370 | .rates = SNDRV_PCM_RATE_KNOT, | 372 | .rates = SNDRV_PCM_RATE_KNOT, |
371 | .rate_min = ANALOG_CLOCK / CLOCK_DIV_MAX, | 373 | .rate_min = ANALOG_CLOCK / CLOCK_DIV_MAX, |
diff --git a/sound/pci/ca0106/ca0106_mixer.c b/sound/pci/ca0106/ca0106_mixer.c index ad2888705d2..c111efe61c3 100644 --- a/sound/pci/ca0106/ca0106_mixer.c +++ b/sound/pci/ca0106/ca0106_mixer.c | |||
@@ -800,7 +800,7 @@ int __devinit snd_ca0106_mixer(struct snd_ca0106 *emu) | |||
800 | "Capture Volume", | 800 | "Capture Volume", |
801 | "External Amplifier", | 801 | "External Amplifier", |
802 | "Sigmatel 4-Speaker Stereo Playback Switch", | 802 | "Sigmatel 4-Speaker Stereo Playback Switch", |
803 | "Sigmatel Surround Phase Inversion Playback ", | 803 | "Surround Phase Inversion Playback Switch", |
804 | NULL | 804 | NULL |
805 | }; | 805 | }; |
806 | static char *ca0106_rename_ctls[] = { | 806 | static char *ca0106_rename_ctls[] = { |
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c index c7899c32aba..449fe02f666 100644 --- a/sound/pci/cmipci.c +++ b/sound/pci/cmipci.c | |||
@@ -3014,7 +3014,7 @@ static int __devinit snd_cmipci_create(struct snd_card *card, struct pci_dev *pc | |||
3014 | .dev_free = snd_cmipci_dev_free, | 3014 | .dev_free = snd_cmipci_dev_free, |
3015 | }; | 3015 | }; |
3016 | unsigned int val; | 3016 | unsigned int val; |
3017 | long iomidi; | 3017 | long iomidi = 0; |
3018 | int integrated_midi = 0; | 3018 | int integrated_midi = 0; |
3019 | char modelstr[16]; | 3019 | char modelstr[16]; |
3020 | int pcm_index, pcm_spdif_index; | 3020 | int pcm_index, pcm_spdif_index; |
diff --git a/sound/pci/echoaudio/indigodjx.c b/sound/pci/echoaudio/indigodjx.c index 3482ef69f49..2e44316530a 100644 --- a/sound/pci/echoaudio/indigodjx.c +++ b/sound/pci/echoaudio/indigodjx.c | |||
@@ -88,6 +88,7 @@ static struct snd_pcm_hardware pcm_hardware_skel = { | |||
88 | .rates = SNDRV_PCM_RATE_32000 | | 88 | .rates = SNDRV_PCM_RATE_32000 | |
89 | SNDRV_PCM_RATE_44100 | | 89 | SNDRV_PCM_RATE_44100 | |
90 | SNDRV_PCM_RATE_48000 | | 90 | SNDRV_PCM_RATE_48000 | |
91 | SNDRV_PCM_RATE_64000 | | ||
91 | SNDRV_PCM_RATE_88200 | | 92 | SNDRV_PCM_RATE_88200 | |
92 | SNDRV_PCM_RATE_96000, | 93 | SNDRV_PCM_RATE_96000, |
93 | .rate_min = 32000, | 94 | .rate_min = 32000, |
diff --git a/sound/pci/echoaudio/indigoiox.c b/sound/pci/echoaudio/indigoiox.c index aebee27a40f..eb3819f9654 100644 --- a/sound/pci/echoaudio/indigoiox.c +++ b/sound/pci/echoaudio/indigoiox.c | |||
@@ -89,6 +89,7 @@ static struct snd_pcm_hardware pcm_hardware_skel = { | |||
89 | .rates = SNDRV_PCM_RATE_32000 | | 89 | .rates = SNDRV_PCM_RATE_32000 | |
90 | SNDRV_PCM_RATE_44100 | | 90 | SNDRV_PCM_RATE_44100 | |
91 | SNDRV_PCM_RATE_48000 | | 91 | SNDRV_PCM_RATE_48000 | |
92 | SNDRV_PCM_RATE_64000 | | ||
92 | SNDRV_PCM_RATE_88200 | | 93 | SNDRV_PCM_RATE_88200 | |
93 | SNDRV_PCM_RATE_96000, | 94 | SNDRV_PCM_RATE_96000, |
94 | .rate_min = 32000, | 95 | .rate_min = 32000, |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 21e99cfa8c4..3128e1a6bc6 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
@@ -2141,6 +2141,7 @@ static struct snd_pci_quirk probe_mask_list[] __devinitdata = { | |||
2141 | /* including bogus ALC268 in slot#2 that conflicts with ALC888 */ | 2141 | /* including bogus ALC268 in slot#2 that conflicts with ALC888 */ |
2142 | SND_PCI_QUIRK(0x17c0, 0x4085, "Medion MD96630", 0x01), | 2142 | SND_PCI_QUIRK(0x17c0, 0x4085, "Medion MD96630", 0x01), |
2143 | /* forced codec slots */ | 2143 | /* forced codec slots */ |
2144 | SND_PCI_QUIRK(0x1043, 0x1262, "ASUS W5Fm", 0x103), | ||
2144 | SND_PCI_QUIRK(0x1046, 0x1262, "ASUS W5F", 0x103), | 2145 | SND_PCI_QUIRK(0x1046, 0x1262, "ASUS W5F", 0x103), |
2145 | {} | 2146 | {} |
2146 | }; | 2147 | }; |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 9bcd8ab5a27..84cc49ca914 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -3817,6 +3817,49 @@ static struct hda_verb ad1884a_laptop_verbs[] = { | |||
3817 | { } /* end */ | 3817 | { } /* end */ |
3818 | }; | 3818 | }; |
3819 | 3819 | ||
3820 | static struct hda_verb ad1884a_mobile_verbs[] = { | ||
3821 | /* DACs; unmute as default */ | ||
3822 | {0x03, AC_VERB_SET_AMP_GAIN_MUTE, 0x27}, /* 0dB */ | ||
3823 | {0x04, AC_VERB_SET_AMP_GAIN_MUTE, 0x27}, /* 0dB */ | ||
3824 | /* Port-A (HP) mixer - route only from analog mixer */ | ||
3825 | {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
3826 | {0x07, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
3827 | /* Port-A pin */ | ||
3828 | {0x11, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
3829 | /* Port-A (HP) pin - always unmuted */ | ||
3830 | {0x11, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
3831 | /* Port-B (mic jack) pin */ | ||
3832 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
3833 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */ | ||
3834 | /* Port-C (int mic) pin */ | ||
3835 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
3836 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, 0x7002}, /* raise mic as default */ | ||
3837 | /* Port-F (int speaker) mixer - route only from analog mixer */ | ||
3838 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
3839 | {0x0b, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
3840 | /* Port-F pin */ | ||
3841 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
3842 | {0x16, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
3843 | /* Analog mixer; mute as default */ | ||
3844 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
3845 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(1)}, | ||
3846 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(2)}, | ||
3847 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(3)}, | ||
3848 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(4)}, | ||
3849 | {0x20, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(5)}, | ||
3850 | /* Analog Mix output amp */ | ||
3851 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
3852 | /* capture sources */ | ||
3853 | /* {0x0c, AC_VERB_SET_CONNECT_SEL, 0x0}, */ /* set via unsol */ | ||
3854 | {0x0c, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
3855 | {0x0d, AC_VERB_SET_CONNECT_SEL, 0x0}, | ||
3856 | {0x0d, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE}, | ||
3857 | /* unsolicited event for pin-sense */ | ||
3858 | {0x11, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | AD1884A_HP_EVENT}, | ||
3859 | {0x14, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | AD1884A_MIC_EVENT}, | ||
3860 | { } /* end */ | ||
3861 | }; | ||
3862 | |||
3820 | /* | 3863 | /* |
3821 | * Thinkpad X300 | 3864 | * Thinkpad X300 |
3822 | * 0x11 - HP | 3865 | * 0x11 - HP |
@@ -3988,7 +4031,7 @@ static int patch_ad1884a(struct hda_codec *codec) | |||
3988 | break; | 4031 | break; |
3989 | case AD1884A_MOBILE: | 4032 | case AD1884A_MOBILE: |
3990 | spec->mixers[0] = ad1884a_mobile_mixers; | 4033 | spec->mixers[0] = ad1884a_mobile_mixers; |
3991 | spec->init_verbs[spec->num_init_verbs++] = ad1884a_laptop_verbs; | 4034 | spec->init_verbs[0] = ad1884a_mobile_verbs; |
3992 | spec->multiout.dig_out_nid = 0; | 4035 | spec->multiout.dig_out_nid = 0; |
3993 | codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; | 4036 | codec->patch_ops.unsol_event = ad1884a_hp_unsol_event; |
3994 | codec->patch_ops.init = ad1884a_hp_init; | 4037 | codec->patch_ops.init = ad1884a_hp_init; |
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c index 56ce19e68cb..4fcbe21829a 100644 --- a/sound/pci/hda/patch_conexant.c +++ b/sound/pci/hda/patch_conexant.c | |||
@@ -1848,6 +1848,7 @@ static const char *cxt5051_models[CXT5051_MODELS] = { | |||
1848 | 1848 | ||
1849 | static struct snd_pci_quirk cxt5051_cfg_tbl[] = { | 1849 | static struct snd_pci_quirk cxt5051_cfg_tbl[] = { |
1850 | SND_PCI_QUIRK(0x103c, 0x30cf, "HP DV6736", CXT5051_HP_DV6736), | 1850 | SND_PCI_QUIRK(0x103c, 0x30cf, "HP DV6736", CXT5051_HP_DV6736), |
1851 | SND_PCI_QUIRK(0x103c, 0x360b, "Compaq Presario CQ60", CXT5051_HP), | ||
1851 | SND_PCI_QUIRK(0x14f1, 0x0101, "Conexant Reference board", | 1852 | SND_PCI_QUIRK(0x14f1, 0x0101, "Conexant Reference board", |
1852 | CXT5051_LAPTOP), | 1853 | CXT5051_LAPTOP), |
1853 | SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP), | 1854 | SND_PCI_QUIRK(0x14f1, 0x5051, "HP Spartan 1.1", CXT5051_HP), |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6ed787eedd0..0fd258eba3a 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -188,6 +188,8 @@ enum { | |||
188 | ALC663_ASUS_MODE4, | 188 | ALC663_ASUS_MODE4, |
189 | ALC663_ASUS_MODE5, | 189 | ALC663_ASUS_MODE5, |
190 | ALC663_ASUS_MODE6, | 190 | ALC663_ASUS_MODE6, |
191 | ALC272_DELL, | ||
192 | ALC272_DELL_ZM1, | ||
191 | ALC662_AUTO, | 193 | ALC662_AUTO, |
192 | ALC662_MODEL_LAST, | 194 | ALC662_MODEL_LAST, |
193 | }; | 195 | }; |
@@ -774,6 +776,12 @@ static void alc_set_input_pin(struct hda_codec *codec, hda_nid_t nid, | |||
774 | pincap = (pincap & AC_PINCAP_VREF) >> AC_PINCAP_VREF_SHIFT; | 776 | pincap = (pincap & AC_PINCAP_VREF) >> AC_PINCAP_VREF_SHIFT; |
775 | if (pincap & AC_PINCAP_VREF_80) | 777 | if (pincap & AC_PINCAP_VREF_80) |
776 | val = PIN_VREF80; | 778 | val = PIN_VREF80; |
779 | else if (pincap & AC_PINCAP_VREF_50) | ||
780 | val = PIN_VREF50; | ||
781 | else if (pincap & AC_PINCAP_VREF_100) | ||
782 | val = PIN_VREF100; | ||
783 | else if (pincap & AC_PINCAP_VREF_GRD) | ||
784 | val = PIN_VREFGRD; | ||
777 | } | 785 | } |
778 | snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, val); | 786 | snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, val); |
779 | } | 787 | } |
@@ -12056,6 +12064,7 @@ static struct snd_pci_quirk alc268_cfg_tbl[] = { | |||
12056 | SND_PCI_QUIRK(0x1028, 0x0253, "Dell OEM", ALC268_DELL), | 12064 | SND_PCI_QUIRK(0x1028, 0x0253, "Dell OEM", ALC268_DELL), |
12057 | SND_PCI_QUIRK(0x1028, 0x02b0, "Dell Inspiron Mini9", ALC268_DELL), | 12065 | SND_PCI_QUIRK(0x1028, 0x02b0, "Dell Inspiron Mini9", ALC268_DELL), |
12058 | SND_PCI_QUIRK(0x103c, 0x30cc, "TOSHIBA", ALC268_TOSHIBA), | 12066 | SND_PCI_QUIRK(0x103c, 0x30cc, "TOSHIBA", ALC268_TOSHIBA), |
12067 | SND_PCI_QUIRK(0x103c, 0x30f1, "HP TX25xx series", ALC268_TOSHIBA), | ||
12059 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), | 12068 | SND_PCI_QUIRK(0x1043, 0x1205, "ASUS W7J", ALC268_3ST), |
12060 | SND_PCI_QUIRK(0x1179, 0xff10, "TOSHIBA A205", ALC268_TOSHIBA), | 12069 | SND_PCI_QUIRK(0x1179, 0xff10, "TOSHIBA A205", ALC268_TOSHIBA), |
12061 | SND_PCI_QUIRK(0x1179, 0xff50, "TOSHIBA A305", ALC268_TOSHIBA), | 12070 | SND_PCI_QUIRK(0x1179, 0xff50, "TOSHIBA A305", ALC268_TOSHIBA), |
@@ -12976,10 +12985,17 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = { | |||
12976 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), | 12985 | SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_QUANTA_FL1), |
12977 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", | 12986 | SND_PCI_QUIRK(0x1043, 0x8330, "ASUS Eeepc P703 P900A", |
12978 | ALC269_ASUS_EEEPC_P703), | 12987 | ALC269_ASUS_EEEPC_P703), |
12988 | SND_PCI_QUIRK(0x1043, 0x1883, "ASUS F81Se", ALC269_ASUS_EEEPC_P703), | ||
12989 | SND_PCI_QUIRK(0x1043, 0x16a3, "ASUS F5Q", ALC269_ASUS_EEEPC_P703), | ||
12990 | SND_PCI_QUIRK(0x1043, 0x1723, "ASUS P80", ALC269_ASUS_EEEPC_P703), | ||
12991 | SND_PCI_QUIRK(0x1043, 0x1773, "ASUS U20A", ALC269_ASUS_EEEPC_P703), | ||
12992 | SND_PCI_QUIRK(0x1043, 0x1743, "ASUS U80", ALC269_ASUS_EEEPC_P703), | ||
12993 | SND_PCI_QUIRK(0x1043, 0x1653, "ASUS U50", ALC269_ASUS_EEEPC_P703), | ||
12979 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", | 12994 | SND_PCI_QUIRK(0x1043, 0x831a, "ASUS Eeepc P901", |
12980 | ALC269_ASUS_EEEPC_P901), | 12995 | ALC269_ASUS_EEEPC_P901), |
12981 | SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", | 12996 | SND_PCI_QUIRK(0x1043, 0x834a, "ASUS Eeepc S101", |
12982 | ALC269_ASUS_EEEPC_P901), | 12997 | ALC269_ASUS_EEEPC_P901), |
12998 | SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_ASUS_EEEPC_P901), | ||
12983 | SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), | 12999 | SND_PCI_QUIRK(0x1734, 0x115d, "FSC Amilo", ALC269_FUJITSU), |
12984 | SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), | 13000 | SND_PCI_QUIRK(0x10cf, 0x1475, "Lifebook ICH9M-based", ALC269_LIFEBOOK), |
12985 | {} | 13001 | {} |
@@ -15210,12 +15226,23 @@ static hda_nid_t alc662_dac_nids[4] = { | |||
15210 | 0x02, 0x03, 0x04 | 15226 | 0x02, 0x03, 0x04 |
15211 | }; | 15227 | }; |
15212 | 15228 | ||
15229 | static hda_nid_t alc272_dac_nids[2] = { | ||
15230 | 0x02, 0x03 | ||
15231 | }; | ||
15232 | |||
15213 | static hda_nid_t alc662_adc_nids[1] = { | 15233 | static hda_nid_t alc662_adc_nids[1] = { |
15214 | /* ADC1-2 */ | 15234 | /* ADC1-2 */ |
15215 | 0x09, | 15235 | 0x09, |
15216 | }; | 15236 | }; |
15217 | 15237 | ||
15238 | static hda_nid_t alc272_adc_nids[1] = { | ||
15239 | /* ADC1-2 */ | ||
15240 | 0x08, | ||
15241 | }; | ||
15242 | |||
15218 | static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; | 15243 | static hda_nid_t alc662_capsrc_nids[1] = { 0x22 }; |
15244 | static hda_nid_t alc272_capsrc_nids[1] = { 0x23 }; | ||
15245 | |||
15219 | 15246 | ||
15220 | /* input MUX */ | 15247 | /* input MUX */ |
15221 | /* FIXME: should be a matrix-type input source selection */ | 15248 | /* FIXME: should be a matrix-type input source selection */ |
@@ -15641,14 +15668,7 @@ static struct hda_verb alc662_init_verbs[] = { | |||
15641 | /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ | 15668 | /* Mixer elements: 0x18, 19, 1a, 1b, 1c, 1d, 14, 15, 16, 17, 0b */ |
15642 | /* Input mixer */ | 15669 | /* Input mixer */ |
15643 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | 15670 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, |
15644 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
15645 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
15646 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, | ||
15647 | |||
15648 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | 15671 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, |
15649 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
15650 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(2)}, | ||
15651 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(4)}, | ||
15652 | 15672 | ||
15653 | /* always trun on EAPD */ | 15673 | /* always trun on EAPD */ |
15654 | {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, | 15674 | {0x14, AC_VERB_SET_EAPD_BTLENABLE, 2}, |
@@ -15843,12 +15863,48 @@ static struct hda_verb alc662_ecs_init_verbs[] = { | |||
15843 | {} | 15863 | {} |
15844 | }; | 15864 | }; |
15845 | 15865 | ||
15866 | static struct hda_verb alc272_dell_zm1_init_verbs[] = { | ||
15867 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15868 | {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15869 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15870 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15871 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
15872 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
15873 | {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ | ||
15874 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
15875 | {0x22, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, | ||
15876 | {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, | ||
15877 | {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, | ||
15878 | {} | ||
15879 | }; | ||
15880 | |||
15881 | static struct hda_verb alc272_dell_init_verbs[] = { | ||
15882 | {0x12, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15883 | {0x13, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15884 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15885 | {0x16, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
15886 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
15887 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
15888 | {0x21, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Headphone */ | ||
15889 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_MUTE(0)}, | ||
15890 | {0x23, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(9)}, | ||
15891 | {0x18, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_MIC_EVENT}, | ||
15892 | {0x21, AC_VERB_SET_UNSOLICITED_ENABLE, AC_USRSP_EN | ALC880_HP_EVENT}, | ||
15893 | {} | ||
15894 | }; | ||
15895 | |||
15846 | static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { | 15896 | static struct snd_kcontrol_new alc662_auto_capture_mixer[] = { |
15847 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), | 15897 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0x0, HDA_INPUT), |
15848 | HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), | 15898 | HDA_CODEC_MUTE("Capture Switch", 0x09, 0x0, HDA_INPUT), |
15849 | { } /* end */ | 15899 | { } /* end */ |
15850 | }; | 15900 | }; |
15851 | 15901 | ||
15902 | static struct snd_kcontrol_new alc272_auto_capture_mixer[] = { | ||
15903 | HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), | ||
15904 | HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), | ||
15905 | { } /* end */ | ||
15906 | }; | ||
15907 | |||
15852 | static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec) | 15908 | static void alc662_lenovo_101e_ispeaker_automute(struct hda_codec *codec) |
15853 | { | 15909 | { |
15854 | unsigned int present; | 15910 | unsigned int present; |
@@ -16360,6 +16416,8 @@ static const char *alc662_models[ALC662_MODEL_LAST] = { | |||
16360 | 16416 | ||
16361 | static struct snd_pci_quirk alc662_cfg_tbl[] = { | 16417 | static struct snd_pci_quirk alc662_cfg_tbl[] = { |
16362 | SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), | 16418 | SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_ECS), |
16419 | SND_PCI_QUIRK(0x1028, 0x02d6, "DELL", ALC272_DELL), | ||
16420 | SND_PCI_QUIRK(0x1028, 0x02f4, "DELL ZM1", ALC272_DELL_ZM1), | ||
16363 | SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), | 16421 | SND_PCI_QUIRK(0x1043, 0x1000, "ASUS N50Vm", ALC663_ASUS_MODE1), |
16364 | SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), | 16422 | SND_PCI_QUIRK(0x1043, 0x1092, "ASUS NB", ALC663_ASUS_MODE3), |
16365 | SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), | 16423 | SND_PCI_QUIRK(0x1043, 0x11c3, "ASUS M70V", ALC663_ASUS_MODE3), |
@@ -16372,26 +16430,36 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
16372 | SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), | 16430 | SND_PCI_QUIRK(0x1043, 0x1763, "ASUS NB", ALC663_ASUS_MODE6), |
16373 | SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), | 16431 | SND_PCI_QUIRK(0x1043, 0x1765, "ASUS NB", ALC663_ASUS_MODE6), |
16374 | SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), | 16432 | SND_PCI_QUIRK(0x1043, 0x1783, "ASUS NB", ALC662_ASUS_MODE2), |
16433 | SND_PCI_QUIRK(0x1043, 0x17b3, "ASUS F70SL", ALC663_ASUS_MODE3), | ||
16434 | SND_PCI_QUIRK(0x1043, 0x17c3, "ASUS UX20", ALC663_ASUS_M51VA), | ||
16435 | SND_PCI_QUIRK(0x1043, 0x17f3, "ASUS X58LE", ALC662_ASUS_MODE2), | ||
16375 | SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), | 16436 | SND_PCI_QUIRK(0x1043, 0x1813, "ASUS NB", ALC662_ASUS_MODE2), |
16376 | SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), | 16437 | SND_PCI_QUIRK(0x1043, 0x1823, "ASUS NB", ALC663_ASUS_MODE5), |
16377 | SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), | 16438 | SND_PCI_QUIRK(0x1043, 0x1833, "ASUS NB", ALC663_ASUS_MODE6), |
16378 | SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), | 16439 | SND_PCI_QUIRK(0x1043, 0x1843, "ASUS NB", ALC662_ASUS_MODE2), |
16440 | SND_PCI_QUIRK(0x1043, 0x1853, "ASUS F50Z", ALC663_ASUS_MODE1), | ||
16379 | SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), | 16441 | SND_PCI_QUIRK(0x1043, 0x1864, "ASUS NB", ALC662_ASUS_MODE2), |
16380 | SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), | 16442 | SND_PCI_QUIRK(0x1043, 0x1876, "ASUS NB", ALC662_ASUS_MODE2), |
16381 | SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), | 16443 | SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M51VA", ALC663_ASUS_M51VA), |
16382 | /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ | 16444 | /*SND_PCI_QUIRK(0x1043, 0x1878, "ASUS M50Vr", ALC663_ASUS_MODE1),*/ |
16383 | SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), | 16445 | SND_PCI_QUIRK(0x1043, 0x1893, "ASUS M50Vm", ALC663_ASUS_MODE3), |
16384 | SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), | 16446 | SND_PCI_QUIRK(0x1043, 0x1894, "ASUS X55", ALC663_ASUS_MODE3), |
16447 | SND_PCI_QUIRK(0x1043, 0x18b3, "ASUS N80Vc", ALC663_ASUS_MODE1), | ||
16448 | SND_PCI_QUIRK(0x1043, 0x18d3, "ASUS N81Te", ALC663_ASUS_MODE1), | ||
16449 | SND_PCI_QUIRK(0x1043, 0x18f3, "ASUS N505Tp", ALC663_ASUS_MODE1), | ||
16385 | SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), | 16450 | SND_PCI_QUIRK(0x1043, 0x1903, "ASUS F5GL", ALC663_ASUS_MODE1), |
16386 | SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), | 16451 | SND_PCI_QUIRK(0x1043, 0x1913, "ASUS NB", ALC662_ASUS_MODE2), |
16387 | SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), | 16452 | SND_PCI_QUIRK(0x1043, 0x1933, "ASUS F80Q", ALC662_ASUS_MODE2), |
16453 | SND_PCI_QUIRK(0x1043, 0x1943, "ASUS Vx3V", ALC663_ASUS_MODE1), | ||
16388 | SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), | 16454 | SND_PCI_QUIRK(0x1043, 0x1953, "ASUS NB", ALC663_ASUS_MODE1), |
16389 | SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), | 16455 | SND_PCI_QUIRK(0x1043, 0x1963, "ASUS X71C", ALC663_ASUS_MODE3), |
16456 | SND_PCI_QUIRK(0x1043, 0x1983, "ASUS N5051A", ALC663_ASUS_MODE1), | ||
16390 | SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), | 16457 | SND_PCI_QUIRK(0x1043, 0x1993, "ASUS N20", ALC663_ASUS_MODE1), |
16391 | SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), | 16458 | SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS G50V", ALC663_ASUS_G50V), |
16392 | /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ | 16459 | /*SND_PCI_QUIRK(0x1043, 0x19a3, "ASUS NB", ALC663_ASUS_MODE1),*/ |
16393 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), | 16460 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS F7Z", ALC663_ASUS_MODE1), |
16394 | SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), | 16461 | SND_PCI_QUIRK(0x1043, 0x19c3, "ASUS F5Z/F6x", ALC662_ASUS_MODE2), |
16462 | SND_PCI_QUIRK(0x1043, 0x19d3, "ASUS NB", ALC663_ASUS_M51VA), | ||
16395 | SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), | 16463 | SND_PCI_QUIRK(0x1043, 0x19e3, "ASUS NB", ALC663_ASUS_MODE1), |
16396 | SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), | 16464 | SND_PCI_QUIRK(0x1043, 0x19f3, "ASUS NB", ALC663_ASUS_MODE4), |
16397 | SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), | 16465 | SND_PCI_QUIRK(0x1043, 0x8290, "ASUS P5GC-MX", ALC662_3ST_6ch_DIG), |
@@ -16403,6 +16471,7 @@ static struct snd_pci_quirk alc662_cfg_tbl[] = { | |||
16403 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", | 16471 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte 945GCM-S2L", |
16404 | ALC662_3ST_6ch_DIG), | 16472 | ALC662_3ST_6ch_DIG), |
16405 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), | 16473 | SND_PCI_QUIRK(0x1565, 0x820f, "Biostar TA780G M2+", ALC662_3ST_6ch_DIG), |
16474 | SND_PCI_QUIRK(0x1631, 0xc10c, "PB RS65", ALC663_ASUS_M51VA), | ||
16406 | SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo", ALC662_LENOVO_101E), | 16475 | SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo", ALC662_LENOVO_101E), |
16407 | SND_PCI_QUIRK(0x1849, 0x3662, "ASROCK K10N78FullHD-hSLI R3.0", | 16476 | SND_PCI_QUIRK(0x1849, 0x3662, "ASROCK K10N78FullHD-hSLI R3.0", |
16408 | ALC662_3ST_6ch_DIG), | 16477 | ALC662_3ST_6ch_DIG), |
@@ -16640,6 +16709,36 @@ static struct alc_config_preset alc662_presets[] = { | |||
16640 | .unsol_event = alc663_mode6_unsol_event, | 16709 | .unsol_event = alc663_mode6_unsol_event, |
16641 | .init_hook = alc663_mode6_inithook, | 16710 | .init_hook = alc663_mode6_inithook, |
16642 | }, | 16711 | }, |
16712 | [ALC272_DELL] = { | ||
16713 | .mixers = { alc663_m51va_mixer }, | ||
16714 | .cap_mixer = alc272_auto_capture_mixer, | ||
16715 | .init_verbs = { alc662_init_verbs, alc272_dell_init_verbs }, | ||
16716 | .num_dacs = ARRAY_SIZE(alc272_dac_nids), | ||
16717 | .dac_nids = alc662_dac_nids, | ||
16718 | .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), | ||
16719 | .adc_nids = alc272_adc_nids, | ||
16720 | .num_adc_nids = ARRAY_SIZE(alc272_adc_nids), | ||
16721 | .capsrc_nids = alc272_capsrc_nids, | ||
16722 | .channel_mode = alc662_3ST_2ch_modes, | ||
16723 | .input_mux = &alc663_m51va_capture_source, | ||
16724 | .unsol_event = alc663_m51va_unsol_event, | ||
16725 | .init_hook = alc663_m51va_inithook, | ||
16726 | }, | ||
16727 | [ALC272_DELL_ZM1] = { | ||
16728 | .mixers = { alc663_m51va_mixer }, | ||
16729 | .cap_mixer = alc662_auto_capture_mixer, | ||
16730 | .init_verbs = { alc662_init_verbs, alc272_dell_zm1_init_verbs }, | ||
16731 | .num_dacs = ARRAY_SIZE(alc272_dac_nids), | ||
16732 | .dac_nids = alc662_dac_nids, | ||
16733 | .num_channel_mode = ARRAY_SIZE(alc662_3ST_2ch_modes), | ||
16734 | .adc_nids = alc662_adc_nids, | ||
16735 | .num_adc_nids = ARRAY_SIZE(alc662_adc_nids), | ||
16736 | .capsrc_nids = alc662_capsrc_nids, | ||
16737 | .channel_mode = alc662_3ST_2ch_modes, | ||
16738 | .input_mux = &alc663_m51va_capture_source, | ||
16739 | .unsol_event = alc663_m51va_unsol_event, | ||
16740 | .init_hook = alc663_m51va_inithook, | ||
16741 | }, | ||
16643 | }; | 16742 | }; |
16644 | 16743 | ||
16645 | 16744 | ||
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 917bc5d3ac2..d2fd8ef6aef 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -150,6 +150,7 @@ enum { | |||
150 | STAC_D965_REF, | 150 | STAC_D965_REF, |
151 | STAC_D965_3ST, | 151 | STAC_D965_3ST, |
152 | STAC_D965_5ST, | 152 | STAC_D965_5ST, |
153 | STAC_D965_5ST_NO_FP, | ||
153 | STAC_DELL_3ST, | 154 | STAC_DELL_3ST, |
154 | STAC_DELL_BIOS, | 155 | STAC_DELL_BIOS, |
155 | STAC_927X_MODELS | 156 | STAC_927X_MODELS |
@@ -2154,6 +2155,13 @@ static unsigned int d965_5st_pin_configs[14] = { | |||
2154 | 0x40000100, 0x40000100 | 2155 | 0x40000100, 0x40000100 |
2155 | }; | 2156 | }; |
2156 | 2157 | ||
2158 | static unsigned int d965_5st_no_fp_pin_configs[14] = { | ||
2159 | 0x40000100, 0x40000100, 0x0181304e, 0x01014010, | ||
2160 | 0x01a19040, 0x01011012, 0x01016011, 0x40000100, | ||
2161 | 0x40000100, 0x40000100, 0x40000100, 0x01442070, | ||
2162 | 0x40000100, 0x40000100 | ||
2163 | }; | ||
2164 | |||
2157 | static unsigned int dell_3st_pin_configs[14] = { | 2165 | static unsigned int dell_3st_pin_configs[14] = { |
2158 | 0x02211230, 0x02a11220, 0x01a19040, 0x01114210, | 2166 | 0x02211230, 0x02a11220, 0x01a19040, 0x01114210, |
2159 | 0x01111212, 0x01116211, 0x01813050, 0x01112214, | 2167 | 0x01111212, 0x01116211, 0x01813050, 0x01112214, |
@@ -2166,6 +2174,7 @@ static unsigned int *stac927x_brd_tbl[STAC_927X_MODELS] = { | |||
2166 | [STAC_D965_REF] = ref927x_pin_configs, | 2174 | [STAC_D965_REF] = ref927x_pin_configs, |
2167 | [STAC_D965_3ST] = d965_3st_pin_configs, | 2175 | [STAC_D965_3ST] = d965_3st_pin_configs, |
2168 | [STAC_D965_5ST] = d965_5st_pin_configs, | 2176 | [STAC_D965_5ST] = d965_5st_pin_configs, |
2177 | [STAC_D965_5ST_NO_FP] = d965_5st_no_fp_pin_configs, | ||
2169 | [STAC_DELL_3ST] = dell_3st_pin_configs, | 2178 | [STAC_DELL_3ST] = dell_3st_pin_configs, |
2170 | [STAC_DELL_BIOS] = NULL, | 2179 | [STAC_DELL_BIOS] = NULL, |
2171 | }; | 2180 | }; |
@@ -2176,6 +2185,7 @@ static const char *stac927x_models[STAC_927X_MODELS] = { | |||
2176 | [STAC_D965_REF] = "ref", | 2185 | [STAC_D965_REF] = "ref", |
2177 | [STAC_D965_3ST] = "3stack", | 2186 | [STAC_D965_3ST] = "3stack", |
2178 | [STAC_D965_5ST] = "5stack", | 2187 | [STAC_D965_5ST] = "5stack", |
2188 | [STAC_D965_5ST_NO_FP] = "5stack-no-fp", | ||
2179 | [STAC_DELL_3ST] = "dell-3stack", | 2189 | [STAC_DELL_3ST] = "dell-3stack", |
2180 | [STAC_DELL_BIOS] = "dell-bios", | 2190 | [STAC_DELL_BIOS] = "dell-bios", |
2181 | }; | 2191 | }; |
@@ -4079,7 +4089,12 @@ static int stac92xx_init(struct hda_codec *codec) | |||
4079 | pinctl = snd_hda_codec_read(codec, nid, 0, | 4089 | pinctl = snd_hda_codec_read(codec, nid, 0, |
4080 | AC_VERB_GET_PIN_WIDGET_CONTROL, 0); | 4090 | AC_VERB_GET_PIN_WIDGET_CONTROL, 0); |
4081 | /* if PINCTL already set then skip */ | 4091 | /* if PINCTL already set then skip */ |
4082 | if (!(pinctl & AC_PINCTL_IN_EN)) { | 4092 | /* Also, if both INPUT and OUTPUT are set, |
4093 | * it must be a BIOS bug; need to override, too | ||
4094 | */ | ||
4095 | if (!(pinctl & AC_PINCTL_IN_EN) || | ||
4096 | (pinctl & AC_PINCTL_OUT_EN)) { | ||
4097 | pinctl &= ~AC_PINCTL_OUT_EN; | ||
4083 | pinctl |= AC_PINCTL_IN_EN; | 4098 | pinctl |= AC_PINCTL_IN_EN; |
4084 | stac92xx_auto_set_pinctl(codec, nid, | 4099 | stac92xx_auto_set_pinctl(codec, nid, |
4085 | pinctl); | 4100 | pinctl); |
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 8042d539889..173bebf9f51 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -2751,11 +2751,12 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip) | |||
2751 | if (pos == 0) { | 2751 | if (pos == 0) { |
2752 | snd_printk(KERN_ERR "intel8x0: measure - unreliable DMA position..\n"); | 2752 | snd_printk(KERN_ERR "intel8x0: measure - unreliable DMA position..\n"); |
2753 | __retry: | 2753 | __retry: |
2754 | if (attempt < 2) { | 2754 | if (attempt < 3) { |
2755 | msleep(300); | ||
2755 | attempt++; | 2756 | attempt++; |
2756 | goto __again; | 2757 | goto __again; |
2757 | } | 2758 | } |
2758 | return; | 2759 | goto __end; |
2759 | } | 2760 | } |
2760 | 2761 | ||
2761 | pos /= 4; | 2762 | pos /= 4; |
@@ -2782,6 +2783,7 @@ static void __devinit intel8x0_measure_ac97_clock(struct intel8x0 *chip) | |||
2782 | else if (pos < 47500 || pos > 48500) | 2783 | else if (pos < 47500 || pos > 48500) |
2783 | /* not 48000Hz, tuning the clock.. */ | 2784 | /* not 48000Hz, tuning the clock.. */ |
2784 | chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos; | 2785 | chip->ac97_bus->clock = (chip->ac97_bus->clock * 48000) / pos; |
2786 | __end: | ||
2785 | printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock); | 2787 | printk(KERN_INFO "intel8x0: clocking to %d\n", chip->ac97_bus->clock); |
2786 | snd_ac97_update_power(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 0); | 2788 | snd_ac97_update_power(chip->ac97[0], AC97_PCM_FRONT_DAC_RATE, 0); |
2787 | } | 2789 | } |
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c index 8b79969034b..7cc38a11e99 100644 --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c | |||
@@ -1238,7 +1238,8 @@ static struct snd_pcm_hardware snd_korg1212_playback_info = | |||
1238 | { | 1238 | { |
1239 | .info = (SNDRV_PCM_INFO_MMAP | | 1239 | .info = (SNDRV_PCM_INFO_MMAP | |
1240 | SNDRV_PCM_INFO_MMAP_VALID | | 1240 | SNDRV_PCM_INFO_MMAP_VALID | |
1241 | SNDRV_PCM_INFO_INTERLEAVED), | 1241 | SNDRV_PCM_INFO_INTERLEAVED | |
1242 | SNDRV_PCM_INFO_BATCH), | ||
1242 | .formats = SNDRV_PCM_FMTBIT_S16_LE, | 1243 | .formats = SNDRV_PCM_FMTBIT_S16_LE, |
1243 | .rates = (SNDRV_PCM_RATE_44100 | | 1244 | .rates = (SNDRV_PCM_RATE_44100 | |
1244 | SNDRV_PCM_RATE_48000), | 1245 | SNDRV_PCM_RATE_48000), |
@@ -1258,7 +1259,8 @@ static struct snd_pcm_hardware snd_korg1212_capture_info = | |||
1258 | { | 1259 | { |
1259 | .info = (SNDRV_PCM_INFO_MMAP | | 1260 | .info = (SNDRV_PCM_INFO_MMAP | |
1260 | SNDRV_PCM_INFO_MMAP_VALID | | 1261 | SNDRV_PCM_INFO_MMAP_VALID | |
1261 | SNDRV_PCM_INFO_INTERLEAVED), | 1262 | SNDRV_PCM_INFO_INTERLEAVED | |
1263 | SNDRV_PCM_INFO_BATCH), | ||
1262 | .formats = SNDRV_PCM_FMTBIT_S16_LE, | 1264 | .formats = SNDRV_PCM_FMTBIT_S16_LE, |
1263 | .rates = (SNDRV_PCM_RATE_44100 | | 1265 | .rates = (SNDRV_PCM_RATE_44100 | |
1264 | SNDRV_PCM_RATE_48000), | 1266 | SNDRV_PCM_RATE_48000), |
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c index 6f1034417a0..e51a5ef1954 100644 --- a/sound/pci/riptide/riptide.c +++ b/sound/pci/riptide/riptide.c | |||
@@ -889,7 +889,7 @@ static int sendcmd(struct cmdif *cif, u32 flags, u32 cmd, u32 parm, | |||
889 | spin_lock_irqsave(&cif->lock, irqflags); | 889 | spin_lock_irqsave(&cif->lock, irqflags); |
890 | while (i++ < CMDIF_TIMEOUT && !IS_READY(cif->hwport)) | 890 | while (i++ < CMDIF_TIMEOUT && !IS_READY(cif->hwport)) |
891 | udelay(10); | 891 | udelay(10); |
892 | if (i >= CMDIF_TIMEOUT) { | 892 | if (i > CMDIF_TIMEOUT) { |
893 | err = -EBUSY; | 893 | err = -EBUSY; |
894 | goto errout; | 894 | goto errout; |
895 | } | 895 | } |
@@ -907,8 +907,10 @@ static int sendcmd(struct cmdif *cif, u32 flags, u32 cmd, u32 parm, | |||
907 | WRITE_PORT_ULONG(cmdport->data1, cmd); /* write cmd */ | 907 | WRITE_PORT_ULONG(cmdport->data1, cmd); /* write cmd */ |
908 | if ((flags & RESP) && ret) { | 908 | if ((flags & RESP) && ret) { |
909 | while (!IS_DATF(cmdport) && | 909 | while (!IS_DATF(cmdport) && |
910 | time++ < CMDIF_TIMEOUT) | 910 | time < CMDIF_TIMEOUT) { |
911 | udelay(10); | 911 | udelay(10); |
912 | time++; | ||
913 | } | ||
912 | if (time < CMDIF_TIMEOUT) { /* read response */ | 914 | if (time < CMDIF_TIMEOUT) { /* read response */ |
913 | ret->retlongs[0] = | 915 | ret->retlongs[0] = |
914 | READ_PORT_ULONG(cmdport->data1); | 916 | READ_PORT_ULONG(cmdport->data1); |
@@ -1454,7 +1456,7 @@ static int snd_riptide_trigger(struct snd_pcm_substream *substream, int cmd) | |||
1454 | SEND_GPOS(cif, 0, data->id, &rptr); | 1456 | SEND_GPOS(cif, 0, data->id, &rptr); |
1455 | udelay(1); | 1457 | udelay(1); |
1456 | } while (i != rptr.retlongs[1] && j++ < MAX_WRITE_RETRY); | 1458 | } while (i != rptr.retlongs[1] && j++ < MAX_WRITE_RETRY); |
1457 | if (j >= MAX_WRITE_RETRY) | 1459 | if (j > MAX_WRITE_RETRY) |
1458 | snd_printk(KERN_ERR "Riptide: Could not stop stream!"); | 1460 | snd_printk(KERN_ERR "Riptide: Could not stop stream!"); |
1459 | break; | 1461 | break; |
1460 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: | 1462 | case SNDRV_PCM_TRIGGER_PAUSE_PUSH: |
@@ -1783,7 +1785,7 @@ snd_riptide_codec_write(struct snd_ac97 *ac97, unsigned short reg, | |||
1783 | SEND_SACR(cif, val, reg); | 1785 | SEND_SACR(cif, val, reg); |
1784 | SEND_RACR(cif, reg, &rptr); | 1786 | SEND_RACR(cif, reg, &rptr); |
1785 | } while (rptr.retwords[1] != val && i++ < MAX_WRITE_RETRY); | 1787 | } while (rptr.retwords[1] != val && i++ < MAX_WRITE_RETRY); |
1786 | if (i == MAX_WRITE_RETRY) | 1788 | if (i > MAX_WRITE_RETRY) |
1787 | snd_printdd("Write AC97 reg failed\n"); | 1789 | snd_printdd("Write AC97 reg failed\n"); |
1788 | } | 1790 | } |
1789 | 1791 | ||
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 809b233dd4a..1ef58c51c21 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c | |||
@@ -1687,7 +1687,7 @@ static int snd_via8233_pcmdxs_volume_put(struct snd_kcontrol *kcontrol, | |||
1687 | return change; | 1687 | return change; |
1688 | } | 1688 | } |
1689 | 1689 | ||
1690 | static const DECLARE_TLV_DB_SCALE(db_scale_dxs, -9450, 150, 1); | 1690 | static const DECLARE_TLV_DB_SCALE(db_scale_dxs, -4650, 150, 1); |
1691 | 1691 | ||
1692 | static struct snd_kcontrol_new snd_via8233_pcmdxs_volume_control __devinitdata = { | 1692 | static struct snd_kcontrol_new snd_via8233_pcmdxs_volume_control __devinitdata = { |
1693 | .name = "PCM Playback Volume", | 1693 | .name = "PCM Playback Volume", |