Thu 15 Dec 2005 07:35:13 AM UTC, comment #9:
It seem that some DMA registers are not initialized for au8820
/* Init audio engine. */
vortex_adbdma_init(vortex);
hwwrite(vortex->mmio, VORTEX_ENGINE_CTRL, 0x0); //, 0xc83c7e58, 0xc5f93e58
+ifdef CHIP_AU8820
+ hwwrite(vortex->mmio, 0x1061c, 0);
+ hwwrite(vortex->mmio, 0x10620, 0);
+ hwwrite(vortex->mmio, 0x10624, 0);
+endif
vortex_adb_init(vortex);
|
Fri 28 May 2004 11:59:41 PM UTC, comment #5:
au88x0 driver depends on snd_vortex_hw_free() to remove the routes and release the adb,src,mixin,..resources.
Although snd_vortex_hw_params() can free allocated resources and allocate new resources.
Most alsa applications such as aplay, arecord, xmms, mplayer, xine , .... do not call snd_pcm_hw_free(). They just call snd_pcm_close() and exit.
|
Sat 27 Mar 2004 07:52:46 AM UTC, comment #2:
Can you hear the correct channels when you use "aplay" to play those wave files in your Aureal Win9x Driver CD ?
> aplay outls.wav
> aplay outrs.wav
What is the subsystem vendor id and device id of your au8820 ?
> lspci -nvv
Which AC97 codec is presented on your au8820 ?
> cat /proc/asound/au8820/codec97#0/ac97#0-0
> cat /proc/asound/au8820/codec97#0/ac97#0-0+regs
|
Tue 30 Dec 2003 10:40:31 AM UTC, original submission:
In most cases, channels are swapped (left goes through right speaker, and right channel through left speaker). But seldom (about 5% cases) all works correctly. I've tried to explore this bug by un-commenting debugging printk's in driver sources and analaysing logs when channels are swapped or not. I've found the following difference:
When all OK:
Dec 28 20:40:07 fpfe kernel: Vortex: periods 16, period_bytes 4096, channels = 2
Dec 28 20:40:07 fpfe kernel: vortex: ResManager: type 0 out 0
Dec 28 20:40:07 fpfe kernel: vortex: ResManager: type 1 out 0
Dec 28 20:40:07 fpfe kernel: vortex: ResManager: type 2 out 2
Dec 28 20:40:07 fpfe kernel: vortex: ResManager: type 1 out 1
Dec 28 20:40:07 fpfe kernel: vortex: ResManager: type 2 out 3
Dec 28 20:40:07 fpfe kernel: vortex: SRC 0, d=0x0, esi=0xc, esp10=0x0, ebp=0xf
Dec 28 20:40:07 fpfe kernel: vortex: SRC 1, d=0x1, esi=0xc, esp10=0x0, ebp=0xf
Dec 28 20:40:07 fpfe kernel: vortex: start 0
Dec 28 20:40:07 fpfe kernel: vortex: pointer = 0x13c
Dec 28 20:40:07 fpfe kernel: vortex: pointer = 0x1000
Dec 28 20:40:07 fpfe kernel: vortex: pointer = 0x1120
....
And when channels are swapped:
Dec 28 20:39:17 fpfe kernel: Vortex: periods 16, period_bytes 4096, channels = 2
Dec 28 20:39:17 fpfe kernel: vortex: ResManager: type 0 out 0
Dec 28 20:39:17 fpfe kernel: vortex: ResManager: type 1 out 0
Dec 28 20:39:17 fpfe kernel: vortex: ResManager: type 2 out 2
Dec 28 20:39:17 fpfe kernel: vortex: ResManager: type 1 out 1
Dec 28 20:39:17 fpfe kernel: vortex: ResManager: type 2 out 3
Dec 28 20:39:17 fpfe kernel: vortex: SRC 0, d=0x0, esi=0xc, esp10=0x0, ebp=0xf
Dec 28 20:39:17 fpfe kernel: vortex: SRC 1, d=0x1, esi=0xc, esp10=0x0, ebp=0xf
Dec 28 20:39:17 fpfe kernel: vortex: start 0
Dec 28 20:39:17 fpfe kernel: vortex: pointer = 0x13a
Dec 28 20:39:18 fpfe kernel: vortex: pointer = 0x1022
Dec 28 20:39:18 fpfe kernel: vortex: pointer = 0x1142
...
The difference is in 'pointer' values: when channels are swapped, its first value is 0x13a, and when all OK it is 0x13c.
In attachment there is full part of syslog due to ouput of the driver. Only the last sound fragment was played correctly. The result of 'lspci -vvv' is in the same file.
|