All of lore.kernel.org
 help / color / mirror / Atom feed
* au8830 - front / rear channels swapped after first play and Surround40
@ 2005-03-11  5:31 Raymond
  2005-03-11 12:58 ` Manuel Jander
  0 siblings, 1 reply; 6+ messages in thread
From: Raymond @ 2005-03-11  5:31 UTC (permalink / raw)
  To: alsa-devel; +Cc: openvortex-dev

When watching movie using gxine(xine-lib) downmix DVD sound to 
Surround40, the human voice (Center) come out from rear speakers instead 
of front on the second movie.

Turn off the Sigmatel STAC9708 stereo to 4 speakers and Sigmatel
Surround Mix, Sigmatel 3D Surround using alsamixer.


<confdir:pcm/front.conf>

AU8830.pcm.front.0 {
	@args [ CARD ]
	@args.CARD {
		type string
	}
	type hw
	card $CARD
	device 0
}	

<confdir:pcm/surround40.conf>

AU8830.pcm.surround40.0 "cards.AU8830.pcm.front.0"

<confdir:pcm/iec958.conf>

AU8830.pcm.iec958.0 {
	@args [ CARD AES0 AES1 AES2 AES3 ]
	@args.CARD {
		type string
	}
	@args.AES0 {
		type integer
	}
	@args.AES1 {
		type integer
	}
	@args.AES2 {
		type integer
	}
	@args.AES3 {
		type integer
	}
	type hw
	card $CARD
	device 1
}


1) Is this related to no cards.AU8830.pcm.rear in
/usr/share/alsa/cards/AU8830.conf ?

I repeat the "aplay test" with out1lq.wav, out1rq.wav, out2lq.wav
and out2rq.wav.

https://bugtrack.alsa-project.org/alsa-bug/view.php?id=59

Although there is a route left after snd_vortex_pcm_hw_free() when
playing stereo sound (e.g. outls.wav and outrs.wav )

There is no swap of left/right channels on au8830.

The swapping of front/rear also occur when using speaker-test -c 4


2) Why "snd_vortex_pcm_hw_free()" is called twice by "aplay" ?

3) Is the bug related to "vortex: IRQ fifo error" ?

4) Why some routes such as "ADBDMA(00) -> SRCIN(01)",
"ADBDMA(00) -> SRCIN(02)", "ADBDMA(00) -> SRCIN(03)" are still exist
after snd_vortex_pcm_hw_free ?

5) What is the usage of Pre 3D/Post 3D setting in 'PCM Out Path & Mute' ?

Need to understand the routes and mixin mixout setting before complete
the au88x0_ac3_passthrough_spdif.patch.

6) How to fill up the remain symbols in au8830_src[256] and
au8830_dest[256] from OFFSET_???? from au8830.h ?

#define		OFFSET_ADBDMA	0x00
#define		OFFSET_ADBDMAB	0x20
#define		OFFSET_SRCIN	0x40
#define		OFFSET_SRCOUT	0x20	/* ch 0x11 */
#define		OFFSET_MIXIN	0x50	/* ch 0x11 */
#define		OFFSET_MIXOUT	0x30	/* ch 0x11 */
#define		OFFSET_CODECIN	0x70 /* ch 0x11 */	/* adb source */
#define		OFFSET_CODECOUT	0x88 /* ch 0x11 */	/* adb target */
#define		OFFSET_SPORTIN	0x78	/* ch 0x13 ADB source. 2 routes. */
#define		OFFSET_SPORTOUT	0x90	/* ch 0x13 ADB sink. 2 routes. */
#define		OFFSET_SPDIFIN	0x7A	/* ch 0x14 ADB source. */
#define		OFFSET_SPDIFOUT	0x92	/* ch 0x14 ADB sink. */
#define		OFFSET_AC98IN	0x7c	/* ch 0x14 ADB source. */
#define		OFFSET_AC98OUT	0x94	/* ch 0x14 ADB sink. */
#define		OFFSET_EQIN		0xa0	/* ch 0x11 */
#define		OFFSET_EQOUT	0x7e /* ch 0x11 */	/* 2 routes on ch 0x11 */
#define		OFFSET_A3DIN	0x70	/* ADB sink. */
#define		OFFSET_A3DOUT	0xA6	/* ADB source. 2 routes per slice = 8 */
#define		OFFSET_WT0		0x40	/* WT bank 0 output. 0x40 - 0x65 */
#define		OFFSET_WT1		0x80	/* WT bank 1 output. 0x80 - 0xA5 */
/* WT sources offset : 0x00-0x1f Direct stream. */
/* WT sources offset : 0x20-0x25 Mixed Output. */
#define		OFFSET_XTALKOUT	0x66	/* crosstalk canceller (source) 2 routes */
#define		OFFSET_XTALKIN	0x96	/* crosstalk canceller (sink). 10 routes */
#define		OFFSET_EFXOUT	0x68	/* ADB source. 8 routes. */
#define		OFFSET_EFXIN	0x80	/* ADB sink. 8 routes. */

7) Can anyone explain how the adddress of audio data pass to DMA
registers in the current alsa driver code ?

I try to log the hwread() and hwwrite(), but dmesg cannot show all entries.

8) How to to obtain a full log ?


Please note that I have disabled some default routes in
vortex_connect_default()

//	vortex_wt_connect(vortex, en);
//	vortex_Vort3D_connect(vortex, en);


This following is the result of "aplay out1lq.wav".

# /etc/init.d/alsasound stop
# /etc/init.d/alsasound start
# dmesg

Vortex: init.... <6>done.
input0: Analog 4-axis 4-button joystick at gameport0.0 [ADC port]
Routes After vortex_connect_default()-----------
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------

# strace aplay out1lq.wav execve("/usr/bin/aplay", ["aplay",
"out1lq.wav"], [/* 35 vars */]) = 0
uname({sys="Linux", node="localhost.localdomain", ...}) = 0
brk(0)                                  = 0x829a000
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=82204, ...}) = 0
old_mmap(NULL, 82204, PROT_READ, MAP_PRIVATE, 3, 0) = 0xbf5ab000
close(3)                                = 0
open("/usr/lib/libasound.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20;\207"...,
512) = 512fstat64(3, {st_mode=S_IFREG|0755, st_size=3637838, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xbf5aa000
old_mmap(0x855000, 655200, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x855000
old_mmap(0x8f1000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x9c000) = 0x8f1000
close(3)                                = 0
open("/lib/tls/libm.so.6", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\365\202"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=213244, ...}) = 0
old_mmap(0x82c000, 138000, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x82c000
old_mmap(0x84d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
0x20000) = 0x84d000
close(3)                                = 0
open("/lib/libdl.so.2", O_RDONLY)       = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\32\205"...,
512) = 512fstat64(3, {st_mode=S_IFREG|0755, st_size=16312, ...}) = 0
old_mmap(0x850000, 12148, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x850000
old_mmap(0x852000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
0x1000) = 0x852000
close(3)                                = 0
open("/lib/tls/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\367"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=101264, ...}) = 0
old_mmap(0x97b000, 62436, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x97b000
old_mmap(0x988000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3,
0xd000) = 0x988000
old_mmap(0x989000, 5092, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x989000
close(3)                                = 0
open("/lib/tls/libc.so.6", O_RDONLY)    = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`hp\000"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1578228, ...}) = 0
old_mmap(0x6f1000, 1281996, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x6f1000
old_mmap(0x824000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x132000) = 0x824000
old_mmap(0x828000, 8140, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x828000
close(3)                                = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xbf5a9000
set_thread_area({entry_number:-1 -> 6, base_addr:0xbf5a9640,
limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xbf5ab000, 82204)               = 0
set_tid_address(0xbf5a9688)             = 20300
rt_sigaction(SIGRTMIN, {0x97f680, [], SA_RESTORER|SA_SIGINFO, 0x9860b0},
NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x829a000
brk(0x82bb000)                          = 0x82bb000
brk(0)                                  = 0x82bb000
stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=7467,
...}) = 0
open("/usr/share/alsa/alsa.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=7467, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5bf000
read(3, "#\n#  ALSA library configuration "..., 4096) = 4096
read(3, "if cards.pcm.iec958\npcm.modem ca"..., 4096) = 3371
read(3, "", 4096)                       = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xbf5bf000, 4096)                = 0
futex(0x852f70, FUTEX_WAKE, 2147483647) = 0
access("/etc/asound.conf", R_OK)        = -1 ENOENT (No such file or
directory)
access("/root/.asoundrc", R_OK)         = -1 ENOENT (No such file or
directory)
open("/usr/share/alsa/cards/aliases.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=1110, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5bf000
read(3, "#\n#  Define aliases for various "..., 4096) = 1110
open("/usr/share/alsa/pcm/default.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=479, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n# Default output\n#\n\npcm.!defau"..., 4096) = 479
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
open("/usr/share/alsa/pcm/dmix.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=1060, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n# dmix output\n#\n\npcm.!dmix {\n\t"..., 4096) = 1060
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
open("/usr/share/alsa/pcm/dsnoop.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=1065, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n# dsnoop\n#\n\npcm.!dsnoop {\n\t@ar"..., 4096) = 1065
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
read(3, "", 4096)                       = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xbf5bf000, 4096)                = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=7467,
...}) = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbff7f4dc)  = 0
ioctl(3, UI_DEV_CREATE, 0xbff7f600)     = 0
close(3)                                = 0
access("/usr/share/alsa/cards/AU8830.conf", R_OK) = 0
open("/usr/share/alsa/cards/AU8830.conf", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=530, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5bf000
read(3, "#\n# Configuration for the AU8830"..., 4096) = 530
open("/usr/share/alsa/pcm/front.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=596, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n# Hardware output from front s"..., 4096) = 596
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
open("/usr/share/alsa/pcm/surround40.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=749, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n#  Hardware output from 4.0 sp"..., 4096) = 749
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
open("/usr/share/alsa/pcm/iec958.conf", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=1030, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
0) = 0xbf5be000
read(4, "#\n#  Hardware output from iec958"..., 4096) = 1030
read(4, "", 4096)                       = 0
close(4)                                = 0
munmap(0xbf5be000, 4096)                = 0
read(3, "", 4096)                       = 0
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0xbf5bf000, 4096)                = 0
open("/dev/snd/controlC1", O_RDONLY)    = -1 ENODEV (No such device)
open("/dev/aloadC1", O_RDONLY)          = -1 ENODEV (No such device)
open("/dev/snd/controlC2", O_RDONLY)    = -1 ENODEV (No such device)
open("/dev/aloadC2", O_RDONLY)          = -1 ENODEV (No such device)
open("/dev/snd/controlC3", O_RDONLY)    = -1 ENODEV (No such device)
open("/dev/aloadC3", O_RDONLY)          = -1 ENODEV (No such device)
open("/dev/snd/controlC4", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC4", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC5", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC5", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC6", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC6", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC7", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC7", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC8", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC8", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC9", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/dev/aloadC9", O_RDONLY)          = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC10", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC10", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC11", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC11", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC12", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC12", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC13", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC13", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC14", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC14", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC15", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC15", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC16", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC16", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC17", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC17", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC18", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC18", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC19", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC19", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC20", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC20", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC21", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC21", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC22", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC22", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC23", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC23", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC24", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC24", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC25", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC25", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC26", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC26", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC27", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC27", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC28", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC28", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC29", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC29", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC30", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC30", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC31", O_RDONLY)   = -1 ENOENT (No such file or
directory)
open("/dev/aloadC31", O_RDONLY)         = -1 ENOENT (No such file or
directory)
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=7467,
...}) = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbff7f23c)  = 0
ioctl(3, UI_DEV_CREATE, 0xbff7f360)     = 0
close(3)                                = 0
open("/dev/snd/controlC0", O_RDONLY)    = 3
close(3)                                = 0
open("/dev/snd/controlC0", O_RDWR)      = 3
ioctl(3, USBDEVFS_CONTROL, 0xbff7f4ec)  = 0
ioctl(3, 0x40045532, 0xbff7f514)        = 0
open("/dev/snd/pcmC0D0p", O_RDWR)       = 4
close(3)                                = 0
ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbff7f3e0) = 0
fcntl64(4, F_GETFL)                     = 0x2 (flags O_RDWR)
ioctl(4, AGPIOC_INFO, 0xbff7f3dc)       = 0
ioctl(4, AGPIOC_RELEASE or APM_IOC_SUSPEND, 0xbff7f3d8) = 0
mmap2(NULL, 4096, PROT_READ, MAP_SHARED, 4, 0x80000) = 0xbf5bf000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0x81000) = 0xbf5be000
ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbff7f990) = 0
rt_sigaction(SIGINT, {0x804abf8, [INT], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x804abf8, [TERM], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGABRT, {0x804abf8, [ABRT], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
open("out1lq.wav", O_RDONLY|O_LARGEFILE) = 3
read(3, "RIFF6\261\2\0WAVEfmt \22\0\0\0\1\0\4\0", 24) = 24
read(3, "\"V", 2)                       = 2
read(3, "\0\0\20\261\2\0\10\0\20\0\0\0", 12) = 12
read(3, "data\20\261\2\0", 8)           = 8
write(2, "Playing WAVE \'out1lq.wav\' : ", 28Playing WAVE 'out1lq.wav' :
) = 28
write(2, "Signed 16 bit Little Endian, ", 29Signed 16 bit Little Endian,
) = 29
write(2, "Rate 22050 Hz, ", 15Rate 22050 Hz, )         = 15
write(2, "Channels 4", 10Channels 4)              = 10
write(2, "\n", 1
)                       = 1
ioctl(4, 0xc25c4110, 0xbff7f300)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef30)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef30)        = 0
ioctl(4, 0xc25c4110, 0xbff7ea50)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef60)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef60)        = 0
ioctl(4, 0xc25c4110, 0xbff7f300)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef30)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef30)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef60)        = 0
ioctl(4, 0xc25c4110, 0xbff7ef60)        = 0
ioctl(4, 0xc25c4110, 0xbff7f300)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7ecc0)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7ec90)        = 0
ioctl(4, 0xc25c4110, 0xbff7f060)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7e770)        = 0
ioctl(4, 0xc25c4110, 0xbff7e770)        = 0
ioctl(4, 0xc25c4110, 0xbff7e770)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7e770)        = 0
ioctl(4, 0xc25c4110, 0xbff7e770)        = 0
ioctl(4, 0xc25c4110, 0xbff7eb40)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7eda0)        = 0
ioctl(4, 0xc25c4110, 0xbff7f260)        = 0
ioctl(4, 0xc25c4110, 0xbff7f260)        = 0
ioctl(4, 0xc25c4110, 0xbff7f260)        = 0
ioctl(4, 0xc25c4110, 0xbff7f260)        = 0
ioctl(4, 0xc25c4110, 0xbff7f260)        = 0
ioctl(4, 0xc25c4110, 0xbff7f290)        = 0
ioctl(4, 0xc25c4110, 0xbff7f290)        = 0
ioctl(4, 0xc25c4110, 0xbff7f290)        = 0
ioctl(4, 0xc25c4110, 0xbff7f290)        = 0
ioctl(4, 0xc25c4110, 0xbff7f670)        = 0
ioctl(4, 0xc25c4111, 0xbff7f670)        = 0
ioctl(4, 0xc0684113, 0xbff7f1e0)        = 0
ioctl(4, 0x4140, 0)                     = 0
ioctl(4, 0xc0684113, 0xbff7f600)        = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\277\374\0\0\0\0\0\0\237\374\0\0\0\0\0\0\204\374\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\272\4\0\0\0\0\0\0&\5\0\0\0\0\0\0\223\5\0\0\0\0\0\0\372"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\245\360\0\0\0\0\0\0\236\360\0\0\0\0\0\0\230\360\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "4\24\0\0\0\0\0\0@\24\0\0\0\0\0\0003\24\0\0\0\0\0\0\25\24"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "`\347\0\0\0\0\0\0a\347\0\0\0\0\0\0Z\347\0\0\0\0\0\0[\347"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\247\375\0\0\0\0\0\0\247\373\0\0\0\0\0\0\255\371\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "q\345\0\0\0\0\0\0\263\345\0\0\0\0\0\0\365\345\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "@\351\0\0\0\0\0\0\200\353\0\0\0\0\0\0\353\355\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "l\341\0\0\0\0\0\0\230\337\0\0\0\0\0\0\3\336\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\314\352\0\0\0\0\0\0\233\351\0\0\0\0\0\0r\350\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "m\367\0\0\0\0\0\0\330\373\0\0\0\0\0\0M\0\0\0\0\0\0\0\305"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\206\325\0\0\0\0\0\0\32\325\0\0\0\0\0\0\311\324\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "4\34\0\0\0\0\0\0I\30\0\0\0\0\0\0\5\24\0\0\0\0\0\0{\17\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\225\360\0\0\0\0\0\0\23\363\0\0\0\0\0\0\234\365\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, ".\347\0\0\0\0\0\0\361\353\0\0\0\0\0\0\f\361\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "D*\0\0\0\0\0\0\305)\0\0\0\0\0\0\10)\0\0\0\0\0\0\23(\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\20$\0\0\0\0\0\0\311%\0\0\0\0\0\0>\'\0\0\0\0\0\0n(\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\34\f\0\0\0\0\0\0\334\5\0\0\0\0\0\0|\377\0\0\0\0\0\0\35"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\27\21\0\0\0\0\0\0]\r\0\0\0\0\0\0\205\t\0\0\0\0\0\0\225"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\373\3\0\0\0\0\0\0\263\n\0\0\0\0\0\0 \21\0\0\0\0\0\0\24"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\247\331\0\0\0\0\0\0e\333\0\0\0\0\0\0\222\335\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\373\333\0\0\0\0\0\0p\331\0\0\0\0\0\0%\330\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "}&\0\0\0\0\0\0\\%\0\0\0\0\0\0\247#\0\0\0\0\0\0j!\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\226\r\0\0\0\0\0\0\214\6\0\0\0\0\0\0D\377\0\0\0\0\0\0\2"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\312\334\0\0\0\0\0\0;\333\0\0\0\0\0\0\"\333\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "N\355\0\0\0\0\0\0\324\361\0\0\0\0\0\0\244\366\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\344\22\0\0\0\0\0\0f\f\0\0\0\0\0\0Z\5\0\0\0\0\0\0\21\376"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\335\r\0\0\0\0\0\0\26\t\0\0\0\0\0\0\27\4\0\0\0\0\0\0\1"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "/\36\0\0\0\0\0\0\337\36\0\0\0\0\0\0\0\36\0\0\0\0\0\0\234"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\330\10\0\0\0\0\0\0\\\r\0\0\0\0\0\0\200\21\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "/\23\0\0\0\0\0\0#\27\0\0\0\0\0\0\307\31\0\0\0\0\0\0\366"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "%\347\0\0\0\0\0\0\36\350\0\0\0\0\0\0\341\351\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "[\21\0\0\0\0\0\0\222\24\0\0\0\0\0\0{\26\0\0\0\0\0\0\370"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "-\370\0\0\0\0\0\0z\363\0\0\0\0\0\0\234\357\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\366\356\0\0\0\0\0\0\327\360\0\0\0\0\0\0V\363\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "s\376\0\0\0\0\0\0\37\372\0\0\0\0\0\0009\366\0\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\34\371\0\0\0\0\0\0\241\366\0\0\0\0\0\0\226\364\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\363\372\0\0\0\0\0\0$\370\0\0\0\0\0\0\370\365\0\0\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, " \3\0\0\0\0\0\0\376\0\0\0\0\0\0\0\322\376\0\0\0\0\0\0\263"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\337\370\0\0\0\0\0\0\340\370\0\0\0\0\0\0\204\371\0\0\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\205\2\0\0\0\0\0\0q\1\0\0\0\0\0\0G\0\0\0\0\0\0\0\34\377"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "o\377\0\0\0\0\0\0\f\0\0\0\0\0\0\0\254\0\0\0\0\0\0\0?\1"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
read(3, "\357\377\0\0\0\0\0\0\346\377\0\0\0\0\0\0\337\377\0\0\0"...,
272) = 272
ioctl(4, 0x400c4150, 0xbff7f890)        = 0
ioctl(4, 0x4144, 0x110)                 = 0
close(3)                                = 0
ioctl(4, 0x4143, 0x110)                 = 0
ioctl(4, 0x4112, 0x200)                 = 0
close(4)                                = 0
munmap(0xbf5bf000, 4096)                = 0
munmap(0xbf5be000, 4096)                = 0
exit_group(0)                           = ?



#dmesg

Routes snd_vortex_pcm_hw_params()-----------
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes After adb_allocroute() in snd_vortex_pcm_hw_params-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028144 : 00002052   SRCOUT(00) -> MIXIN(02)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282c0 : 00000040   ADBDMA(00) -> SRCIN(00)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
21a00 : 00000004   mixin(02) -> mixout(00)
21a20 : 00000008   mixin(03) -> mixout(01)
21a44 : 00000001   mixin(04) -> mixout(02)
21a64 : 00000002   mixin(05) -> mixout(03)
21a80 : 00000004   mixin(02) -> mixout(04)
21a84 : 00000001   mixin(04) -> mixout(04)
21aa0 : 00000008   mixin(03) -> mixout(05)
21aa4 : 00000002   mixin(05) -> mixout(05)
----------------------------------------
vortex: IRQ fifo error
Routes Before delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028144 : 00002052   SRCOUT(00) -> MIXIN(02)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282c0 : 00000040   ADBDMA(00) -> SRCIN(00)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
21a00 : 00000004   mixin(02) -> mixout(00)
21a20 : 00000008   mixin(03) -> mixout(01)
21a44 : 00000001   mixin(04) -> mixout(02)
21a64 : 00000002   mixin(05) -> mixout(03)
21a80 : 00000004   mixin(02) -> mixout(04)
21a84 : 00000001   mixin(04) -> mixout(04)
21aa0 : 00000008   mixin(03) -> mixout(05)
21aa4 : 00000002   mixin(05) -> mixout(05)
----------------------------------------
Routes After delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes Before delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes After delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------

# aplay out1lq.wav
Playing WAVE 'out1lq.wav' : Signed 16 bit Little Endian, Rate 22050 Hz,
Channels 4

The sound come out from rear speaker instead of front on second run.

# dmesg

Routes snd_vortex_pcm_hw_params()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes After adb_allocroute() in snd_vortex_pcm_hw_params-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028144 : 00002052   SRCOUT(00) -> MIXIN(02)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282c0 : 00000040   ADBDMA(00) -> SRCIN(00)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
21a00 : 00000004   mixin(02) -> mixout(00)
21a20 : 00000008   mixin(03) -> mixout(01)
21a44 : 00000001   mixin(04) -> mixout(02)
21a64 : 00000002   mixin(05) -> mixout(03)
21a80 : 00000004   mixin(02) -> mixout(04)
21a84 : 00000001   mixin(04) -> mixout(04)
21aa0 : 00000008   mixin(03) -> mixout(05)
21aa4 : 00000002   mixin(05) -> mixout(05)
----------------------------------------
Routes Before delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028144 : 00002052   SRCOUT(00) -> MIXIN(02)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282c0 : 00000040   ADBDMA(00) -> SRCIN(00)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
21a00 : 00000004   mixin(02) -> mixout(00)
21a20 : 00000008   mixin(03) -> mixout(01)
21a44 : 00000001   mixin(04) -> mixout(02)
21a64 : 00000002   mixin(05) -> mixout(03)
21a80 : 00000004   mixin(02) -> mixout(04)
21a84 : 00000001   mixin(04) -> mixout(04)
21aa0 : 00000008   mixin(03) -> mixout(05)
21aa4 : 00000002   mixin(05) -> mixout(05)
----------------------------------------
Routes After delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes Before delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------
Routes After delete routes in snd_vortex_pcm_hw_free()-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
----------------------------------------



/*
	code for dumping the routes and mixin mixout setting.
	you need to modify the code if you are using au8820
*/


char *au8830_src[256]={
"ADBDMA(00)","ADBDMA(01)","ADBDMA(02)","ADBDMA(03)","ADBDMA(04)","ADBDMA(05)","ADBDMA(06)","ADBDMA(07)","ADBDMA(08)","ADBDMA(09)","ADBDMA(10)","ADBDMA(11)","ADBDMA(12)","ADBDMA(13)","ADBDMA(14)","ADBDM(15)",
"0x10","0x11","0x12","0x13","0x14","0x15","0x16","0x17","0x18","0x19","0x1a","0x1b","0x1c","0x1d","0x1e","0x1f",
"SRCOUT(00)","SRCOUT(01)","SRCOUT(02)","SRCOUT(03)","SRCOUT(04)","SRCOUT(05)","SRCOUT(06)","SRCOUT(07)","SRCOUT(08)","SRCOUT(09)","SRCOUT(10)","SRCOUT(11)","SRCOUT(12)","SRCOUT(13)","SRCOUT(14)","SRCOUT(15)",
"MIXOUT(00)","MIXOUT(01)","MIXOUT(02)","MIXOUT(03)","MIXOUT(04)","MIXOUT(05)","MIXOUT(06)","MIXOUT(07)","MIXOUT(08)","MIXOUT(09)","MIXOUT(10)","MIXOUT(11)","MIXOUT(12)","MIXOUT(13)","MIXOUT(14)","MIXOUT(15)",
"WT0(01)","WT0(01)","WT0(02)","WT0(03)","WT0(04)","WT0(05)","WT0(06)","WT0(07)",
"WT0(08)","WT0(09)","WT0(10)","WT0(11)","WT0(12)","WT0(13)","WT0(14)","WT0(15)",
"WT0(16)","WT0(17)","WT0(18)","WT0(19)","WT0(20)","WT0(21)","WT0(22)","WT0(23)",
"WT0(24)","WT0(25)","WT0(26)","WT0(27)","WT0(28)","WT0(29)","WT0(30)","WT0(31)",
"WT0MIX(0)","WT0MIX(1)","WT0MIX(2)","WT0MIX(3)","WT0MIX(4)","WT0MIX(5)","XTALKOUT(0)","XTALKOUT(1)","0x68","0x69","0x6a","0x6b","0x6c","0x6d","0x6e","0x6f",
"CODECIN(0)","CODECIN(1)","0x72","0x73","0x74","0x75","0x76","0x77","SPDIFIN(0)","SPDIFIN(1)","SPORTIN(0)","SPDIFIN(1)","0x7c","0x7d","EQOUT(0)","EQOUT(1)",
"WT1(00)","WT1(01)","WT1(02)","WT1(03)","WT1(04)","WT1(05)","WT1(06)","WT1(07)","WT1(08)","WT1(09)","WT1(10)","WT1(11)","WT1(12)","WT1(13)","WT1(14)","WT1(15)",
"WT1(16)","WT1(17)","WT1(18)","WT1(19)","WT1(20)","WT1(21)","WT1(22)","WT1(23)","WT1(24)","WT1(25)","WT1(26)","WT1(27)","WT1(28)","WT1(29)","WT1(30)","WT1(31)",
"WT1MIX(0)","WT1MIX(1)","WT1MIX(2)","WT1MIX(3)","WT1MIX(4)","WT1MIX(5)","A3DOUT(0)","A3DOUT(1)", 

"A3DOUT(2)","A3DOUT(3)","A3DOUT(4)","A3DOUT(5)","A3DOUT(6)","A3DOUT(7)","0xae","0xaf",
"0xb0","0xb1","0xb2","0xb3","0xb4","0xb5","0xb6","0xb7","0xb8","0xb9","0xba","0xbb","0xbc","0xbd","0xbe","0xbf",
"0xc0","0xc1","0xc2","0xc3","0xc4","0xc5","0xc6","0xc7","0xc8","0xc9","0xca","0xcb","0xcc","0xcd","0xce","0xcf",
"0xd0","0xd1","0xd2","0xd3","0xd4","0xd5","0xd6","0xd7","0xd8","0xd9","0xda","0xdb","0xdc","0xdd","0xde","0xdf",
"0xe0","0xe1","0xe2","0xe3","0xe4","0xe5","0xe6","0xe7","0xe8","0xe9","0xea","0xeb","0xec","0xed","0xee","0xef",
"0xf0","0xf1","0xf2","0xf3","0xf4","0xf5","0xf6","0xf7","0xf8","0xf9","0xfa","0xfb","0xfc","0xfd","0xfe","0xff"};


char *au8830_dest[256]={
"0x00","0x01","0x02","0x03","0x04","0x05","0x06","0x07","0x08","0x09","0x0a","0x0b","0x0c","0x0d","0x0e","0x0f",
"0x10","0x11","0x12","0x13","0x14","0x15","0x16","0x17","0x18","0x19","0x1a","0x1b","0x1c","0x1d","0x1e","0x1f",
"0x20","0x21","0x22","0x23","0x24","0x25","0x26","0x27","0x28","0x29","0x2a","0x2b","0x2c","0x2d","0x2e","0x2f",
"0x30","0x31","0x32","0x33","0x34","0x35","0x36","0x37","0x38","0x39","0x3a","0x3b","0x3c","0x3d","0x3e","0x3f",
"SRCIN(00)","SRCIN(01)","SRCIN(02)","SRCIN(03)","SRCIN(04)","SRCIN(05)","SRCIN(06)","SRCIN(07)",
"SRCIN(08)","SRCIN(09)","SRCIN(10)","SRCIN(11)","SRCIN(12)","SRCIN(13)","SRCIN(14)","SRCIN(15)",
"MIXIN(00)","MIXIN(01)","MIXIN(02)","MIXIN(03)","MIXIN(04)","MIXIN(05)","MIXIN(06)","MIXIN(07)",
"MIXIN(08)","MIXIN(09)","MIXIN(10)","MIXIN(11)","MIXIN(12)","MIXIN(13)","MIXIN(14)","MIXIN(15)",
"0x60","0x61","0x62","0x63","0x64","0x65","XTALKOUT(0)","XTALKOUT(1)",
"0x68","0x69","0x6a","0x6b","0x6c","0x6d","0x6e","0x6f",
"0x70","0x71","0x72","0x73","0x74","0x75","0x76","0x77","0x78","0x79","0x7a","0x7b","0x7c","0x7d","0x7e","0x7f",
"0x80","0x81","0x82","0x83","0x84","0x85","0x86","0x87",
"CODECOUT(0)","CODECOUT(1)","0x8a","0x8b","CODECOUT(4)","CODECOUT(5)","0x8e","0x8f",
"SPORTOUT(0)","SPORTOUT(1)","SPDIFOUT(0)","SPDIFOUT(1)","0x94","0x95","XTALKIN(0)","XTALKIN(1)","XTALKIN(2)","XTALKIN(3)","XTALKIN(4)","XTALKIN(5)","XTALKIN(6)","XTALKIN(7)","XTALKIN(8)","XTALKIN(9)",
"EQIN(0)","EQIN(1)","0xa2","0xa3","0xa4","0xa5","0xa6","0xa7",
"0xa8","0xa9","0xaa","0xab","0xac","0xad","0xae","0xaf",
"0xb0","0xb1","0xb2","0xb3","0xb4","0xb5","0xb6","0xb7","0xb8","0xb9","0xba","0xbb","0xbc","0xbd","0xbe","0xbf",
"0xc0","0xc1","0xc2","0xc3","0xc4","0xc5","0xc6","0xc7","0xc8","0xc9","0xca","0xcb","0xcc","0xcd","0xce","0xcf",
"0xd0","0xd1","0xd2","0xd3","0xd4","0xd5","0xd6","0xd7","0xd8","0xd9","0xda","0xdb","0xdc","0xdd","0xde","0xdf",
"0xe0","0xe1","0xe2","0xe3","0xe4","0xe5","0xe6","0xe7","0xe8","0xe9","0xea","0xeb","0xec","0xed","0xee","0xef",
"0xf0","0xf1","0xf2","0xf3","0xf4","0xf5","0xf6","0xf7","0xf8","0xf9","0xfa","0xfb","0xfc","0xfd","0xfe","0xff"};

static void vortex_dump_mixin_mixout(vortex_t * vortex)
{
     u32 addr,value;
     int i,j;
     unsigned char src,dest;
     addr=VORTEX_MIX_ENIN;
     printk(KERN_INFO "MIXIN_MIXOUT ENABLE\n");
     for (i=0; i<128; i++) {
         value=hwread(vortex->mmio,addr);
         if (value != 0) {
	    j=0;
	    while ((j<4)&&(((1<<j)& value) == 0))
	        j++;
	    if (value & (1<<j)) {
                 src=j+(((addr/4)% 8)*4);
                 dest=(addr-VORTEX_MIX_ENIN)/32;
	        printk(KERN_INFO "%.5x : %.8x   mixin(%.2d) -> mixout(%.2d)\n",
addr,value,src,dest);
             };
         };
         addr+=4;
     };
     printk(KERN_INFO "----------------------------------------\n");
}

void vortex_dump_routes(vortex_t *vortex,char * debug_msg)
{
	u32 value;
	u8 src,dest;
	int i;
         printk(KERN_INFO "Routes %s-----------\n",debug_msg);
	for (i=0; i<(VORTEX_ADB_RTBASE_COUNT+VORTEX_ADB_CHNBASE_COUNT); i++) {
		value=hwread(vortex->mmio,VORTEX_ADB_RTBASE+i*4);
		if ( value != ROUTE_MASK ) {
			src=(value >>ADB_SHIFT)& ADB_MASK;
			dest=value & ADB_MASK;
		   	printk(KERN_INFO "%.8x : %.8x   %s -> %s\n",
			VORTEX_ADB_RTBASE+i*4,value,au8830_src[src],au8830_dest[dest]);
		};
	};	
	printk(KERN_INFO "----------------------------------------\n");
	vortex_dump_mixin_mixout(vortex);
}
















-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: au8830 - front / rear channels swapped after first play and Surround40
  2005-03-11  5:31 au8830 - front / rear channels swapped after first play and Surround40 Raymond
@ 2005-03-11 12:58 ` Manuel Jander
  2005-03-13  1:17   ` Lee Revell
  0 siblings, 1 reply; 6+ messages in thread
From: Manuel Jander @ 2005-03-11 12:58 UTC (permalink / raw)
  To: Raymond, alsa-devel

hi Raymond,

On Fri, 2005-03-11 at 13:31 +0800, Raymond wrote:
> When watching movie using gxine(xine-lib) downmix DVD sound to 
> Surround40, the human voice (Center) come out from rear speakers instead 
> of front on the second movie.
> 
> Turn off the Sigmatel STAC9708 stereo to 4 speakers and Sigmatel
> Surround Mix, Sigmatel 3D Surround using alsamixer.

I don't  understand. Are your recommending something or telling us what
you actually did ?

> 
> <confdir:pcm/front.conf>
> 
> AU8830.pcm.front.0 {
> 	@args [ CARD ]
> 	@args.CARD {
> 		type string
> 	}
> 	type hw
> 	card $CARD
> 	device 0
> }	
> 
> <confdir:pcm/surround40.conf>
> 
> AU8830.pcm.surround40.0 "cards.AU8830.pcm.front.0"
> 
> <confdir:pcm/iec958.conf>
> 
> AU8830.pcm.iec958.0 {
> 	@args [ CARD AES0 AES1 AES2 AES3 ]
> 	@args.CARD {
> 		type string
> 	}
> 	@args.AES0 {
> 		type integer
> 	}
> 	@args.AES1 {
> 		type integer
> 	}
> 	@args.AES2 {
> 		type integer
> 	}
> 	@args.AES3 {
> 		type integer
> 	}
> 	type hw
> 	card $CARD
> 	device 1
> }
> 
> 
> 1) Is this related to no cards.AU8830.pcm.rear in
> /usr/share/alsa/cards/AU8830.conf ?
> 
> I repeat the "aplay test" with out1lq.wav, out1rq.wav, out2lq.wav
> and out2rq.wav.
> 
> https://bugtrack.alsa-project.org/alsa-bug/view.php?id=59
> 
> Although there is a route left after snd_vortex_pcm_hw_free() when
> playing stereo sound (e.g. outls.wav and outrs.wav )
> 
> There is no swap of left/right channels on au8830.
> 
> The swapping of front/rear also occur when using speaker-test -c 4
> 
> 
> 2) Why "snd_vortex_pcm_hw_free()" is called twice by "aplay" ?

AFAIK, ALSA does not enforce that this function will be called only
once. It can be called multiple times, thus this is not something
strange.

> 3) Is the bug related to "vortex: IRQ fifo error" ?

No, thats not a bug. Thats normal.

> 4) Why some routes such as "ADBDMA(00) -> SRCIN(01)",
> "ADBDMA(00) -> SRCIN(02)", "ADBDMA(00) -> SRCIN(03)" are still exist
> after snd_vortex_pcm_hw_free ?

If the header entry of a set of routes, which are on the same bus is
missing, then all the other routes are disabled too. Routes that do not
have a header entry, are disabled.

> 5) What is the usage of Pre 3D/Post 3D setting in 'PCM Out Path & Mute' ?

Thats just a setting of the AC97 codec. It adds some cross mixture
between both stereo channels, but has nothing to do with real 3D sound.

> Need to understand the routes and mixin mixout setting before complete
> the au88x0_ac3_passthrough_spdif.patch.
> 
> 6) How to fill up the remain symbols in au8830_src[256] and
> au8830_dest[256] from OFFSET_???? from au8830.h ?
> 
> #define		OFFSET_ADBDMA	0x00
> #define		OFFSET_ADBDMAB	0x20
> #define		OFFSET_SRCIN	0x40
> #define		OFFSET_SRCOUT	0x20	/* ch 0x11 */
> #define		OFFSET_MIXIN	0x50	/* ch 0x11 */
> #define		OFFSET_MIXOUT	0x30	/* ch 0x11 */
> #define		OFFSET_CODECIN	0x70 /* ch 0x11 */	/* adb source */
> #define		OFFSET_CODECOUT	0x88 /* ch 0x11 */	/* adb target */
> #define		OFFSET_SPORTIN	0x78	/* ch 0x13 ADB source. 2 routes. */
> #define		OFFSET_SPORTOUT	0x90	/* ch 0x13 ADB sink. 2 routes. */
> #define		OFFSET_SPDIFIN	0x7A	/* ch 0x14 ADB source. */
> #define		OFFSET_SPDIFOUT	0x92	/* ch 0x14 ADB sink. */
> #define		OFFSET_AC98IN	0x7c	/* ch 0x14 ADB source. */
> #define		OFFSET_AC98OUT	0x94	/* ch 0x14 ADB sink. */
> #define		OFFSET_EQIN		0xa0	/* ch 0x11 */
> #define		OFFSET_EQOUT	0x7e /* ch 0x11 */	/* 2 routes on ch 0x11 */
> #define		OFFSET_A3DIN	0x70	/* ADB sink. */
> #define		OFFSET_A3DOUT	0xA6	/* ADB source. 2 routes per slice = 8 */
> #define		OFFSET_WT0		0x40	/* WT bank 0 output. 0x40 - 0x65 */
> #define		OFFSET_WT1		0x80	/* WT bank 1 output. 0x80 - 0xA5 */
> /* WT sources offset : 0x00-0x1f Direct stream. */
> /* WT sources offset : 0x20-0x25 Mixed Output. */
> #define		OFFSET_XTALKOUT	0x66	/* crosstalk canceller (source) 2 routes */
> #define		OFFSET_XTALKIN	0x96	/* crosstalk canceller (sink). 10 routes */
> #define		OFFSET_EFXOUT	0x68	/* ADB source. 8 routes. */
> #define		OFFSET_EFXIN	0x80	/* ADB sink. 8 routes. */

There are many Route sources or targets that are either unused or just
not documented. Since aureal did never release ant documentation, you
guess it, we will never know. By the way, there are no 256 source/target
pairs. The number of sources and target are different for each breed of
aureal chip, and not powers of 2.

Take a look at
http://galadriel.mat.utfsm.cl/~mjander/aureal/techdoc/techpaper.html
and au8830.pdf in the same folder.

> 7) Can anyone explain how the adddress of audio data pass to DMA
> registers in the current alsa driver code ?
> 
> I try to log the hwread() and hwwrite(), but dmesg cannot show all entries.

You should rather take attention on the vortex_connect_* functions
inside of au88x0_core.c instead at register level. The only thing you
have to taake care about is that if you make a route, that both, the
source and the target are enabled, providing and consuming data
respectively.

> 8) How to to obtain a full log ?

Hmm that could be rather difficult. Why don't you just add some printk
hooks into vortex_route* functions (au88x0_core.c) ? That would be a lot
easier and you get the really relevant information.

> Please note that I have disabled some default routes in
> vortex_connect_default()
> 
> //	vortex_wt_connect(vortex, en);
> //	vortex_Vort3D_connect(vortex, en);
> 
> 
> This following is the result of "aplay out1lq.wav".
> 
> # /etc/init.d/alsasound stop
> # /etc/init.d/alsasound start
> # dmesg
> 
> Vortex: init.... <6>done.
> input0: Analog 4-axis 4-button joystick at gameport0.0 [ADC port]
> Routes After vortex_connect_default()-----------
> 00028140 : 00007151   CODECIN(1) -> MIXIN(01)
> 00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
> 00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
> 00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
> 00028234 : 00007050   CODECIN(0) -> MIXIN(00)
> 00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
> 00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
> 00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
> 000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
> 00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
> ----------------------------------------
> MIXIN_MIXOUT ENABLE
> ----------------------------------------
> 
[snip!]


Best Regards,
--
Manuel Jander
Electronic Engineer



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: au8830 - front / rear channels swapped after first play and Surround40
  2005-03-11 12:58 ` Manuel Jander
