/fuchsia/zircon/system/dev/usb/xhci/ |
H A D | xhci-trb.c | 10 zx_status_t xhci_transfer_ring_init(xhci_transfer_ring_t* ring, zx_handle_t bti_handle, int count) { argument 11 zx_status_t status = io_buffer_init(&ring->buffer, bti_handle, 16 ring->start = io_buffer_virt(&ring->buffer); 17 ring->current = ring->start; 18 ring->dequeue_ptr = ring->start; 19 ring->full = false; 20 ring 29 xhci_transfer_ring_free(xhci_transfer_ring_t* ring) argument 34 xhci_transfer_ring_free_trbs(xhci_transfer_ring_t* ring) argument 53 xhci_event_ring_init(xhci_event_ring_t* ring, zx_handle_t bti_handle, erst_entry_t* erst_array, int count) argument 71 xhci_event_ring_free(xhci_event_ring_t* ring) argument 93 xhci_read_trb_ptr(xhci_transfer_ring_t* ring, xhci_trb_t* trb) argument 100 xhci_get_next_trb(xhci_transfer_ring_t* ring, xhci_trb_t* trb) argument 109 xhci_increment_ring(xhci_transfer_ring_t* ring) argument 138 xhci_set_dequeue_ptr(xhci_transfer_ring_t* ring, xhci_trb_t* new_ptr) argument 143 xhci_transfer_ring_phys_to_trb(xhci_transfer_ring_t* ring, zx_paddr_t phys) argument [all...] |
H A D | xhci-trb.h | 12 // used for both command ring and transfer rings 19 // (not used for command ring) 20 size_t size; // number of TRBs in ring 23 // an empty and full ring state 37 void xhci_transfer_ring_free(xhci_transfer_ring_t* ring); 38 size_t xhci_transfer_ring_free_trbs(xhci_transfer_ring_t* ring); 41 void xhci_event_ring_free(xhci_event_ring_t* ring); 45 void* xhci_read_trb_ptr(xhci_transfer_ring_t* ring, xhci_trb_t* trb); 46 xhci_trb_t* xhci_get_next_trb(xhci_transfer_ring_t* ring, xhci_trb_t* trb); 47 void xhci_increment_ring(xhci_transfer_ring_t* ring); 53 xhci_transfer_ring_start_phys(xhci_transfer_ring_t* ring) argument 57 xhci_transfer_ring_current_phys(xhci_transfer_ring_t* ring) argument 61 xhci_event_ring_start_phys(xhci_event_ring_t* ring) argument 65 xhci_event_ring_current_phys(xhci_event_ring_t* ring) argument [all...] |
H A D | xhci-transfer-common.h | 24 void xhci_print_trb(xhci_transfer_ring_t* ring, xhci_trb_t* trb); 30 // Queues TRBs on the given transfer ring for the Data stage of a USB transfer. 32 // there is space available on the transfer ring. 36 zx_status_t xhci_queue_data_trbs(xhci_transfer_ring_t* ring, xhci_transfer_state_t* state,
|
H A D | xhci-transfer-common.c | 10 void xhci_print_trb(xhci_transfer_ring_t* ring, xhci_trb_t* trb) { argument 11 int index = trb - ring->start; 13 uint64_t paddr = io_buffer_phys(&ring->buffer) + index * sizeof(xhci_trb_t); 42 // to avoid consecutive event data TRBs on a transfer ring. 50 zx_status_t xhci_queue_data_trbs(xhci_transfer_ring_t* ring, xhci_transfer_state_t* state, argument 54 size_t free_trbs = xhci_transfer_ring_free_trbs(ring); 61 xhci_trb_t* trb = ring->current; 96 if (driver_get_log_flags() & DDK_LOG_SPEW) xhci_print_trb(ring, trb); 97 xhci_increment_ring(ring); 121 xhci_trb_t* trb = ring [all...] |
H A D | xdc-transfer.c | 40 xhci_transfer_ring_t* ring = &ep->transfer_ring; variable 49 zx_status_t status = xhci_queue_data_trbs(ring, &ep->transfer_state, req, 55 // If we get here, then we are ready to ring the doorbell. 56 // Save the ring position so we can update the ring dequeue ptr once the transfer completes. 57 req->context = (void *)ring->current; 63 // Schedules any queued requests on the endpoint's transfer ring, until we fill our 64 // transfer ring or have no more requests. 121 // up the transfer ring. 154 xhci_transfer_ring_t* ring local 197 xhci_transfer_ring_t* ring = &ep->transfer_ring; local [all...] |
H A D | xhci-transfer.c | 20 // This resets the transfer ring's dequeue pointer just past the last completed transfer. 104 // move transfer ring's dequeue pointer passed the failed transaction 166 xhci_transfer_ring_t* ring = &ep->transfer_ring; local 189 xhci_trb_t* trb = ring->current; 207 if (driver_get_log_flags() & DDK_LOG_SPEW) xhci_print_trb(ring, trb); 208 xhci_increment_ring(ring); 220 xhci_transfer_ring_t* ring = &ep->transfer_ring; local 263 zx_status_t status = xhci_queue_data_trbs(ring, state, req, interrupter_target, isochronous); 275 xhci_trb_t* trb = ring->current; 285 if (driver_get_log_flags() & DDK_LOG_SPEW) xhci_print_trb(ring, tr 595 xhci_transfer_ring_t* ring = &ep->transfer_ring; local [all...] |
/fuchsia/zircon/system/ulib/virtio/include/virtio/ |
H A D | virtio_ring.h | 58 * at the end of the avail ring. Host should ignore the avail->flags field. */ 60 * at the end of the used ring. Guest should ignore the used->flags field. */ 63 /* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ 78 uint16_t ring[]; member in struct:vring_avail 92 struct vring_used_elem ring[]; member in struct:vring_used 99 uint16_t free_list; /* head of a free list of descriptors per ring. 0xffff is NULL */ 111 /* The standard layout for the ring is a continuous chunk of memory which looks 119 * // A ring of available descriptor heads with free-running index. 128 * // A ring of used descriptor heads with free-running index. 143 /* We publish the used event index at the end of the available ring, an [all...] |
/fuchsia/zircon/kernel/arch/x86/include/arch/x86/ |
H A D | descriptor.h | 63 uint8_t present, uint8_t ring, uint8_t sys,
|
/fuchsia/zircon/system/dev/bus/virtio/ |
H A D | ring.h | 57 struct vring_used_elem* used_elem = &ring_.used->ring[i & ring_.num_mask];
|
H A D | rules.mk | 19 $(LOCAL_DIR)/ring.cpp \
|
H A D | console.cpp | 20 zx_status_t QueueTransfer(Ring* ring, uintptr_t phys, uint32_t len, bool write) { argument 22 vring_desc* desc = ring->AllocDescChain(1, &index); 25 zxlogf(ERROR, "Failed to find free descriptor for the virtio ring\n"); 33 ring->SubmitChain(index); 155 // put all descriptors in the virtio ring available list
|
H A D | ring.cpp | 5 #include "ring.h" 49 // make sure the count is available in this ring 52 zxlogf(ERROR, "ring init count too big for hardware %u > %u\n", count, max_ring_size); 56 // allocate a ring 69 /* initialize the ring */ 79 /* register the ring with the device */ 136 avail->ring[avail->idx & ring_.num_mask] = desc_index;
|
/fuchsia/zircon/kernel/arch/x86/ |
H A D | descriptor.cpp | 80 uint8_t present, uint8_t ring, uint8_t sys, 117 entry.dpl = ring & 0x03; // descriptor privilege level 79 set_global_desc_64(seg_sel_t sel, uint64_t base, uint32_t limit, uint8_t present, uint8_t ring, uint8_t sys, uint8_t type, uint8_t gran, uint8_t bits) argument
|