openvortex-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Openvortex-dev] au8830 - front / rear channels swapped after first play


From: Raymond
Subject: [Openvortex-dev] au8830 - front / rear channels swapped after first play and Surround40
Date: Fri, 11 Mar 2005 13:31:43 +0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.4.3) Gecko/20041005

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 address@hidden"..., 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, "address@hidden"...,
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);
}


















reply via email to

[Prev in Thread] Current Thread [Next in Thread]