@ 2005-03-13  1:17   ` Lee Revell
  2005-03-17  0:57     ` Manuel Jander
  0 siblings, 1 reply; 6+ messages in thread
From: Lee Revell @ 2005-03-13  1:17 UTC (permalink / raw)
  To: mjander; +Cc: Raymond, alsa-devel

On Fri, 2005-03-11 at 09:58 -0300, Manuel Jander wrote:
> Take a look at
> http://galadriel.mat.utfsm.cl/~mjander/aureal/techdoc/techpaper.html
> and au8830.pdf in the same folder.

Looks like this chipset has a wavetable synth.  And I noticed some
references to a driver on the openvortex list.  Would it be possible for
ALSA to support it?

Lee



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: au8830 - front / rear channels swapped after first play and Surround40
  2005-03-13  1:17   ` Lee Revell
@ 2005-03-17  0:57     ` Manuel Jander
  0 siblings, 0 replies; 6+ messages in thread
From: Manuel Jander @ 2005-03-17  0:57 UTC (permalink / raw)
  To: Lee Revell, alsa-devel

Hi Lee,

On Sat, 2005-03-12 at 20:17 -0500, Lee Revell wrote:
> On Fri, 2005-03-11 at 09:58 -0300, Manuel Jander wrote:
> > Take a look at
> > http://galadriel.mat.utfsm.cl/~mjander/aureal/techdoc/techpaper.html
> > and au8830.pdf in the same folder.
> 
> Looks like this chipset has a wavetable synth.  And I noticed some
> references to a driver on the openvortex list.  Would it be possible for
> ALSA to support it?

