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