diff options
author | Atsushi Nemoto <anemo@mba.ocn.ne.jp> | 2008-03-17 09:36:24 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 06:00:26 -0400 |
commit | f5e09ef0985ff01af6b4a12954840467f153a41c (patch) | |
tree | 81e8db50126018fe3fefd4a11d2e166aca48138d /sound/spi/at73c213.c | |
parent | b32300a4ce78b4df92f33c455ffe644b36f0ff1a (diff) |
[ALSA] at73c213: Add constraints for periods value
The interrupt handler always provide runtime->period_size data, so it
works correctly only if buffer_size was a multiple of period_size.
This patch fixes periodic click noise.
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/spi/at73c213.c')
-rw-r--r-- | sound/spi/at73c213.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c index aa571152f034..09802e8a6fb8 100644 --- a/sound/spi/at73c213.c +++ b/sound/spi/at73c213.c | |||
@@ -210,7 +210,13 @@ static int snd_at73c213_pcm_open(struct snd_pcm_substream *substream) | |||
210 | { | 210 | { |
211 | struct snd_at73c213 *chip = snd_pcm_substream_chip(substream); | 211 | struct snd_at73c213 *chip = snd_pcm_substream_chip(substream); |
212 | struct snd_pcm_runtime *runtime = substream->runtime; | 212 | struct snd_pcm_runtime *runtime = substream->runtime; |
213 | int err; | ||
213 | 214 | ||
215 | /* ensure buffer_size is a multiple of period_size */ | ||
216 | err = snd_pcm_hw_constraint_integer(runtime, | ||
217 | SNDRV_PCM_HW_PARAM_PERIODS); | ||
218 | if (err < 0) | ||
219 | return err; | ||
214 | snd_at73c213_playback_hw.rate_min = chip->bitrate; | 220 | snd_at73c213_playback_hw.rate_min = chip->bitrate; |
215 | snd_at73c213_playback_hw.rate_max = chip->bitrate; | 221 | snd_at73c213_playback_hw.rate_max = chip->bitrate; |
216 | runtime->hw = snd_at73c213_playback_hw; | 222 | runtime->hw = snd_at73c213_playback_hw; |