2001-10-22 07:15:56

by Andris Pavenis

[permalink] [raw]
Subject: 2.4.12-ac5: i810_audio does not work

i810_audio doesn't work in last kernels (for example 2.4.10-ac12 or 2.4.12-ac5). It says following at
startup (after modprobe i810_audio):

i810: Intel ICH 82801AA found at IO 0xe100 and 0xe000, IRQ 10
i810_audio: Audio Controller supports 2 channels.
ac97_codec: AC97 Audio codec, id: 0x4144:0x5348 (Analog Devices AD1881A)
i810_audio: AC'97 codec 0 Unable to map surround DAC's (or DAC's not present), total channels = 2

Andris


2001-10-22 07:35:41

by Alan

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work

> i810: Intel ICH 82801AA found at IO 0xe100 and 0xe000, IRQ 10
> i810_audio: Audio Controller supports 2 channels.
> ac97_codec: AC97 Audio codec, id: 0x4144:0x5348 (Analog Devices AD1881A)
> i810_audio: AC'97 codec 0 Unable to map surround DAC's (or DAC's not present), total channels = 2

The messages seem ok. It found a 2 channel device with no surround support.
What part of the system then fails ?

2001-10-22 10:37:04

by Andris Pavenis

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work

On Monday 22 October 2001 10:41, Alan Cox wrote:
> > i810: Intel ICH 82801AA found at IO 0xe100 and 0xe000, IRQ 10
> > i810_audio: Audio Controller supports 2 channels.
> > ac97_codec: AC97 Audio codec, id: 0x4144:0x5348 (Analog Devices AD1881A)
> > i810_audio: AC'97 codec 0 Unable to map surround DAC's (or DAC's not
> > present), total channels = 2
>
> The messages seem ok. It found a 2 channel device with no surround support.
> What part of the system then fails ?

Rechecked more carefully with original drivers/sound/i810_audio.c from 2.4.12-ac5.

Sound practically doesn't work under KDE-2.2.1. For example I'm getting only
some garbled sound for a very short time when I'm trying sound test in kcontrol.
Maybe these problems are due to non blocking output to /dev/sound/dsp
which artsd is using. Here is fragment from strace output for artsd

13:32:21.290449 access("/dev/dsp", F_OK) = 0
13:32:21.290799 access("/dev/dsp", F_OK) = 0
13:32:21.290949 open("/dev/dsp", O_WRONLY|O_NONBLOCK) = 9
13:32:21.291551 ioctl(9, SNDCTL_DSP_GETCAPS, 0xbffff360) = 0
13:32:21.291638 ioctl(9, SNDCTL_DSP_SETFMT, 0xbffff35c) = 0
13:32:21.291686 ioctl(9, SNDCTL_DSP_STEREO, 0xbffff358) = 0
13:32:21.291728 ioctl(9, SNDCTL_DSP_SPEED, 0xbffff354) = 0
13:32:21.292276 ioctl(9, SNDCTL_DSP_SETFRAGMENT, 0xbffff350) = 0
13:32:21.292320 ioctl(9, SNDCTL_DSP_GETOSPACE, 0xbffff378) = 0
13:32:21.292518 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.292629 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.292715 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.292801 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.292887 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.292973 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.293058 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.293144 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
13:32:21.293230 write(9, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 512) = 512
.....

Sound seems to work mostly Ok under GNOME and also with Mozilla-0.95+RealPlayer

Andris

2001-10-22 10:40:14

by Alan

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work

> Sound practically doesn't work under KDE-2.2.1. For example I'm getting only
> some garbled sound for a very short time when I'm trying sound test in kcontrol.
> Maybe these problems are due to non blocking output to /dev/sound/dsp
> which artsd is using. Here is fragment from strace output for artsd

Do you know which release it actually broke for you ? By -ac5 there are
both core changes and multi-channel stuff that might be involved

2001-10-22 10:49:04

by Kirill Ratkin

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work

I had same problem with KDE. I've just disabled aRts
soundserver.


--- Andris Pavenis <[email protected]> wrote:
> On Monday 22 October 2001 10:41, Alan Cox wrote:
> > > i810: Intel ICH 82801AA found at IO 0xe100 and
> 0xe000, IRQ 10
> > > i810_audio: Audio Controller supports 2
> channels.
> > > ac97_codec: AC97 Audio codec, id: 0x4144:0x5348
> (Analog Devices AD1881A)
> > > i810_audio: AC'97 codec 0 Unable to map surround
> DAC's (or DAC's not
> > > present), total channels = 2
> >
> > The messages seem ok. It found a 2 channel device
> with no surround support.
> > What part of the system then fails ?
>
> Rechecked more carefully with original
> drivers/sound/i810_audio.c from 2.4.12-ac5.
>
> Sound practically doesn't work under KDE-2.2.1. For
> example I'm getting only
> some garbled sound for a very short time when I'm
> trying sound test in kcontrol.
> Maybe these problems are due to non blocking output
> to /dev/sound/dsp
> which artsd is using. Here is fragment from strace
> output for artsd
>
> 13:32:21.290449 access("/dev/dsp", F_OK) = 0
> 13:32:21.290799 access("/dev/dsp", F_OK) = 0
> 13:32:21.290949 open("/dev/dsp",
> O_WRONLY|O_NONBLOCK) = 9
> 13:32:21.291551 ioctl(9, SNDCTL_DSP_GETCAPS,
> 0xbffff360) = 0
> 13:32:21.291638 ioctl(9, SNDCTL_DSP_SETFMT,
> 0xbffff35c) = 0
> 13:32:21.291686 ioctl(9, SNDCTL_DSP_STEREO,
> 0xbffff358) = 0
> 13:32:21.291728 ioctl(9, SNDCTL_DSP_SPEED,
> 0xbffff354) = 0
> 13:32:21.292276 ioctl(9, SNDCTL_DSP_SETFRAGMENT,
> 0xbffff350) = 0
> 13:32:21.292320 ioctl(9, SNDCTL_DSP_GETOSPACE,
> 0xbffff378) = 0
> 13:32:21.292518 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.292629 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.292715 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.292801 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.292887 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.292973 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.293058 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.293144 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> 13:32:21.293230 write(9,
>
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"...,
> 512) = 512
> .....
>
> Sound seems to work mostly Ok under GNOME and also
> with Mozilla-0.95+RealPlayer
>
> Andris
> -
> To unsubscribe from this list: send the line
> "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at
> http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com

2001-10-22 11:26:59

by Alan

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work#

> 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

2001-10-22 11:25:09

by Andris Pavenis

[permalink] [raw]
Subject: Re: 2.4.12-ac5: i810_audio does not work

On Monday 22 October 2001 13:46, Alan Cox wrote:
> > Sound practically doesn't work under KDE-2.2.1. For example I'm getting
> > only some garbled sound for a very short time when I'm trying sound test
> > in kcontrol. Maybe these problems are due to non blocking output to
> > /dev/sound/dsp which artsd is using. Here is fragment from strace output
> > for artsd
>
> Do you know which release it actually broke for you ? By -ac5 there are
> both core changes and multi-channel stuff that might be involved

It's difficult to say exactly as it's broken already for a rather long time:
kernels beginning 2.4.9 (if I remeber correctly) have trouble with
i810_audio under KDE-2.2
the same about 2.4.6-ac2 and later ones

Earlier I found some combination (some 2.4.8-ac or soimething similar with
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.

I haven't tested much under GNOME, as I'm starting it very seldom

Andris

2001-11-03 09:34:40

by Andris Pavenis

[permalink] [raw]
Subject: PATCH: partial fix for i810_audio.c problems under KDE [WAS: Re: 2.4.12-ac5: i810_audio does not work#]

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;

2001-11-12 08:14:05

by Andris Pavenis

[permalink] [raw]
Subject: Fix for i810_audio trouble under KDE [Was: Re: PATCH: partial fix for i810_audio.c problems under KDE]

Verified that included patch together with patch from
Tobias Diedrich <[email protected]>:

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;