Messages in this thread Patch in this message | | | Date | Mon, 17 Mar 2008 22:00:27 +0900 (JST) | Subject | Re: [PATCH] at73c213: Fix DMA size at the end of DMA buffer | From | Atsushi Nemoto <> |
| |
On Fri, 14 Mar 2008 14:39:42 +0100, Takashi Iwai <tiwai@suse.de> wrote: > Add the following constraint in the open callback: > > err = snd_pcm_hw_constraint_integer(runtime, > SNDRV_PCM_HW_PARAM_PERIODS); > if (err < 0) > return err; > > This will guarantee that the period size fits with the buffer size.
Thank you! It works fine. Here is a new patch.
------------------------------------------------------ Subject: [PATCH] at73c213: Add constraints for periods value From: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
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> --- This patch obsoletes a patch titled "at73c213: fix DMA size at the end of DMA buffer" in git-alsa-tiwai.patch in mm tree.
diff --git a/sound/spi/at73c213.c b/sound/spi/at73c213.c index 7c077c6..9a5c118 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) { struct snd_at73c213 *chip = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; + int err; + /* ensure buffer_size is a multiple of period_size */ + err = snd_pcm_hw_constraint_integer(runtime, + SNDRV_PCM_HW_PARAM_PERIODS); + if (err < 0) + return err; snd_at73c213_playback_hw.rate_min = chip->bitrate; snd_at73c213_playback_hw.rate_max = chip->bitrate; runtime->hw = snd_at73c213_playback_hw;
| |