Hi,
I managed to get it working, after some hard debugging.
On Sunday 19 February 2006 19:32, Hans Petter Selasky wrote:
Should be:
u_int32_t
usb_vtophys(void *ptr, u_int32_t size)
{
struct usb_dma *arg = (void *)(((u_int8_t *)ptr) + size);
#if 1
return arg->map->dm_segs[0].ds_addr;
#else
return arg->seg.ds_addr;
#endif
}
Should be:
void
usb_free_mem(void *ptr, u_int32_t size)
{
struct usb_dma *arg = (void *)(((u_int8_t *)ptr) + size);
struct usb_dma temp = *arg; /* make a copy ! */
bus_dmamap_unload(temp.tag, temp.map);
bus_dmamap_destroy(temp.tag, temp.map);
bus_dmamem_unmap(temp.tag, ptr, size);
bus_dmamem_free(temp.tag, &temp.seg, temp.seg_count);
return;
}
--HPS