lkml.org 
[lkml]   [2001]   [Nov]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
FromAndris Pavenis <>
SubjectFix for i810_audio trouble under KDE [Was: Re: PATCH: partial fix for i810_audio.c problems under KDE]
DateMon, 12 Nov 2001 10:13:28 +0200
Verified that included patch together with patch from 
Tobias Diedrich <ranma@gmx.at>:

	http://www.cs.helsinki.fi/linux/linux-kernel/2001-44/1023.html

completely fixes problems with i810_audio.c I had under KDE (kernel 
2.4.13-ac5). 

Andris

On Saturday 03 November 2001 11:34, Andris Pavenis wrote:
> 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/

\
 
 \ /
  Last update: 2005-03-22 12:13    [W:0.519 / U:0.020 seconds]
©2003-2008 Jasper Spaans