Changeset d017cea in mainline for uspace/drv/uhci-hcd/batch.c
- Timestamp:
- 2011-04-12T10:09:56Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 508a0ca
- Parents:
- f13381b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/batch.c
rf13381b rd017cea 103 103 usb_target_t target = 104 104 { .address = ep->address, .endpoint = ep->endpoint }; 105 usb_transfer_batch_init(instance, target, ep->transfer_type, ep->speed,106 ep->max_packet_size,buffer, NULL, buffer_size, NULL, setup_size,107 func_in, func_out, arg, fun, ep,NULL);105 usb_transfer_batch_init(instance, ep, 106 buffer, NULL, buffer_size, NULL, setup_size, 107 func_in, func_out, arg, fun, NULL); 108 108 109 109 … … 131 131 132 132 if (buffer_size > 0) { 133 instance-> transport_buffer = malloc32(buffer_size);134 CHECK_NULL_DISPOSE_RETURN(instance-> transport_buffer,133 instance->data_buffer = malloc32(buffer_size); 134 CHECK_NULL_DISPOSE_RETURN(instance->data_buffer, 135 135 "Failed to allocate device accessible buffer.\n"); 136 136 } … … 205 205 assert(instance); 206 206 /* We are data out, we are supposed to provide data */ 207 memcpy(instance->transport_buffer, instance->buffer, 208 instance->buffer_size); 207 memcpy(instance->data_buffer, instance->buffer, instance->buffer_size); 209 208 batch_control(instance, USB_PID_OUT, USB_PID_IN); 210 209 instance->next_step = batch_call_out_and_dispose; … … 235 234 { 236 235 assert(instance); 237 instance->direction = USB_DIRECTION_IN;236 // instance->direction = USB_DIRECTION_IN; 238 237 batch_data(instance, USB_PID_IN); 239 238 instance->next_step = batch_call_in_and_dispose; … … 250 249 { 251 250 assert(instance); 252 instance->direction = USB_DIRECTION_OUT;253 251 /* We are data out, we are supposed to provide data */ 254 memcpy(instance->transport_buffer, instance->buffer, 255 instance->buffer_size); 252 memcpy(instance->data_buffer, instance->buffer, instance->buffer_size); 256 253 batch_data(instance, USB_PID_OUT); 257 254 instance->next_step = batch_call_out_and_dispose; … … 269 266 assert(instance); 270 267 batch_data(instance, USB_PID_IN); 271 instance->direction = USB_DIRECTION_IN;272 268 instance->next_step = batch_call_in_and_dispose; 273 269 usb_log_debug("Batch(%p) BULK IN initialized.\n", instance); … … 283 279 { 284 280 assert(instance); 285 instance->direction = USB_DIRECTION_OUT;286 281 /* We are data out, we are supposed to provide data */ 287 memcpy(instance-> transport_buffer, instance->buffer,282 memcpy(instance->data_buffer, instance->buffer, 288 283 instance->buffer_size); 289 284 batch_data(instance, USB_PID_OUT); … … 306 301 assert(data); 307 302 308 const bool low_speed = instance-> speed == USB_SPEED_LOW;303 const bool low_speed = instance->ep->speed == USB_SPEED_LOW; 309 304 int toggle = endpoint_toggle_get(instance->ep); 310 305 assert(toggle == 0 || toggle == 1); … … 314 309 while (remain_size > 0) { 315 310 char *trans_data = 316 instance-> transport_buffer + instance->buffer_size311 instance->data_buffer + instance->buffer_size 317 312 - remain_size; 318 313 319 314 const size_t packet_size = 320 (instance-> max_packet_size > remain_size) ?321 remain_size : instance-> max_packet_size;315 (instance->ep->max_packet_size > remain_size) ? 316 remain_size : instance->ep->max_packet_size; 322 317 323 318 td_t *next_transfer = (transfer + 1 < data->transfers) … … 326 321 assert(transfer < data->transfers); 327 322 assert(packet_size <= remain_size); 323 usb_target_t target = 324 { instance->ep->address, instance->ep->endpoint }; 328 325 329 326 td_init( 330 327 &data->tds[transfer], DEFAULT_ERROR_COUNT, packet_size, 331 toggle, false, low_speed, instance->target, pid, trans_data,328 toggle, false, low_speed, target, pid, trans_data, 332 329 next_transfer); 333 330 … … 360 357 assert(data->transfers >= 2); 361 358 362 const bool low_speed = instance-> speed == USB_SPEED_LOW;359 const bool low_speed = instance->ep->speed == USB_SPEED_LOW; 363 360 int toggle = 0; 361 const usb_target_t target = 362 { instance->ep->address, instance->ep->endpoint }; 363 364 364 /* setup stage */ 365 365 td_init( 366 366 data->tds, DEFAULT_ERROR_COUNT, instance->setup_size, toggle, false, 367 low_speed, instance->target, USB_PID_SETUP, instance->setup_buffer,367 low_speed, target, USB_PID_SETUP, instance->setup_buffer, 368 368 &data->tds[1]); 369 369 … … 373 373 while (remain_size > 0) { 374 374 char *control_data = 375 instance-> transport_buffer + instance->buffer_size375 instance->data_buffer + instance->buffer_size 376 376 - remain_size; 377 377 … … 379 379 380 380 const size_t packet_size = 381 (instance-> max_packet_size > remain_size) ?382 remain_size : instance-> max_packet_size;381 (instance->ep->max_packet_size > remain_size) ? 382 remain_size : instance->ep->max_packet_size; 383 383 384 384 td_init( 385 385 &data->tds[transfer], DEFAULT_ERROR_COUNT, packet_size, 386 toggle, false, low_speed, instance->target, data_stage,386 toggle, false, low_speed, target, data_stage, 387 387 control_data, &data->tds[transfer + 1]); 388 388 … … 398 398 td_init( 399 399 &data->tds[transfer], DEFAULT_ERROR_COUNT, 0, 1, false, low_speed, 400 instance->target, status_stage, NULL, NULL);400 target, status_stage, NULL, NULL); 401 401 td_set_ioc(&data->tds[transfer]); 402 402 … … 449 449 free32(data->qh); 450 450 free32(instance->setup_buffer); 451 free32(instance-> transport_buffer);451 free32(instance->data_buffer); 452 452 free(data); 453 453 free(instance);
Note:
See TracChangeset
for help on using the changeset viewer.