Of course, but there are some unresolved hardware issues. The WaveTable
helper hardware is very similar to the trident Wavetable helper
hardware. It does not interpret MIDI directly, but at least does some
effect processing in hardware. If i just had some time to spend on
this ... Grrr !!

Best Regards
-- 
Manuel Jander
Electronic Engineer



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: au8830 - front / rear channels swapped after first play and Surround40
@ 2005-03-26 16:38 Raymond
  0 siblings, 0 replies; 6+ messages in thread
From: Raymond @ 2005-03-26 16:38 UTC (permalink / raw)
  To: alsa-devel; +Cc: openvortex-dev


 >>Using "vortex_adbdma_stopfifo()" instead of vortex_adbdma_pausefifo()"
 >>in snd_vortex_pcm_trigger() (just like the last version of au88x0 in
 >>alsa-driver before it merged into alsa-kernel) seem to fix the
 >>front/rear channels swap when playing 4 channels sound in au8830.

Manuel Jander wrote:
 >
 > Does the IRQ fifo error appear once for every sound played or a lot
 > more than that ? if it appears once for every PCM plaayback start, it
 > may be that this error is just a harmless "fifo empty" error, and as
 > such could be just ignored. An if it really signals a FIFO empty
 > error, it maybe useful to detect xruns ?

