patch-2.4.17 linux/drivers/sound/i810_audio.c
Next file: linux/drivers/sound/sb_card.c
Previous file: linux/drivers/sound/emu10k1/main.c
Back to the patch index
Back to the overall index
- Lines: 41
- Date:
Fri Dec 21 16:40:32 2001
- Orig file:
linux-2.4.16/drivers/sound/i810_audio.c
- Orig date:
Fri Nov 9 22:07:41 2001
diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/drivers/sound/i810_audio.c linux/drivers/sound/i810_audio.c
@@ -1405,10 +1405,9 @@
if (dmabuf->count < 0) {
dmabuf->count = 0;
}
- cnt = dmabuf->dmasize - dmabuf->fragsize - dmabuf->count;
- // this is to make the copy_from_user simpler below
- if(cnt > (dmabuf->dmasize - swptr))
- cnt = dmabuf->dmasize - swptr;
+ cnt = dmabuf->dmasize - swptr;
+ if(cnt > (dmabuf->dmasize - dmabuf->count))
+ cnt = dmabuf->dmasize - dmabuf->count;
spin_unlock_irqrestore(&state->card->lock, flags);
#ifdef DEBUG2
@@ -1419,16 +1418,13 @@
if (cnt <= 0) {
unsigned long tmo;
// There is data waiting to be played
+ i810_update_lvi(state,0);
if(!dmabuf->enable && dmabuf->count) {
/* force the starting incase SETTRIGGER has been used */
/* to stop it, otherwise this is a deadlock situation */
dmabuf->trigger |= PCM_ENABLE_OUTPUT;
start_dac(state);
}
- // Update the LVI pointer in case we have already
- // written data in this syscall and are just waiting
- // on the tail bit of data
- i810_update_lvi(state,0);
if (file->f_flags & O_NONBLOCK) {
if (!ret) ret = -EAGAIN;
goto ret;
@@ -1860,7 +1856,7 @@
if(dmabuf->mapped)
abinfo.bytes = dmabuf->count;
else
- abinfo.bytes = dmabuf->dmasize - dmabuf->count;
+ abinfo.bytes = dmabuf->dmasize - dmabuf->fragsize - dmabuf->count;
abinfo.fragments = abinfo.bytes / dmabuf->userfragsize;
spin_unlock_irqrestore(&state->card->lock, flags);
#ifdef DEBUG
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)