Changeset af16ebe in mainline
- Timestamp:
- 2018-02-05T00:54:52Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 239eea41
- Parents:
- c21e6a5
- git-author:
- Ondřej Hlavatý <aearsis@…> (2018-02-05 00:49:07)
- git-committer:
- Ondřej Hlavatý <aearsis@…> (2018-02-05 00:54:52)
- Location:
- uspace
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/xhci/endpoint.c
rc21e6a5 raf16ebe 92 92 ep->max_transfer_size = ep->max_packet_size * ep->packets_per_uframe; 93 93 } 94 else {95 ep->max_transfer_size = 200 * PAGE_SIZE;96 }97 94 } 98 95 -
uspace/drv/bus/usb/xhci/trb_ring.c
rc21e6a5 raf16ebe 223 223 errno_t err; 224 224 assert(trbs > 0); 225 226 if (trbs > xhci_trb_ring_size(ring)) 227 return ELIMIT; 228 225 229 fibril_mutex_lock(&ring->guard); 226 230 … … 309 313 } 310 314 315 size_t xhci_trb_ring_size(xhci_trb_ring_t *ring) 316 { 317 return ring->segment_count * SEGMENT_TRB_USEFUL_COUNT; 318 } 319 311 320 /** 312 321 * Initializes an event ring. -
uspace/drv/bus/usb/xhci/trb_ring.h
rc21e6a5 raf16ebe 78 78 extern errno_t xhci_trb_ring_enqueue(xhci_trb_ring_t *, xhci_trb_t *, uintptr_t *); 79 79 extern errno_t xhci_trb_ring_enqueue_multiple(xhci_trb_ring_t *, xhci_trb_t *, size_t, uintptr_t *); 80 extern size_t xhci_trb_ring_size(xhci_trb_ring_t *); 80 81 81 82 extern void xhci_trb_ring_reset_dequeue_state(xhci_trb_ring_t *ring, uintptr_t *addr); -
uspace/lib/drv/include/usbhc_iface.h
rc21e6a5 raf16ebe 116 116 usb_direction_t direction; 117 117 118 /** Maximum size of one transfer */ 118 /** 119 * Maximum size of one transfer. Non-periodic endpoints may handle 120 * bigger transfers, but those can be split into multiple USB transfers. 121 */ 119 122 size_t max_transfer_size; 120 123 -
uspace/lib/usbhost/src/endpoint.c
rc21e6a5 raf16ebe 244 244 } 245 245 246 /** Limit transfers with reserved bandwidth to the amount reserved */ 247 if (ep->direction == USB_DIRECTION_OUT && size > ep->max_transfer_size) 248 return ENOSPC; 246 /* 247 * Limit transfers with reserved bandwidth to the amount reserved. 248 * OUT transfers are rejected, IN can be just trimmed in advance. 249 */ 250 if ((ep->transfer_type == USB_TRANSFER_INTERRUPT || ep->transfer_type == USB_TRANSFER_ISOCHRONOUS) && size > ep->max_transfer_size) { 251 if (direction == USB_DIRECTION_OUT) 252 return ENOSPC; 253 else 254 size = ep->max_transfer_size; 255 256 } 249 257 250 258 /* Offline devices don't schedule transfers other than on EP0. */
Note:
See TracChangeset
for help on using the changeset viewer.