Changeset a0be5d0 in mainline
- Timestamp:
- 2017-10-09T14:11:22Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 42bc933
- Parents:
- ae03552e
- Location:
- uspace/drv/bus/usb/xhci
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/xhci/commands.c
rae03552e ra0be5d0 145 145 } 146 146 147 static inline int ring_doorbell(xhci_hc_t *hc, unsigned doorbell, unsigned target)148 {149 assert(hc);150 uint32_t v = host2xhci(32, target & BIT_RRANGE(uint32_t, 7));151 pio_write_32(&hc->db_arry[doorbell], v);152 return EOK;153 }154 155 147 static inline int enqueue_command(xhci_hc_t *hc, xhci_cmd_t *cmd, unsigned doorbell, unsigned target) 156 148 { … … 161 153 162 154 xhci_trb_ring_enqueue(&hc->command_ring, &cmd->trb, &cmd->trb_phys); 163 ring_doorbell(hc, doorbell, target);155 hc_ring_doorbell(hc, doorbell, target); 164 156 165 157 usb_log_debug2("HC(%p): Sent command:", hc); … … 196 188 197 189 XHCI_REG_WR(hc->op_regs, XHCI_OP_CRR, 1); 198 ring_doorbell(hc, 0, 0);190 hc_ring_doorbell(hc, 0, 0); 199 191 } 200 192 -
uspace/drv/bus/usb/xhci/hc.c
rae03552e ra0be5d0 457 457 batch->buffer_size); 458 458 459 if (!batch->ep->address) { 460 usb_log_error("Attempted to schedule transfer to address 0."); 461 return EINVAL; 462 } 463 459 464 switch (batch->ep->transfer_type) { 460 465 case USB_TRANSFER_CONTROL: … … 616 621 } 617 622 618 623 int hc_ring_doorbell(xhci_hc_t *hc, unsigned doorbell, unsigned target) 624 { 625 assert(hc); 626 uint32_t v = host2xhci(32, target & BIT_RRANGE(uint32_t, 7)); 627 pio_write_32(&hc->db_arry[doorbell], v); 628 return EOK; 629 } 619 630 620 631 /** -
uspace/drv/bus/usb/xhci/hc.h
rae03552e ra0be5d0 90 90 void hc_interrupt(xhci_hc_t *, uint32_t); 91 91 void hc_fini(xhci_hc_t *); 92 int hc_ring_doorbell(xhci_hc_t *, unsigned, unsigned); 92 93 93 94 #endif -
uspace/drv/bus/usb/xhci/transfers.c
rae03552e ra0be5d0 41 41 #include "trb_ring.h" 42 42 43 static inline int ring_doorbell(xhci_hc_t *hc, unsigned doorbell, unsigned target)44 {45 assert(hc);46 uint32_t v = host2xhci(32, target & BIT_RRANGE(uint32_t, 7));47 pio_write_32(&hc->db_arry[doorbell], v);48 return EOK;49 }50 51 43 static inline uint8_t get_transfer_type(xhci_trb_t* trb, uint8_t bmRequestType, uint16_t wLength) 52 44 { … … 143 135 { 144 136 if (!batch->setup_size) { 137 usb_log_error("Missing setup packet for the control transfer."); 145 138 return EINVAL; 146 139 } 147 140 if (batch->ep->endpoint != 0 || batch->ep->transfer_type != USB_TRANSFER_CONTROL) { 148 141 /* This method only works for control transfers. */ 142 usb_log_error("Attempted to schedule control transfer to non 0 endpoint."); 149 143 return EINVAL; 150 144 } … … 223 217 224 218 /* For control transfers, the target is always 1. */ 225 ring_doorbell(hc, slot_id, 1);219 hc_ring_doorbell(hc, slot_id, 1); 226 220 return EOK; 227 221 }
Note:
See TracChangeset
for help on using the changeset viewer.