Verified that reverting one patch from 2.4.6-ac time partially fixes
i810_audio problems for 2.4.13-ac5 for KDE (it works with fragment size not
larger than 512 bytes and gives garbled sound for larger fragment size).
This is the same patch which reverting helped me earlier. Below are diffs.
Andris
--- i810_audio.c.orig Tue Oct 30 09:17:35 2001
+++ i810_audio.c Sat Nov 3 11:00:45 2001
@@ -1405,30 +1405,23 @@
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
- printk(KERN_INFO "i810_audio: i810_write: %d bytes available space\n",
cnt);
-#endif
if (cnt > count)
cnt = count;
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;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/