diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-05-23 17:50:27 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-05-24 18:23:35 +0200 |
commit | bc9b56238eedda865070dcaed6694d65b517c8d6 (patch) | |
tree | b8bc9876c4f1ad588439f585f2253a1b09d42410 /sound/pci | |
parent | b9e16bc548600124da9d24186364ee8d06040569 (diff) | |
download | kernel_samsung_smdk4412-bc9b56238eedda865070dcaed6694d65b517c8d6.zip kernel_samsung_smdk4412-bc9b56238eedda865070dcaed6694d65b517c8d6.tar.gz kernel_samsung_smdk4412-bc9b56238eedda865070dcaed6694d65b517c8d6.tar.bz2 |
[ALSA] hda - Fix noise on VT1708 codec
We get quite noisy output on the right channel on VT1708 codec
when 24bit samples are used. Suppress the 24bit support until any
real fix is found.
https://bugzilla.novell.com/show_bug.cgi?id=390473
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci')
-rw-r--r-- | sound/pci/hda/patch_via.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 52b1d81..e7e4352 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 = { }, }; +static struct hda_pcm_stream vt1708_pcm_analog_s16_playback = { + .substreams = 1, + .channels_min = 2, + .channels_max = 8, + .nid = 0x10, /* NID to query formats and rates */ + /* We got noisy outputs on the right channel on VT1708 when + * 24bit samples are used. Until any workaround is found, + * disable the 24bit format, so far. + */ + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .ops = { + .open = via_playback_pcm_open, + .prepare = via_playback_pcm_prepare, + .cleanup = via_playback_pcm_cleanup + }, +}; + static struct hda_pcm_stream vt1708_pcm_analog_capture = { .substreams = 2, .channels_min = 2, @@ -899,6 +916,9 @@ static int patch_vt1708(struct hda_codec *codec) spec->stream_name_analog = "VT1708 Analog"; spec->stream_analog_playback = &vt1708_pcm_analog_playback; + /* disable 32bit format on VT1708 */ + if (codec->vendor_id == 0x11061708) + spec->stream_analog_playback = &vt1708_pcm_analog_s16_playback; spec->stream_analog_capture = &vt1708_pcm_analog_capture; spec->stream_name_digital = "VT1708 Digital"; |