The fifo error also occur when using the pause/resume button of xmms 
1.2.10 (alsa 1.2.10 output plugin) to pause and resume of the playing of 
music.

vortex: start 0
vortex: IRQ fifo error
vortex: pause 0
vortex: resume 0
vortex: IRQ fifo error
vortex: pause 0
vortex: resume 0
vortex: pause 0
vortex: resume 0
vortex: IRQ fifo error
vortex: pause 0
vortex: resume 0
vortex: IRQ fifo error
vortex: stop 0


1) How to prove that it is just a harmless "fifo empty" error ?

The outls.wav and outrs.wav (may be too short) cannot be paused in xmms.


Raymond










-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: au8830 - front / rear channels swapped after first play and Surround40
@ 2005-03-12  9:27 Raymond
  0 siblings, 0 replies; 6+ messages in thread
From: Raymond @ 2005-03-12  9:27 UTC (permalink / raw)
  To: alsa-devel; +Cc: openvortex-dev

> > 3) Is the bug related to "vortex: IRQ fifo error" ?

>  No, thats not a bug. Thats normal.

http://lists.gnu.org/archive/html/openvortex-dev/2004-03/msg00007.html

I think the front/rear swap bug is related to that "vortex: IRQ fifo error".

As the hardware equalizer is only connected from the front channels to 
the CODECOUT(0/1) in the ALSA au88x0 driver when playing at 4 channel 
sound through hw:0,0 (adb)

