Changeset bcaefe3 in mainline
- Timestamp:
- 2011-03-07T11:59:07Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 13927cf
- Parents:
- 2ab6875
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/batch.c
r2ab6875 rbcaefe3 98 98 bzero(instance->tds, sizeof(td_t) * instance->packets); 99 99 100 const size_t transport_size = max_packet_size * instance->packets;100 // const size_t transport_size = max_packet_size * instance->packets; 101 101 102 102 if (size > 0) { 103 instance->transport_buffer = malloc32( transport_size);103 instance->transport_buffer = malloc32(size); 104 104 CHECK_NULL_DISPOSE_RETURN(instance->transport_buffer, 105 105 "Failed to allocate device accessible buffer.\n"); … … 156 156 instance, i, instance->tds[i].status); 157 157 158 device_keeper_set_toggle(instance->manager, instance->target,159 td_toggle(&instance->tds[i]));158 device_keeper_set_toggle(instance->manager, 159 instance->target, td_toggle(&instance->tds[i])); 160 160 if (i > 0) 161 161 goto substract_ret; … … 204 204 { 205 205 assert(instance); 206 /* we are data out, we are supposed to provide data */ 206 207 memcpy(instance->transport_buffer, instance->buffer, instance->buffer_size); 207 208 batch_data(instance, USB_PID_OUT); … … 234 235 assert(instance); 235 236 const bool low_speed = instance->speed == USB_SPEED_LOW; 236 int toggle = device_keeper_get_toggle(instance->manager, instance->target); 237 int toggle = 238 device_keeper_get_toggle(instance->manager, instance->target); 237 239 assert(toggle == 0 || toggle == 1); 238 240 … … 244 246 - remain_size; 245 247 246 247 248 const size_t packet_size = 248 249 (instance->max_packet_size > remain_size) ? 249 250 remain_size : instance->max_packet_size; 250 251 251 td_init(&instance->tds[packet], 252 DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed, 253 instance->target, pid, data, 254 &instance->tds[packet + 1]); 252 td_t *next_packet = (packet + 1 < instance->packets) 253 ? &instance->tds[packet + 1] : NULL; 254 255 assert(packet < instance->packets); 256 assert(packet_size <= remain_size); 257 258 td_init( 259 &instance->tds[packet], DEFAULT_ERROR_COUNT, packet_size, 260 toggle, false, low_speed, instance->target, pid, data, 261 next_packet); 262 255 263 256 264 toggle = 1 - toggle; 265 remain_size -= packet_size; 257 266 ++packet; 258 assert(packet <= instance->packets);259 assert(packet_size <= remain_size);260 remain_size -= packet_size;261 267 } 262 268 device_keeper_set_toggle(instance->manager, instance->target, toggle); 263 264 instance->tds[packet - 1].status |= TD_STATUS_COMPLETE_INTERRUPT_FLAG;265 instance->tds[packet - 1].next = 0 | LINK_POINTER_TERMINATE_FLAG;266 269 } 267 270 /*----------------------------------------------------------------------------*/ … … 292 295 remain_size : instance->max_packet_size; 293 296 294 td_init( &instance->tds[packet],295 DEFAULT_ERROR_COUNT, packet_size, toggle, false, low_speed,296 instance->target, data_stage, data,297 &instance->tds[packet + 1]);297 td_init( 298 &instance->tds[packet], DEFAULT_ERROR_COUNT, packet_size, 299 toggle, false, low_speed, instance->target, data_stage, 300 data, &instance->tds[packet + 1]); 298 301 299 302 ++packet; … … 319 322 assert(instance->callback_in); 320 323 324 /* we are data in, we need data */ 321 325 memcpy(instance->buffer, instance->transport_buffer, instance->buffer_size); 322 326 … … 326 330 instance->transfered_size); 327 331 328 instance->callback_in(instance->fun, 329 err, instance->transfered_size, 330 instance->arg); 332 instance->callback_in( 333 instance->fun, err, instance->transfered_size, instance->arg); 331 334 } 332 335 /*----------------------------------------------------------------------------*/ … … 361 364 assert(instance); 362 365 usb_log_debug("Batch(%p) disposing.\n", instance); 366 /* free32 is NULL safe */ 363 367 free32(instance->tds); 364 368 free32(instance->qh);
Note:
See TracChangeset
for help on using the changeset viewer.