Changeset c21e6a5 in mainline for uspace/drv/bus/usb/xhci/transfers.c


Ignore:
Timestamp:
2018-02-05T00:54:08Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
af16ebe
Parents:
65c059f
git-author:
Ondřej Hlavatý <aearsis@…> (2018-02-05 00:27:40)
git-committer:
Ondřej Hlavatý <aearsis@…> (2018-02-05 00:54:08)
Message:

usbhost: prepare buffers for transfers in library

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/xhci/transfers.c

    r65c059f rc21e6a5  
    115115{
    116116        xhci_transfer_t *transfer = xhci_transfer_from_batch(batch);
    117 
    118         dma_buffer_free(&transfer->hc_buffer);
    119117        free(transfer);
    120118}
     
    135133        size_t i, size_t total, size_t *remaining)
    136134{
    137         const uintptr_t ptr = dma_buffer_phys(&transfer->hc_buffer,
    138                 transfer->hc_buffer.virt + i * PAGE_SIZE);
     135        const uintptr_t ptr = dma_buffer_phys(&transfer->batch.dma_buffer,
     136                transfer->batch.dma_buffer.virt + i * PAGE_SIZE);
    139137
    140138        trb->parameter = host2xhci(64, ptr);
     
    418416        }
    419417
    420         if (batch->dir == USB_DIRECTION_IN) {
    421                 assert(batch->buffer);
    422                 assert(batch->transferred_size <= batch->buffer_size);
    423                 memcpy(batch->buffer, transfer->hc_buffer.virt, batch->transferred_size);
    424         }
     418        assert(batch->transferred_size <= batch->buffer_size);
    425419
    426420        usb_transfer_batch_finish(batch);
     
    472466        const usb_transfer_type_t type = batch->ep->transfer_type;
    473467        assert(transfer_handlers[type]);
    474 
    475         if (batch->buffer_size > 0) {
    476                 if (dma_buffer_alloc(&transfer->hc_buffer, batch->buffer_size))
    477                         return ENOMEM;
    478         }
    479 
    480         if (batch->dir != USB_DIRECTION_IN) {
    481                 // Sending stuff from host to device, we need to copy the actual data.
    482                 memcpy(transfer->hc_buffer.virt, batch->buffer, batch->buffer_size);
    483         }
    484468
    485469        /*
Note: See TracChangeset for help on using the changeset viewer.