Routes After adb_allocroute() in snd_vortex_pcm_hw_params-----------
00028100 : 00000041   ADBDMA(00) -> SRCIN(01)
00028104 : 00000042   ADBDMA(00) -> SRCIN(02)
00028108 : 00000043   ADBDMA(00) -> SRCIN(03)
00028140 : 00007151   CODECIN(1) -> MIXIN(01)
00028144 : 00002052   SRCOUT(00) -> MIXIN(02)
00028148 : 00002153   SRCOUT(01) -> MIXIN(03)
0002814c : 00002254   SRCOUT(02) -> MIXIN(04)
00028150 : 00002355   SRCOUT(03) -> MIXIN(05)
00028220 : 00007f89   EQOUT(1) -> CODECOUT(1)
00028224 : 0000328c   MIXOUT(02) -> CODECOUT(4)
00028230 : 0000338d   MIXOUT(03) -> CODECOUT(5)
00028234 : 00007050   CODECIN(0) -> MIXIN(00)
00028248 : 00003593   MIXOUT(05) -> SPDIFOUT(1)
00028280 : 000031a1   MIXOUT(01) -> EQIN(1)
00028284 : 00007e88   EQOUT(0) -> CODECOUT(0)
000282c0 : 00000040   ADBDMA(00) -> SRCIN(00)
000282f8 : 000030a0   MIXOUT(00) -> EQIN(0)
00028304 : 00003492   MIXOUT(04) -> SPDIFOUT(0)
----------------------------------------
MIXIN_MIXOUT ENABLE
21a00 : 00000004   mixin(02) -> mixout(00)
21a20 : 00000008   mixin(03) -> mixout(01)
21a44 : 00000001   mixin(04) -> mixout(02)
21a64 : 00000002   mixin(05) -> mixout(03)
21a80 : 00000004   mixin(02) -> mixout(04)
21a84 : 00000001   mixin(04) -> mixout(04)
21aa0 : 00000008   mixin(03) -> mixout(05)
21aa4 : 00000002   mixin(05) -> mixout(05)


