Re: bus_dmamem question

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Hans Petter Selasky
Date: Sunday, February 26, 2006 - 1:58 pm

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
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
bus_dmamem question, Hans Petter Selasky, (Sun Feb 19, 11:32 am)
Re: bus_dmamem question, Hans Petter Selasky, (Sun Feb 26, 1:58 pm)
Re: bus_dmamem question, Jonathan Stone, (Wed Mar 1, 2:18 pm)
Re: bus_dmamem question, Hans Petter Selasky, (Wed Mar 1, 11:40 pm)
Re: bus_dmamem question, Martin Husemann, (Thu Mar 2, 2:04 am)
Re: bus_dmamem question, Izumi Tsutsui, (Thu Mar 2, 6:11 am)