* Re: [Openvortex-dev] aplay - How to use device 3 of card 0 ?
@ 2005-03-07 7:54 Raymond
2005-03-07 12:22 ` Manuel Jander
0 siblings, 1 reply; 3+ messages in thread
From: Raymond @ 2005-03-07 7:54 UTC (permalink / raw)
To: openvortex-dev; +Cc: alsa-devel
>> 2) How did you perform your "WT DMA" test ?
>Using:
>aplay -d hw:0,1 test.wav
>The result for me was that aplay did newer finish, because data was
>never being transfered. After some time it timed out with an error.
http://savannah.nongnu.org/cgi-bin/viewcvs/openvortex/alsa/pci/au88x0/au88x0_pcm.c.diff?r1=1.9&r2=1.10
#define VORTEX_PCM_TYPE(x) (x->name[40])
http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/au88x0/au88x0_pcm.c?rev=1.6&view=markup
snd_vortex_new_pcm()
{
...
strcpy(pcm->name, vortex_pcm_name[idx]);
chip->pcm[idx] = pcm;
// This is an evil hack, but it saves a lot of duplicated code.
VORTEX_PCM_TYPE(pcm) = idx;
pcm->private_data = chip;
...
}
Added debug statement in snd_vortex_pcm_open()
/* Avoid PAGE_SIZE boundary to fall inside of a period. */
if ((err =
snd_pcm_hw_constraint_pow2(runtime, 0,
SNDRV_PCM_HW_PARAM_PERIOD_BYTES)) < 0)
return err;
+ printk(KERN_INFO "vortex_pcm_open()
%d\n",VORTEX_PCM_TYPE(substream->pcm));
if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) {
Don't know why VORTEX_PCM_TYPE(substream->pcm) is always zero when using
"aplay -d hw:0,1 test.wav" or "aplay -d hw:0,3 test.wav"
-------------------------------------------------------
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] 3+ messages in thread* Re: Re: [Openvortex-dev] aplay - How to use device 3 of card 0 ?
2005-03-07 7:54 [Openvortex-dev] aplay - How to use device 3 of card 0 ? Raymond
@ 2005-03-07 12:22 ` Manuel Jander
0 siblings, 0 replies; 3+ messages in thread
From: Manuel Jander @ 2005-03-07 12:22 UTC (permalink / raw)
To: Raymond, openvortex-dev, alsa-devel
Hi Raymond,
On Mon, 2005-03-07 at 15:54 +0800, Raymond wrote:
> >> 2) How did you perform your "WT DMA" test ?
>
> >Using:
> >aplay -d hw:0,1 test.wav
>
> >The result for me was that aplay did newer finish, because data was
> >never being transfered. After some time it timed out with an error.
>
> http://savannah.nongnu.org/cgi-bin/viewcvs/openvortex/alsa/pci/au88x0/au88x0_pcm.c.diff?r1=1.9&r2=1.10
>
> #define VORTEX_PCM_TYPE(x) (x->name[40])
>
> http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/au88x0/au88x0_pcm.c?rev=1.6&view=markup
>
> snd_vortex_new_pcm()
> {
> ...
> strcpy(pcm->name, vortex_pcm_name[idx]);
> chip->pcm[idx] = pcm;
> // This is an evil hack, but it saves a lot of duplicated code.
> VORTEX_PCM_TYPE(pcm) = idx;
> pcm->private_data = chip;
> ...
> }
I'm the author of that ugly thing :)
> Added debug statement in snd_vortex_pcm_open()
>
>
> /* Avoid PAGE_SIZE boundary to fall inside of a period. */
> if ((err =
> snd_pcm_hw_constraint_pow2(runtime, 0,
> SNDRV_PCM_HW_PARAM_PERIOD_BYTES)) < 0)
> return err;
> + printk(KERN_INFO "vortex_pcm_open()
> %d\n",VORTEX_PCM_TYPE(substream->pcm));
>
> if (VORTEX_PCM_TYPE(substream->pcm) != VORTEX_PCM_WT) {
>
>
> Don't know why VORTEX_PCM_TYPE(substream->pcm) is always zero when using
> "aplay -d hw:0,1 test.wav" or "aplay -d hw:0,3 test.wav"
Hmm, if we are lucky, you are the one, who finally found out why the WT
engine does not work. The thing to be done, is to change the mechanism
in which we differentiate between WT and ADB channels. I just used
char[40] of the name string, but thats not a very safe thing. One thing
would be using a intermediate struct for substream->pcm->private_data,
for example:
typedef struct _au_pcm {
int type;
chip_t *chip; /* type is probably wrong here. */
} au_pcm;
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] 3+ messages in thread
* Re: [Openvortex-dev] aplay - How to use device 3 of card 0 ?
@ 2005-03-09 9:17 Raymond
2005-03-09 9:14 ` Takashi Iwai
0 siblings, 1 reply; 3+ messages in thread
From: Raymond @ 2005-03-09 9:17 UTC (permalink / raw)
To: openvortex-dev; +Cc: alsa-devel
> > 2) How did you perform your "WT DMA" test ?
> Using:
> aplay -d hw:0,1 test.wav
> The result for me was that aplay did newer finish, because data was
> never being transfered. After some time it timed out with an error.
The correct syntax should be "aplay -D hw:0,3 piano.wav"
# strace aplay --verbose -D hw:0,3 piano.wav
execve("/usr/bin/aplay", ["aplay", "--verbose", "-D", "hw:0,3",
"piano.wav"], [/* 35 vars */]) = 0
uname({sys="Linux", node="localhost.localdomain", ...}) = 0
brk(0) = 0x9b82000
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) = 0xbf592000
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\320\352"...,
512) = 512fstat64(3, {st_mode=S_IFREG|0755, st_size=1901275, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0xbf591000
old_mmap(NULL, 659328, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xf57000
old_mmap(0xff4000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x9d000) = 0xff4000
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) = 0xbf590000
set_thread_area({entry_number:-1 -> 6, base_addr:0xbf590640,
limit:1048575, seg_32bit:1, contents:0, read_exec_only:0,
limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xbf592000, 82204) = 0
set_tid_address(0xbf590688) = 12732
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) = 0x9b82000
brk(0x9ba3000) = 0x9ba3000
brk(0) = 0x9ba3000
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) = 0xbf5a6000
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(0xbf5a6000, 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("/dev/snd/controlC0", O_RDONLY) = 3
close(3) = 0
open("/dev/snd/controlC0", O_RDWR) = 3
ioctl(3, USBDEVFS_CONTROL, 0xbff0906c) = 0
ioctl(3, 0x40045532, 0xbff09094) = 0
open("/dev/snd/pcmC0D3p", O_RDWR) = 4
close(3) = 0
ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbff08f60) = 0
fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR)
ioctl(4, AGPIOC_INFO, 0xbff08f5c) = 0
ioctl(4, AGPIOC_RELEASE or APM_IOC_SUSPEND, 0xbff08f58) = 0
mmap2(NULL, 4096, PROT_READ, MAP_SHARED, 4, 0x80000) = 0xbf5a6000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, 4, 0x81000) = 0xbf5a5000
ioctl(4, AGPIOC_ACQUIRE or APM_IOC_STANDBY, 0xbff093b0) = 0
rt_sigaction(SIGINT, {0x804ac0c, [INT], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGTERM, {0x804ac0c, [TERM], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
rt_sigaction(SIGABRT, {0x804ac0c, [ABRT], SA_RESTORER|SA_RESTART,
0x718a58}, {SIG_DFL}, 8) = 0
open("piano.wav", O_RDONLY|O_LARGEFILE) = 3
read(3, "RIFF\260O\7\0WAVEfmt \20\0\0\0\1\0\1\0", 24) = 24
read(3, "D\254", 2) = 2
read(3, "\0\0\210X\1\0\2\0\20\0", 10) = 10
read(3, "data\214O\7\0", 8) = 8
write(2, "Playing WAVE \'piano.wav\' : ", 27Playing WAVE 'piano.wav' : )
= 27
write(2, "Signed 16 bit Little Endian, ", 29Signed 16 bit Little Endian,
) = 29
write(2, "Rate 44100 Hz, ", 15Rate 44100 Hz, ) = 15
write(2, "Mono", 4Mono) = 4
write(2, "\n", 1
) = 1
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff08b00) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4110, 0xbff09090) = 0
ioctl(4, 0xc25c4111, 0xbff09090) = 0
ioctl(4, 0xc0684113, 0xbff08f60) = 0
ioctl(4, 0x4140, 0x566) = 0
ioctl(4, 0xc0684113, 0xbff09020) = 0
open("/dev/snd/controlC0", O_RDWR) = 5
ioctl(5, USBDEVFS_CONTROL, 0xbff08dbc) = 0
ioctl(5, UI_DEV_CREATE, 0xbff08e20) = 0
close(5) = 0
write(2, "Hardware PCM card 0 \'au8830\' dev"..., 50Hardware PCM card 0
'au8830' device 3 subdevice 0
) = 50
write(2, "\nIts setup is:\n", 15
Its setup is:
) = 15
write(2, "stream : PLAYBACK\n", 24stream : PLAYBACK
) = 24
write(2, "access : RW_INTERLEAVED\n", 30access : RW_INTERLEAVED
) = 30
write(2, "format : S16_LE\n", 22format : S16_LE
) = 22
write(2, "subformat : STD\n", 19subformat : STD
) = 19
write(2, "channels : 1\n", 17channels : 1
) = 17
write(2, "rate : 44100\n", 21rate : 44100
) = 21
write(2, "exact rate : 44100 (44100/1)\n", 31exact rate : 44100
(44100/1)
) = 31
write(2, "msbits : 16\n", 18msbits : 16
) = 18
write(2, "buffer_size : 22528\n", 21buffer_size : 22528
) = 21
write(2, "period_size : 2048\n", 20period_size : 2048
) = 20
write(2, "period_time : 46439\n", 21period_time : 46439
) = 21
write(2, "tick_time : 10000\n", 21tick_time : 10000
) = 21
write(2, "tstamp_mode : NONE\n", 20tstamp_mode : NONE
) = 20
write(2, "period_step : 1\n", 17period_step : 1
) = 17
write(2, "sleep_min : 0\n", 17sleep_min : 0
) = 17
write(2, "avail_min : 2048\n", 20avail_min : 2048
) = 20
write(2, "xfer_align : 2048\n", 20xfer_align : 2048
) = 20
write(2, "start_threshold : 22528\n", 25start_threshold : 22528
) = 25
write(2, "stop_threshold : 22528\n", 25stop_threshold : 22528
) = 25
write(2, "silence_threshold: 0\n", 21silence_threshold: 0
) = 21
write(2, "silence_size : 0\n", 17silence_size : 0
) = 17
write(2, "boundary : 1476395008\n", 26boundary : 1476395008
) = 26
read(3, ">\375g\375\224\375\304\375\6\376Z\376\277\376=\377\316"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\251\1\255\1\262\1\301\1\330\1\355\1\2\2\35\0025\2H\2N"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\370\377\363\377\355\377\336\377\316\377\303\377\270\377"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "^\376\344\376|\377+\0\360\0\311\1\257\2\224\3z\4O\5\6\6"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "D\1)\1\20\1\357\0\325\0\276\0\237\0\207\0q\0]\0V\0J\000"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "|\2<\2\1\2\316\1\227\1n\1a\1T\1<\1\'\1\17\1\372\0\326\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "N\375\372\374\253\374`\374\"\374\366\373\333\373\317\373"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\347\1\261\1|\1Q\0014\1%\1\25\1\f\1\t\1\1\1\367\0\347\0"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\314\376\344\376\371\376\16\377\34\377\'\3778\377U\377"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\r\4\7\4\365\3\325\3\247\3t\3=\3\2\3\300\2w\2 \2\302\1"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "\317\0!\1i\1\254\1\331\1\350\1\343\1\310\1\235\1h\1$\1"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = 0
read(3, "}\3\272\3\357\3\30\4:\4`\4\203\4\245\4\314\4\353\4\t\5"...,
4096) = 4096
ioctl(4, 0x400c4150, 0xbff092b0) = -1 EIO (Input/output error)
write(2, "aplay: pcm_write:1146: ", 23aplay: pcm_write:1146: ) = 23
write(2, "write error: Input/output error", 31write error: Input/output
error) = 31
write(2, "\n", 1
) = 1
exit_group(1) = ?
I can only hear "hmm" sound from the speakers until the program abort.
1) Do strace indicate "data was never being transfered" ?
#dmesg
vortex: WT PARM3: 0
vortex: WT GMODE: ffffffff
vortex: WT GMODE 2 : ffffffff
vortex: wt start 0
vortex: wt stop 0
vortex: WT PARM3: cff1c810
vortex: WT GMODE: ffffffff
vortex: WT GMODE 2 : fffffffe
-------------------------------------------------------
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] 3+ messages in thread* Re: Re: [Openvortex-dev] aplay - How to use device 3 of card 0 ?
2005-03-09 9:17 Raymond
@ 2005-03-09 9:14 ` Takashi Iwai
0 siblings, 0 replies; 3+ messages in thread
From: Takashi Iwai @ 2005-03-09 9:14 UTC (permalink / raw)
To: Raymond; +Cc: openvortex-dev, alsa-devel
At Wed, 09 Mar 2005 17:17:41 +0800,
Raymond wrote:
>
> > > 2) How did you perform your "WT DMA" test ?
>
> > Using:
> > aplay -d hw:0,1 test.wav
>
> > The result for me was that aplay did newer finish, because data was
> > never being transfered. After some time it timed out with an error.
>
> The correct syntax should be "aplay -D hw:0,3 piano.wav"
Ah damn, of course it must be -D :)
> ioctl(4, 0x400c4150, 0xbff092b0) = -1 EIO (Input/output error)
> write(2, "aplay: pcm_write:1146: ", 23aplay: pcm_write:1146: ) = 23
> write(2, "write error: Input/output error", 31write error: Input/output
> error) = 31
> write(2, "\n", 1
> ) = 1
> exit_group(1) = ?
>
>
> I can only hear "hmm" sound from the speakers until the program abort.
> 1) Do strace indicate "data was never being transfered" ?
I don't know whether it's "never", but at least the transfer was
aborted after a certain amount of write. Usually -EIO means that DMA
isn't working properly.
If you compile with CONFIG_SND_DEBUG, you might see the message
"playback drain error (DMA or IRQ trouble?)" from kernel.
Takashi
-------------------------------------------------------
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] 3+ messages in thread
end of thread, other threads:[~2005-03-09 9:14 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-07 7:54 [Openvortex-dev] aplay - How to use device 3 of card 0 ? Raymond
2005-03-07 12:22 ` Manuel Jander
-- strict thread matches above, loose matches on Subject: below --
2005-03-09 9:17 Raymond
2005-03-09 9:14 ` Takashi Iwai
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.