<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.9">
<TITLE>RE: invalid address returned by usb_alloc_coherent on dockstar</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->
<BR>
<P><FONT SIZE=2>>> That's where it's going wrong. Buffers allocated by dma_alloc_coherent()<BR>
>> are already DMA coherent and must not be passed to dma_map_single(). I<BR>
>> believe USB has some way to be told that the buffer is already suitable<BR>
>> for DMA without needing additional handling.<BR>
<BR>
>Yes,<BR>
>setting<BR>
>urb->transfer_flags = URB_NO_TRANSFER_DMA_MAP<BR>
>will do this<BR>
<BR>
>Regards,<BR>
<BR>
>Martin<BR>
<BR>
<BR>
Russell and Martin<BR>
<BR>
THANKS!!! That solved it. I also saw in the linux device drivers 3rd edition that they added<BR>
<BR>
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;<BR>
<BR>
after the call to usb_fill_bulk_urb<BR>
<BR>
I did this and now it captures from /dev/video0 just fine.<BR>
<BR>
If you ever find yourself in New Orleans I'll buy you a beer!<BR>
<BR>
Thanks,<BR>
James<BR>
</FONT>
</P>
</BODY>
</HTML>