Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
[ALSA] hda - Fix capture mute Widget for stac9250/9251
[ALSA] snd-pcsp - fix pcsp_treble_info() to honour an item number
[ALSA] hda - Added support for Foxconn P35AX-S mainboard
[ALSA] hda - Fix COEF and EAPD in ALC889 auto-configuration mode
[ALSA] hda - Fix noise on VT1708 codec
[ALSA] hda - Add model for ASUS P5K-E/WIFI-AP

+31 -4
+4 -2
sound/drivers/pcsp/pcsp.h
··· 24 /* default timer freq for PC-Speaker: 18643 Hz */ 25 #define DIV_18KHZ 64 26 #define MAX_DIV DIV_18KHZ 27 - #define CUR_DIV() (MAX_DIV >> chip->treble) 28 #define PCSP_MAX_TREBLE 1 29 30 /* unfortunately, with hrtimers 37KHz does not work very well :( */ ··· 37 #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) 38 #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) 39 #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) 40 - #define PCSP_RATE() (PIT_TICK_RATE / CUR_DIV()) 41 #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE 42 #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE 43 #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1)
··· 24 /* default timer freq for PC-Speaker: 18643 Hz */ 25 #define DIV_18KHZ 64 26 #define MAX_DIV DIV_18KHZ 27 + #define CALC_DIV(d) (MAX_DIV >> (d)) 28 + #define CUR_DIV() CALC_DIV(chip->treble) 29 #define PCSP_MAX_TREBLE 1 30 31 /* unfortunately, with hrtimers 37KHz does not work very well :( */ ··· 36 #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) 37 #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) 38 #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) 39 + #define PCSP_CALC_RATE(i) (PIT_TICK_RATE / CALC_DIV(i)) 40 + #define PCSP_RATE() PCSP_CALC_RATE(chip->treble) 41 #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE 42 #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE 43 #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1)
+2 -1
sound/drivers/pcsp/pcsp_mixer.c
··· 50 uinfo->value.enumerated.items = chip->max_treble + 1; 51 if (uinfo->value.enumerated.item > chip->max_treble) 52 uinfo->value.enumerated.item = chip->max_treble; 53 - sprintf(uinfo->value.enumerated.name, "%d", PCSP_RATE()); 54 return 0; 55 } 56
··· 50 uinfo->value.enumerated.items = chip->max_treble + 1; 51 if (uinfo->value.enumerated.item > chip->max_treble) 52 uinfo->value.enumerated.item = chip->max_treble; 53 + sprintf(uinfo->value.enumerated.name, "%d", 54 + PCSP_CALC_RATE(uinfo->value.enumerated.item)); 55 return 0; 56 } 57
+1
sound/pci/hda/patch_analog.c
··· 2858 static struct snd_pci_quirk ad1988_cfg_tbl[] = { 2859 SND_PCI_QUIRK(0x1043, 0x81ec, "Asus P5B-DLX", AD1988_6STACK_DIG), 2860 SND_PCI_QUIRK(0x1043, 0x81f6, "Asus M2N-SLI", AD1988_6STACK_DIG), 2861 {} 2862 }; 2863
··· 2858 static struct snd_pci_quirk ad1988_cfg_tbl[] = { 2859 SND_PCI_QUIRK(0x1043, 0x81ec, "Asus P5B-DLX", AD1988_6STACK_DIG), 2860 SND_PCI_QUIRK(0x1043, 0x81f6, "Asus M2N-SLI", AD1988_6STACK_DIG), 2861 + SND_PCI_QUIRK(0x1043, 0x8277, "Asus P5K-E/WIFI-AP", AD1988_6STACK_DIG), 2862 {} 2863 }; 2864
+3
sound/pci/hda/patch_realtek.c
··· 853 case 0x10ec0269: 854 case 0x10ec0862: 855 case 0x10ec0662: 856 snd_hda_codec_write(codec, 0x14, 0, 857 AC_VERB_SET_EAPD_BTLENABLE, 2); 858 snd_hda_codec_write(codec, 0x15, 0, ··· 878 case 0x10ec0883: 879 case 0x10ec0885: 880 case 0x10ec0888: 881 snd_hda_codec_write(codec, 0x20, 0, 882 AC_VERB_SET_COEF_INDEX, 7); 883 tmp = snd_hda_codec_read(codec, 0x20, 0, ··· 7745 SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), 7746 SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), 7747 SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG), 7748 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), 7749 SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), 7750 SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD),
··· 853 case 0x10ec0269: 854 case 0x10ec0862: 855 case 0x10ec0662: 856 + case 0x10ec0889: 857 snd_hda_codec_write(codec, 0x14, 0, 858 AC_VERB_SET_EAPD_BTLENABLE, 2); 859 snd_hda_codec_write(codec, 0x15, 0, ··· 877 case 0x10ec0883: 878 case 0x10ec0885: 879 case 0x10ec0888: 880 + case 0x10ec0889: 881 snd_hda_codec_write(codec, 0x20, 0, 882 AC_VERB_SET_COEF_INDEX, 7); 883 tmp = snd_hda_codec_read(codec, 0x20, 0, ··· 7743 SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), 7744 SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), 7745 SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG), 7746 + SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), 7747 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), 7748 SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), 7749 SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD),
+1 -1
sound/pci/hda/patch_sigmatel.c
··· 840 static struct snd_kcontrol_new stac925x_mixer[] = { 841 STAC_INPUT_SOURCE(1), 842 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), 843 - HDA_CODEC_MUTE("Capture Switch", 0x09, 0, HDA_OUTPUT), 844 HDA_CODEC_VOLUME("Capture Mux Volume", 0x0f, 0, HDA_OUTPUT), 845 { } /* end */ 846 };
··· 840 static struct snd_kcontrol_new stac925x_mixer[] = { 841 STAC_INPUT_SOURCE(1), 842 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), 843 + HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), 844 HDA_CODEC_VOLUME("Capture Mux Volume", 0x0f, 0, HDA_OUTPUT), 845 { } /* end */ 846 };
+20
sound/pci/hda/patch_via.c
··· 447 }, 448 }; 449 450 static struct hda_pcm_stream vt1708_pcm_analog_capture = { 451 .substreams = 2, 452 .channels_min = 2, ··· 916 917 spec->stream_name_analog = "VT1708 Analog"; 918 spec->stream_analog_playback = &vt1708_pcm_analog_playback; 919 spec->stream_analog_capture = &vt1708_pcm_analog_capture; 920 921 spec->stream_name_digital = "VT1708 Digital";
··· 447 }, 448 }; 449 450 + static struct hda_pcm_stream vt1708_pcm_analog_s16_playback = { 451 + .substreams = 1, 452 + .channels_min = 2, 453 + .channels_max = 8, 454 + .nid = 0x10, /* NID to query formats and rates */ 455 + /* We got noisy outputs on the right channel on VT1708 when 456 + * 24bit samples are used. Until any workaround is found, 457 + * disable the 24bit format, so far. 458 + */ 459 + .formats = SNDRV_PCM_FMTBIT_S16_LE, 460 + .ops = { 461 + .open = via_playback_pcm_open, 462 + .prepare = via_playback_pcm_prepare, 463 + .cleanup = via_playback_pcm_cleanup 464 + }, 465 + }; 466 + 467 static struct hda_pcm_stream vt1708_pcm_analog_capture = { 468 .substreams = 2, 469 .channels_min = 2, ··· 899 900 spec->stream_name_analog = "VT1708 Analog"; 901 spec->stream_analog_playback = &vt1708_pcm_analog_playback; 902 + /* disable 32bit format on VT1708 */ 903 + if (codec->vendor_id == 0x11061708) 904 + spec->stream_analog_playback = &vt1708_pcm_analog_s16_playback; 905 spec->stream_analog_capture = &vt1708_pcm_analog_capture; 906 907 spec->stream_name_digital = "VT1708 Digital";