diff options
Diffstat (limited to 'sound/pci')
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 24 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 7 | ||||
| -rw-r--r-- | sound/pci/oxygen/hifier.c | 4 | ||||
| -rw-r--r-- | sound/pci/oxygen/oxygen.c | 4 |
4 files changed, 35 insertions, 4 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 909f1c101c95..66025161bd69 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -6197,7 +6197,6 @@ static struct snd_pci_quirk alc882_cfg_tbl[] = { | |||
| 6197 | SND_PCI_QUIRK(0x1043, 0x817f, "Asus P5LD2", ALC882_6ST_DIG), | 6197 | SND_PCI_QUIRK(0x1043, 0x817f, "Asus P5LD2", ALC882_6ST_DIG), |
| 6198 | SND_PCI_QUIRK(0x1043, 0x81d8, "Asus P5WD", ALC882_6ST_DIG), | 6198 | SND_PCI_QUIRK(0x1043, 0x81d8, "Asus P5WD", ALC882_6ST_DIG), |
| 6199 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC882_6ST_DIG), | 6199 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC882_6ST_DIG), |
| 6200 | SND_PCI_QUIRK(0x106b, 0x00a0, "Apple iMac 24''", ALC885_IMAC24), | ||
| 6201 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte P35 DS3R", ALC882_6ST_DIG), | 6200 | SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte P35 DS3R", ALC882_6ST_DIG), |
| 6202 | SND_PCI_QUIRK(0x1462, 0x28fb, "Targa T8", ALC882_TARGA), /* MSI-1049 T8 */ | 6201 | SND_PCI_QUIRK(0x1462, 0x28fb, "Targa T8", ALC882_TARGA), /* MSI-1049 T8 */ |
| 6203 | SND_PCI_QUIRK(0x1462, 0x6668, "MSI", ALC882_6ST_DIG), | 6202 | SND_PCI_QUIRK(0x1462, 0x6668, "MSI", ALC882_6ST_DIG), |
| @@ -14067,6 +14066,13 @@ static struct hda_verb alc662_auto_init_verbs[] = { | |||
| 14067 | { } | 14066 | { } |
| 14068 | }; | 14067 | }; |
| 14069 | 14068 | ||
| 14069 | /* additional verbs for ALC663 */ | ||
| 14070 | static struct hda_verb alc663_auto_init_verbs[] = { | ||
| 14071 | {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(0)}, | ||
| 14072 | {0x0f, AC_VERB_SET_AMP_GAIN_MUTE, AMP_IN_UNMUTE(1)}, | ||
| 14073 | { } | ||
| 14074 | }; | ||
| 14075 | |||
| 14070 | static struct hda_verb alc663_m51va_init_verbs[] = { | 14076 | static struct hda_verb alc663_m51va_init_verbs[] = { |
| 14071 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | 14077 | {0x21, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, |
| 14072 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | 14078 | {0x21, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, |
| @@ -14595,6 +14601,14 @@ static int alc662_auto_create_extra_out(struct alc_spec *spec, hda_nid_t pin, | |||
| 14595 | if (!pin) | 14601 | if (!pin) |
| 14596 | return 0; | 14602 | return 0; |
| 14597 | 14603 | ||
| 14604 | if (pin == 0x17) { | ||
| 14605 | /* ALC663 has a mono output pin on 0x17 */ | ||
| 14606 | sprintf(name, "%s Playback Switch", pfx); | ||
| 14607 | err = add_control(spec, ALC_CTL_WIDGET_MUTE, name, | ||
| 14608 | HDA_COMPOSE_AMP_VAL(pin, 2, 0, HDA_OUTPUT)); | ||
| 14609 | return err; | ||
| 14610 | } | ||
| 14611 | |||
| 14598 | if (alc880_is_fixed_pin(pin)) { | 14612 | if (alc880_is_fixed_pin(pin)) { |
| 14599 | nid = alc880_idx_to_dac(alc880_fixed_pin_idx(pin)); | 14613 | nid = alc880_idx_to_dac(alc880_fixed_pin_idx(pin)); |
| 14600 | /* printk("DAC nid=%x\n",nid); */ | 14614 | /* printk("DAC nid=%x\n",nid); */ |
| @@ -14765,6 +14779,14 @@ static int alc662_parse_auto_config(struct hda_codec *codec) | |||
| 14765 | spec->input_mux = &spec->private_imux; | 14779 | spec->input_mux = &spec->private_imux; |
| 14766 | 14780 | ||
| 14767 | spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs; | 14781 | spec->init_verbs[spec->num_init_verbs++] = alc662_auto_init_verbs; |
| 14782 | if (codec->vendor_id == 0x10ec0663) | ||
| 14783 | spec->init_verbs[spec->num_init_verbs++] = | ||
| 14784 | alc663_auto_init_verbs; | ||
| 14785 | |||
| 14786 | err = alc_auto_add_mic_boost(codec); | ||
| 14787 | if (err < 0) | ||
| 14788 | return err; | ||
| 14789 | |||
| 14768 | spec->mixers[spec->num_mixers] = alc662_capture_mixer; | 14790 | spec->mixers[spec->num_mixers] = alc662_capture_mixer; |
| 14769 | spec->num_mixers++; | 14791 | spec->num_mixers++; |
| 14770 | return 1; | 14792 | return 1; |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 7fdafcb0015d..f3da621f25c5 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -560,8 +560,9 @@ static struct hda_verb dell_eq_core_init[] = { | |||
| 560 | }; | 560 | }; |
| 561 | 561 | ||
| 562 | static struct hda_verb dell_m6_core_init[] = { | 562 | static struct hda_verb dell_m6_core_init[] = { |
| 563 | /* set master volume and direct control */ | 563 | /* set master volume to max value without distortion |
| 564 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff}, | 564 | * and direct control */ |
| 565 | { 0x1f, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xec}, | ||
| 565 | /* setup audio connections */ | 566 | /* setup audio connections */ |
| 566 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, | 567 | { 0x0d, AC_VERB_SET_CONNECT_SEL, 0x00}, |
| 567 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, | 568 | { 0x0a, AC_VERB_SET_CONNECT_SEL, 0x01}, |
| @@ -1682,8 +1683,8 @@ static struct snd_pci_quirk stac927x_cfg_tbl[] = { | |||
| 1682 | /* Dell 3 stack systems with verb table in BIOS */ | 1683 | /* Dell 3 stack systems with verb table in BIOS */ |
| 1683 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01f3, "Dell Inspiron 1420", STAC_DELL_BIOS), | 1684 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x01f3, "Dell Inspiron 1420", STAC_DELL_BIOS), |
| 1684 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0227, "Dell Vostro 1400 ", STAC_DELL_BIOS), | 1685 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0227, "Dell Vostro 1400 ", STAC_DELL_BIOS), |
| 1685 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x022f, "Dell ", STAC_DELL_BIOS), | ||
| 1686 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x022e, "Dell ", STAC_DELL_BIOS), | 1686 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x022e, "Dell ", STAC_DELL_BIOS), |
| 1687 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x022f, "Dell Inspiron 1525", STAC_DELL_3ST), | ||
| 1687 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0242, "Dell ", STAC_DELL_BIOS), | 1688 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0242, "Dell ", STAC_DELL_BIOS), |
| 1688 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0243, "Dell ", STAC_DELL_BIOS), | 1689 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0243, "Dell ", STAC_DELL_BIOS), |
| 1689 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ff, "Dell ", STAC_DELL_BIOS), | 1690 | SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02ff, "Dell ", STAC_DELL_BIOS), |
diff --git a/sound/pci/oxygen/hifier.c b/sound/pci/oxygen/hifier.c index 7442460583dd..dad393ae040a 100644 --- a/sound/pci/oxygen/hifier.c +++ b/sound/pci/oxygen/hifier.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 18 | */ | 18 | */ |
| 19 | 19 | ||
| 20 | #include <linux/delay.h> | ||
| 20 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
| 21 | #include <sound/control.h> | 22 | #include <sound/control.h> |
| 22 | #include <sound/core.h> | 23 | #include <sound/core.h> |
| @@ -107,6 +108,9 @@ static void set_ak4396_params(struct oxygen *chip, | |||
| 107 | else | 108 | else |
| 108 | value |= AK4396_DFS_QUAD; | 109 | value |= AK4396_DFS_QUAD; |
| 109 | data->ak4396_ctl2 = value; | 110 | data->ak4396_ctl2 = value; |
| 111 | |||
| 112 | msleep(1); /* wait for the new MCLK to become stable */ | ||
| 113 | |||
| 110 | ak4396_write(chip, AK4396_CONTROL_1, AK4396_DIF_24_MSB); | 114 | ak4396_write(chip, AK4396_CONTROL_1, AK4396_DIF_24_MSB); |
| 111 | ak4396_write(chip, AK4396_CONTROL_2, value); | 115 | ak4396_write(chip, AK4396_CONTROL_2, value); |
| 112 | ak4396_write(chip, AK4396_CONTROL_1, AK4396_DIF_24_MSB | AK4396_RSTN); | 116 | ak4396_write(chip, AK4396_CONTROL_1, AK4396_DIF_24_MSB | AK4396_RSTN); |
diff --git a/sound/pci/oxygen/oxygen.c b/sound/pci/oxygen/oxygen.c index 7c8ae31eb468..c5829d30ef86 100644 --- a/sound/pci/oxygen/oxygen.c +++ b/sound/pci/oxygen/oxygen.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | * GPIO 1 -> DFS1 of AK5385 | 28 | * GPIO 1 -> DFS1 of AK5385 |
| 29 | */ | 29 | */ |
| 30 | 30 | ||
| 31 | #include <linux/delay.h> | ||
| 31 | #include <linux/mutex.h> | 32 | #include <linux/mutex.h> |
| 32 | #include <linux/pci.h> | 33 | #include <linux/pci.h> |
| 33 | #include <sound/ac97_codec.h> | 34 | #include <sound/ac97_codec.h> |
| @@ -213,6 +214,9 @@ static void set_ak4396_params(struct oxygen *chip, | |||
| 213 | else | 214 | else |
| 214 | value |= AK4396_DFS_QUAD; | 215 | value |= AK4396_DFS_QUAD; |
| 215 | data->ak4396_ctl2 = value; | 216 | data->ak4396_ctl2 = value; |
| 217 | |||
| 218 | msleep(1); /* wait for the new MCLK to become stable */ | ||
| 219 | |||
| 216 | for (i = 0; i < 4; ++i) { | 220 | for (i = 0; i < 4; ++i) { |
| 217 | ak4396_write(chip, i, | 221 | ak4396_write(chip, i, |
| 218 | AK4396_CONTROL_1, AK4396_DIF_24_MSB); | 222 | AK4396_CONTROL_1, AK4396_DIF_24_MSB); |
