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