Changes in uspace/drv/bus/usb/vhc/transfer.c [58563585:a5b3de6] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/vhc/transfer.c
r58563585 ra5b3de6 31 31 #include <usb/debug.h> 32 32 #include <usbvirt/device.h> 33 #include <usb/host/bandwidth.h> 33 34 #include <usbvirt/ipc.h> 34 35 #include "vhcd.h" … … 37 38 static bool is_set_address_transfer(vhc_transfer_t *transfer) 38 39 { 39 if (transfer->batch-> ep->endpoint != 0) {40 if (transfer->batch->target.endpoint != 0) { 40 41 return false; 41 42 } … … 43 44 return false; 44 45 } 45 if ( usb_transfer_batch_direction(transfer->batch)!= USB_DIRECTION_OUT) {46 return false; 47 } 48 const usb_device_request_setup_packet_t *setup =49 (void*)transfer->batch->setup_buffer;46 if (transfer->batch->dir != USB_DIRECTION_OUT) { 47 return false; 48 } 49 const usb_device_request_setup_packet_t *setup 50 = &transfer->batch->setup.packet; 50 51 if (setup->request_type != 0) { 51 52 return false; … … 62 63 { 63 64 int rc; 64 65 const usb_direction_t dir = usb_transfer_batch_direction(batch);65 66 const usb_direction_t dir = batch->dir; 66 67 67 68 if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) { 68 69 if (dir == USB_DIRECTION_IN) { 69 70 rc = usbvirt_control_read(dev, 70 batch->setup _buffer, batch->setup_size,71 batch->setup.buffer, USB_SETUP_PACKET_SIZE, 71 72 batch->buffer, batch->buffer_size, 72 73 actual_data_size); … … 74 75 assert(dir == USB_DIRECTION_OUT); 75 76 rc = usbvirt_control_write(dev, 76 batch->setup _buffer, batch->setup_size,77 batch->setup.buffer, USB_SETUP_PACKET_SIZE, 77 78 batch->buffer, batch->buffer_size); 78 79 } … … 99 100 int rc; 100 101 101 const usb_direction_t dir = usb_transfer_batch_direction(batch);102 const usb_direction_t dir = batch->dir; 102 103 103 104 if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) { 104 105 if (dir == USB_DIRECTION_IN) { 105 106 rc = usbvirt_ipc_send_control_read(sess, 106 batch->setup _buffer, batch->setup_size,107 batch->setup.buffer, USB_SETUP_PACKET_SIZE, 107 108 batch->buffer, batch->buffer_size, 108 109 actual_data_size); … … 110 111 assert(dir == USB_DIRECTION_OUT); 111 112 rc = usbvirt_ipc_send_control_write(sess, 112 batch->setup _buffer, batch->setup_size,113 batch->setup.buffer, USB_SETUP_PACKET_SIZE, 113 114 batch->buffer, batch->buffer_size); 114 115 } … … 148 149 assert(transfer); 149 150 assert(transfer->batch); 150 usb_transfer_batch_finish_error(transfer->batch, NULL,151 data_transfer_size, outcome);152 usb_transfer_batch_ destroy(transfer->batch);151 transfer->batch->error = outcome; 152 transfer->batch->transfered_size = data_transfer_size; 153 usb_transfer_batch_finish(transfer->batch); 153 154 free(transfer); 154 155 } … … 159 160 list_initialize(&instance->devices); 160 161 fibril_mutex_initialize(&instance->guard); 162 usb2_bus_init(&instance->bus, BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11); 161 163 instance->magic = 0xDEADBEEF; 162 164 return virthub_init(&instance->hub, "root hub"); … … 182 184 list_foreach(vhc->devices, link, vhc_virtdev_t, dev) { 183 185 fibril_mutex_lock(&dev->guard); 184 if (dev->address == transfer->batch-> ep->address) {186 if (dev->address == transfer->batch->target.address) { 185 187 if (!targets) { 186 188 list_append(&transfer->link, &dev->transfer_queue); … … 234 236 if (is_set_address_transfer(transfer)) { 235 237 usb_device_request_setup_packet_t *setup = 236 (void*) transfer->batch->setup _buffer;238 (void*) transfer->batch->setup.buffer; 237 239 dev->address = setup->value; 238 240 usb_log_debug2("Address changed to %d\n",
Note:
See TracChangeset
for help on using the changeset viewer.