aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_via.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 52b1d81a26f7..e7e43524f8c7 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -447,6 +447,23 @@ static struct hda_pcm_stream vt1708_pcm_analog_playback = {
447 }, 447 },
448}; 448};
449 449
450static 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
450static struct hda_pcm_stream vt1708_pcm_analog_capture = { 467static struct hda_pcm_stream vt1708_pcm_analog_capture = {
451 .substreams = 2, 468 .substreams = 2,
452 .channels_min = 2, 469 .channels_min = 2,
@@ -899,6 +916,9 @@ static int patch_vt1708(struct hda_codec *codec)
899 916
900 spec->stream_name_analog = "VT1708 Analog"; 917 spec->stream_name_analog = "VT1708 Analog";
901 spec->stream_analog_playback = &vt1708_pcm_analog_playback; 918 spec->stream_analog_playback = &vt1708_pcm_analog_playback;
919 /* disable 32bit format on VT1708 */
920 if (codec->vendor_id == 0x11061708)
921 spec->stream_analog_playback = &vt1708_pcm_analog_s16_playback;
902 spec->stream_analog_capture = &vt1708_pcm_analog_capture; 922 spec->stream_analog_capture = &vt1708_pcm_analog_capture;
903 923
904 spec->stream_name_digital = "VT1708 Digital"; 924 spec->stream_name_digital = "VT1708 Digital";