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 24 /* default timer freq for PC-Speaker: 18643 Hz */ 25 25 #define DIV_18KHZ 64 26 26 #define MAX_DIV DIV_18KHZ 27 - #define CUR_DIV() (MAX_DIV >> chip->treble) 27 + #define CALC_DIV(d) (MAX_DIV >> (d)) 28 + #define CUR_DIV() CALC_DIV(chip->treble) 28 29 #define PCSP_MAX_TREBLE 1 29 30 30 31 /* unfortunately, with hrtimers 37KHz does not work very well :( */ ··· 37 36 #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) 38 37 #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) 39 38 #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) 40 - #define PCSP_RATE() (PIT_TICK_RATE / CUR_DIV()) 39 + #define PCSP_CALC_RATE(i) (PIT_TICK_RATE / CALC_DIV(i)) 40 + #define PCSP_RATE() PCSP_CALC_RATE(chip->treble) 41 41 #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE 42 42 #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE 43 43 #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1)
+2 -1
sound/drivers/pcsp/pcsp_mixer.c
··· 50 50 uinfo->value.enumerated.items = chip->max_treble + 1; 51 51 if (uinfo->value.enumerated.item > chip->max_treble) 52 52 uinfo->value.enumerated.item = chip->max_treble; 53 - sprintf(uinfo->value.enumerated.name, "%d", PCSP_RATE()); 53 + sprintf(uinfo->value.enumerated.name, "%d", 54 + PCSP_CALC_RATE(uinfo->value.enumerated.item)); 54 55 return 0; 55 56 } 56 57
+1
sound/pci/hda/patch_analog.c
··· 2858 2858 static struct snd_pci_quirk ad1988_cfg_tbl[] = { 2859 2859 SND_PCI_QUIRK(0x1043, 0x81ec, "Asus P5B-DLX", AD1988_6STACK_DIG), 2860 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), 2861 2862 {} 2862 2863 }; 2863 2864
+3
sound/pci/hda/patch_realtek.c
··· 853 853 case 0x10ec0269: 854 854 case 0x10ec0862: 855 855 case 0x10ec0662: 856 + case 0x10ec0889: 856 857 snd_hda_codec_write(codec, 0x14, 0, 857 858 AC_VERB_SET_EAPD_BTLENABLE, 2); 858 859 snd_hda_codec_write(codec, 0x15, 0, ··· 878 877 case 0x10ec0883: 879 878 case 0x10ec0885: 880 879 case 0x10ec0888: 880 + case 0x10ec0889: 881 881 snd_hda_codec_write(codec, 0x20, 0, 882 882 AC_VERB_SET_COEF_INDEX, 7); 883 883 tmp = snd_hda_codec_read(codec, 0x20, 0, ··· 7745 7743 SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), 7746 7744 SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), 7747 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), 7748 7747 SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), 7749 7748 SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), 7750 7749 SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD),
+1 -1
sound/pci/hda/patch_sigmatel.c
··· 840 840 static struct snd_kcontrol_new stac925x_mixer[] = { 841 841 STAC_INPUT_SOURCE(1), 842 842 HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), 843 - HDA_CODEC_MUTE("Capture Switch", 0x09, 0, HDA_OUTPUT), 843 + HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), 844 844 HDA_CODEC_VOLUME("Capture Mux Volume", 0x0f, 0, HDA_OUTPUT), 845 845 { } /* end */ 846 846 };
+20
sound/pci/hda/patch_via.c
··· 447 447 }, 448 448 }; 449 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 + 450 467 static struct hda_pcm_stream vt1708_pcm_analog_capture = { 451 468 .substreams = 2, 452 469 .channels_min = 2, ··· 916 899 917 900 spec->stream_name_analog = "VT1708 Analog"; 918 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; 919 905 spec->stream_analog_capture = &vt1708_pcm_analog_capture; 920 906 921 907 spec->stream_name_digital = "VT1708 Digital";