Changeset 2770b66 in mainline for uspace/drv/bus/usb/xhci/transfers.c
- Timestamp:
- 2017-10-15T15:05:06Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 816f5f4
- Parents:
- 20eaa82
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/xhci/transfers.c
r20eaa82 r2770b66 145 145 transfer->batch = batch; 146 146 link_initialize(&transfer->link); 147 transfer->hc_buffer = malloc32(batch->buffer_size);147 transfer->hc_buffer = batch->buffer_size > 0 ? malloc32(batch->buffer_size) : NULL; 148 148 149 149 return transfer; … … 152 152 void xhci_transfer_fini(xhci_transfer_t* transfer) { 153 153 if (transfer) { 154 free32(transfer->hc_buffer); 154 if (transfer->batch->buffer_size > 0) 155 free32(transfer->hc_buffer); 156 157 usb_transfer_batch_destroy(transfer->batch); 158 155 159 free(transfer); 156 160 } … … 179 183 /* For the TRB formats, see xHCI specification 6.4.1.2 */ 180 184 xhci_transfer_t *transfer = xhci_transfer_alloc(batch); 181 memcpy(transfer->hc_buffer, batch->buffer, batch->buffer_size); 185 186 if (!transfer->direction) { 187 // Sending stuff from host to device, we need to copy the actual data. 188 memcpy(transfer->hc_buffer, batch->buffer, batch->buffer_size); 189 } 182 190 183 191 xhci_trb_t trb_setup; … … 318 326 batch->transfered_size = batch->buffer_size - TRB_TRANSFER_LENGTH(*trb); 319 327 if (transfer->direction) { 328 memcpy(batch->buffer, transfer->hc_buffer, batch->buffer_size); 329 320 330 /* Device-to-host, IN */ 321 331 if (batch->callback_in)
Note:
See TracChangeset
for help on using the changeset viewer.