Changeset 17873ac7 in mainline for uspace/drv/bus/usb/uhci/uhci_batch.c
- Timestamp:
- 2017-10-31T19:06:57Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 479e32d
- Parents:
- a312d8f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/uhci/uhci_batch.c
ra312d8f r17873ac7 64 64 } 65 65 66 void uhci_transfer_batch_finish(uhci_transfer_batch_t *batch)67 {68 if (batch->base.dir == USB_DIRECTION_IN) {69 assert(batch->base.transfered_size <= batch->base.buffer_size);70 memcpy(batch->base.buffer, uhci_transfer_batch_data_buffer(batch), batch->base.transfered_size);71 }72 usb_transfer_batch_finish(&batch->base);73 }74 75 66 /** Allocate memory and initialize internal data structure. 76 67 * … … 113 104 } 114 105 115 const size_t setup_size = (u hci_batch->base.ep->transfer_type == USB_TRANSFER_CONTROL)106 const size_t setup_size = (usb_batch->ep->transfer_type == USB_TRANSFER_CONTROL) 116 107 ? USB_SETUP_PACKET_SIZE 117 108 : 0; … … 165 156 { 166 157 assert(uhci_batch); 158 usb_transfer_batch_t *batch = &uhci_batch->base; 167 159 168 160 usb_log_debug2("Batch %p " USB_TRANSFER_BATCH_FMT 169 161 " checking %zu transfer(s) for completion.\n", 170 uhci_batch, USB_TRANSFER_BATCH_ARGS( uhci_batch->base),162 uhci_batch, USB_TRANSFER_BATCH_ARGS(*batch), 171 163 uhci_batch->td_count); 172 uhci_batch->base.transfered_size = 0;164 batch->transfered_size = 0; 173 165 174 166 for (size_t i = 0;i < uhci_batch->td_count; ++i) { … … 177 169 } 178 170 179 uhci_batch->base.error = td_status(&uhci_batch->tds[i]);180 if ( uhci_batch->base.error != EOK) {181 assert( uhci_batch->base.ep != NULL);171 batch->error = td_status(&uhci_batch->tds[i]); 172 if (batch->error != EOK) { 173 assert(batch->ep != NULL); 182 174 183 175 usb_log_debug("Batch %p found error TD(%zu->%p):%" … … 186 178 td_print_status(&uhci_batch->tds[i]); 187 179 188 endpoint_toggle_set( uhci_batch->base.ep,180 endpoint_toggle_set(batch->ep, 189 181 td_toggle(&uhci_batch->tds[i])); 190 182 if (i > 0) … … 193 185 } 194 186 195 uhci_batch->base.transfered_size187 batch->transfered_size 196 188 += td_act_size(&uhci_batch->tds[i]); 197 189 if (td_is_short(&uhci_batch->tds[i])) … … 199 191 } 200 192 substract_ret: 201 if (uhci_batch->base.ep->transfer_type == USB_TRANSFER_CONTROL) 202 uhci_batch->base.transfered_size -= USB_SETUP_PACKET_SIZE; 193 if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) 194 batch->transfered_size -= USB_SETUP_PACKET_SIZE; 195 196 fibril_mutex_lock(&batch->ep->guard); 197 usb_transfer_batch_reset_toggle(batch); 198 endpoint_deactivate_locked(batch->ep); 199 fibril_mutex_unlock(&batch->ep->guard); 200 201 if (batch->dir == USB_DIRECTION_IN) { 202 assert(batch->transfered_size <= batch->buffer_size); 203 memcpy(batch->buffer, 204 uhci_transfer_batch_data_buffer(uhci_batch), 205 batch->transfered_size); 206 } 207 203 208 return true; 204 209 }
Note:
See TracChangeset
for help on using the changeset viewer.