diff options
Diffstat (limited to 'sound/drivers')
-rw-r--r-- | sound/drivers/dummy.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c index f67f65829f3e..83ac4980c5fb 100644 --- a/sound/drivers/dummy.c +++ b/sound/drivers/dummy.c | |||
@@ -259,10 +259,10 @@ static void snd_card_dummy_pcm_timer_function(unsigned long data) | |||
259 | dpcm->timer.expires = 1 + jiffies; | 259 | dpcm->timer.expires = 1 + jiffies; |
260 | add_timer(&dpcm->timer); | 260 | add_timer(&dpcm->timer); |
261 | dpcm->pcm_irq_pos += dpcm->pcm_bps; | 261 | dpcm->pcm_irq_pos += dpcm->pcm_bps; |
262 | dpcm->pcm_buf_pos += dpcm->pcm_bps; | ||
263 | dpcm->pcm_buf_pos %= dpcm->pcm_buffer_size * dpcm->pcm_hz; | ||
262 | if (dpcm->pcm_irq_pos >= dpcm->pcm_period_size * dpcm->pcm_hz) { | 264 | if (dpcm->pcm_irq_pos >= dpcm->pcm_period_size * dpcm->pcm_hz) { |
263 | dpcm->pcm_irq_pos %= dpcm->pcm_period_size * dpcm->pcm_hz; | 265 | dpcm->pcm_irq_pos %= dpcm->pcm_period_size * dpcm->pcm_hz; |
264 | dpcm->pcm_buf_pos += dpcm->pcm_period_size; | ||
265 | dpcm->pcm_buf_pos %= dpcm->pcm_buffer_size; | ||
266 | spin_unlock_irqrestore(&dpcm->lock, flags); | 266 | spin_unlock_irqrestore(&dpcm->lock, flags); |
267 | snd_pcm_period_elapsed(dpcm->substream); | 267 | snd_pcm_period_elapsed(dpcm->substream); |
268 | } else | 268 | } else |
@@ -274,7 +274,7 @@ static snd_pcm_uframes_t snd_card_dummy_pcm_pointer(struct snd_pcm_substream *su | |||
274 | struct snd_pcm_runtime *runtime = substream->runtime; | 274 | struct snd_pcm_runtime *runtime = substream->runtime; |
275 | struct snd_dummy_pcm *dpcm = runtime->private_data; | 275 | struct snd_dummy_pcm *dpcm = runtime->private_data; |
276 | 276 | ||
277 | return bytes_to_frames(runtime, dpcm->pcm_buf_pos); | 277 | return bytes_to_frames(runtime, dpcm->pcm_buf_pos / dpcm->pcm_hz); |
278 | } | 278 | } |
279 | 279 | ||
280 | static struct snd_pcm_hardware snd_card_dummy_playback = | 280 | static struct snd_pcm_hardware snd_card_dummy_playback = |