Messages in this thread Patch in this message | | | From | Andris Pavenis <> | Subject | PATCH: partial fix for i810_audio.c problems under KDE [WAS: Re: 2.4.12-ac5: i810_audio does not work#] | Date | Sat, 3 Nov 2001 11:34:11 +0200 |
| |
On Monday 22 October 2001 14:32, Alan Cox wrote: > > reverted one of the patches between 2.4.6-ac1 and 2.4.6-ac2) which mostly > > works for KDE with fragment size up to 512 bytes. 2.4.7 worked with any > > fragment size set in kcontrol. > > Thanks > > > I haven't tested much under GNOME, as I'm starting it very seldom > > Gnome esd is very simple in how it drives the hardware - it works in many > cases where drivers are buggy and arts shows up problems
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/
| |