<!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>&gt;&gt; That's where it's going wrong.  Buffers allocated by dma_alloc_coherent()<BR>
&gt;&gt; are already DMA coherent and must not be passed to dma_map_single().  I<BR>
&gt;&gt; believe USB has some way to be told that the buffer is already suitable<BR>
&gt;&gt; for DMA without needing additional handling.<BR>
<BR>
&gt;Yes,<BR>
&gt;setting<BR>
&gt;urb-&gt;transfer_flags&nbsp; = URB_NO_TRANSFER_DMA_MAP<BR>
&gt;will do this<BR>
<BR>
&gt;Regards,<BR>
<BR>
&gt;Martin<BR>
<BR>
<BR>
Russell and Martin<BR>
<BR>
THANKS!!! That solved it.&nbsp; I also saw in the linux device drivers 3rd edition that they added<BR>
<BR>
urb-&gt;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>