Changeset fdc2253b in mainline


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

usb pipes: allocate with policy

Location:
uspace
Files:
5 edited

Legend:

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

    rcc63815 rfdc2253b  
    119119                goto err;
    120120
     121        /* Driver can handle non-contiguous buffers */
     122        ep->transfer_buffer_policy &= ~DMA_POLICY_CONTIGUOUS;
     123
     124        /* Driver can handle buffers crossing boundaries */
     125        ep->transfer_buffer_policy &= ~DMA_POLICY_NOT_CROSSING;
     126
     127        /* Some xHCs can handle 64-bit addresses */
     128        xhci_bus_t *bus = bus_to_xhci_bus(ep->device->bus);
     129        if (bus->hc->ac64)
     130                ep->transfer_buffer_policy &= ~DMA_POLICY_4GiB;
     131
    121132        return EOK;
    122133
  • uspace/lib/drv/include/usbhc_iface.h

    rcc63815 rfdc2253b  
    118118        /** Maximum size of one transfer */
    119119        size_t max_transfer_size;
     120
     121        /** Constraints on buffers to be transferred without copying */
     122        dma_policy_t transfer_buffer_policy;
    120123} usb_pipe_desc_t;
    121124
  • uspace/lib/usbdev/src/pipes.c

    rcc63815 rfdc2253b  
    171171void *usb_pipe_alloc_buffer(usb_pipe_t *pipe, size_t size)
    172172{
    173         // FIXME: Do not use the default policy, but the one required by HC.
    174 
    175173        dma_buffer_t buf;
    176         if (dma_buffer_alloc(&buf, size))
     174        if (dma_buffer_alloc_policy(&buf, size, pipe->desc.transfer_buffer_policy))
    177175                return NULL;
    178176
  • uspace/lib/usbhost/include/usb/host/endpoint.h

    rcc63815 rfdc2253b  
    9898        /** Maximum size of one transfer */
    9999        size_t max_transfer_size;
     100        /** Policy for transfer buffers */
     101        dma_policy_t transfer_buffer_policy;
     102
    100103        /**
    101104         * Number of packets that can be sent in one service interval
  • uspace/lib/usbhost/src/ddf_helpers.c

    rcc63815 rfdc2253b  
    8383                pipe_desc->transfer_type = ep->transfer_type;
    8484                pipe_desc->max_transfer_size = ep->max_transfer_size;
     85                pipe_desc->transfer_buffer_policy = ep->transfer_buffer_policy;
    8586        }
    8687        endpoint_del_ref(ep);
Note: See TracChangeset for help on using the changeset viewer.