Which USB-Soundcards work?
Pyun YongHyeon
yongari at kt-is.co.kr
Tue Feb 1 21:46:11 PST 2005
On Wed, Feb 02, 2005 at 12:50:13PM +0900, Kazuhito HONDA wrote:
>
> > play channel supported format list invalid
> > pcm1: chn_init(pcm1:play:0) failed: err = 19
> > pcm1: pcm_chn_create(ua_chan, 1, 0xc19f4a80) failed
> > record channel supported format list invalid
> > pcm1: chn_init(pcm1:record:0) failed: err = 19
> > pcm1: pcm_chn_create(ua_chan, -1, 0xc19f4a80) failed
>
> These look like the same problem as below:
> http://docs.freebsd.org/cgi/getmsg.cgi?fetch=246398+0+archive/2004/freebsd-usb/20041231.freebsd-usb
>
> If they are just same problems, It will be resolved by changing
> UAUDIO_PCM_BUFF_SIZE definition to (16*1024)-4 in uaudio_pcm.c.
> (if it is (18*1024)-1, sound right-left will be counterchanged.)
>
> This problem must come from maxsegz size
> in the function bus_dma_tag_create() in uaudio_pcm.c
> which is smaller than UAUDIO_PCM_BUFF_SIZE
> and one digit smaller than maxsegzs of other audio devices.
> Actually, this problem can be fixed by changing maxsegz
> from 0x3fff to 0x3ffff.
> But I don't know it has some reasons,
> or it is a mere copy mistake.
>
I guess this is a bug. As you know DMA buffer should be less than
the maxsegz. And if the USB device can handle DMA transferrs
up to 0x3ffff bytes in a segment it's ok to set the value in
bus_dma_tag_create(9). The value 0x3fff(16383) seems to be too small
one and I believe most hardwares can DMA up to 64KB at least. So I
guess it's an "copy & paste mistake".
--
Regards,
Pyun YongHyeon
http://www.kr.freebsd.org/~yongari | yongari at freebsd.org
More information about the freebsd-multimedia
mailing list