#/etc/init.d/alsasound stop
Shutting down sound driver: done
# /etc/init.d/alsasound start
Starting sound driver: snd-au8830 done

http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-utils/speaker-test/

Running "speaker-test -c 4" and watching the graphical equalizer of the
vortexcontrol

# speaker-test -c 4

  speaker-test 0.0.7

Playback device is plughw:0,0
Stream parameters are 48000Hz, S16_LE, 4 channels
Sine wave rate is 440.0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 2 to 8192
Period size range from 1 to 512
Periods = 4
Buffer time size 2525
To choose buffer_size = 8192
To choose period_size = 2048
was set period_size = 512
was set buffer_size = 8192
  0 - Front Left
  1 - Front Right
  3 - Rear Right
  2 - Rear Left
Time per period = 11.854851
  0 - Front Left
  1 - Front Right
  3 - Rear Right
  2 - Rear Left
Time per period = 11.987920
  0 - Front Left

The 10 bands graphical equalizer in vortexcontrol show peak value at
500Hz band when speaker-test is testing the front left and front right,
no value when speaker-test is testing rear left and rear right.
(Front/Rear channels are all correct)

As there is no option to let "speaker-test" to run for a specified
number of pass and stop, it is aborted by Control-C.

When running the "speaker-test -c 4" again, the graphical equalizer show
peak value at 500Hz band only when speaker-test is testing the rear left
and rear right and no value when it is testing the Front Left and
Front Right. (Front/Rear channels are swapped until driver is reloaded).

It seem that the patch mentioned in

http://lists.gnu.org/archive/html/openvortex-dev/2003-12/msg00009.html

intened to fixed the problem in the OSS application in

http://lists.gnu.org/archive/html/openvortex-dev/2003-11/msg00016.html


1) Is the FIFO is still suspending not stopped ?












-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-03-26 16:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-11  5:31 au8830 - front / rear channels swapped after first play and Surround40 Raymond
2005-03-11 12:58 ` Manuel Jander
2005-03-13  1:17   ` Lee Revell
2005-03-17  0:57     ` Manuel Jander
2005-03-12  9:27 Raymond
2005-03-26 16:38 Raymond

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.