Changeset 5fd9c30 in mainline for uspace/drv/bus/usb/vhc/transfer.c


Ignore:
Timestamp:
2017-10-21T20:52:56Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
766043c
Parents:
74b852b
Message:

usbhost refactoring: let transfer_batch be initialized by bus

Currently makes older HCs fail, work in progress.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/vhc/transfer.c

    r74b852b r5fd9c30  
    4444                return false;
    4545        }
    46         if (usb_transfer_batch_direction(transfer->batch) != USB_DIRECTION_OUT) {
    47                 return false;
    48         }
    49         const usb_device_request_setup_packet_t *setup =
    50             (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;
    5151        if (setup->request_type != 0) {
    5252                return false;
     
    6363{
    6464        int rc;
    65        
    66         const usb_direction_t dir = usb_transfer_batch_direction(batch);
     65
     66        const usb_direction_t dir = batch->dir;
    6767
    6868        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    6969                if (dir == USB_DIRECTION_IN) {
    7070                        rc = usbvirt_control_read(dev,
    71                             batch->setup_buffer, batch->setup_size,
     71                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    7272                            batch->buffer, batch->buffer_size,
    7373                            actual_data_size);
     
    7575                        assert(dir == USB_DIRECTION_OUT);
    7676                        rc = usbvirt_control_write(dev,
    77                             batch->setup_buffer, batch->setup_size,
     77                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    7878                            batch->buffer, batch->buffer_size);
    7979                }
     
    100100        int rc;
    101101
    102         const usb_direction_t dir = usb_transfer_batch_direction(batch);
     102        const usb_direction_t dir = batch->dir;
    103103
    104104        if (batch->ep->transfer_type == USB_TRANSFER_CONTROL) {
    105105                if (dir == USB_DIRECTION_IN) {
    106106                        rc = usbvirt_ipc_send_control_read(sess,
    107                             batch->setup_buffer, batch->setup_size,
     107                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    108108                            batch->buffer, batch->buffer_size,
    109109                            actual_data_size);
     
    111111                        assert(dir == USB_DIRECTION_OUT);
    112112                        rc = usbvirt_ipc_send_control_write(sess,
    113                             batch->setup_buffer, batch->setup_size,
     113                            batch->setup.buffer, USB_SETUP_PACKET_SIZE,
    114114                            batch->buffer, batch->buffer_size);
    115115                }
     
    149149        assert(transfer);
    150150        assert(transfer->batch);
    151         usb_transfer_batch_finish_error(transfer->batch, NULL,
    152             data_transfer_size, outcome);
    153         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);
    154154        free(transfer);
    155155}
     
    236236                        if (is_set_address_transfer(transfer)) {
    237237                                usb_device_request_setup_packet_t *setup =
    238                                     (void*) transfer->batch->setup_buffer;
     238                                    (void*) transfer->batch->setup.buffer;
    239239                                dev->address = setup->value;
    240240                                usb_log_debug2("Address changed to %d\n",
Note: See TracChangeset for help on using the changeset viewer.