Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/connhost.c

    r357a302 r7dfc06fa  
    4848        usbhc_iface_transfer_out_callback_t out_callback;
    4949        usbhc_iface_transfer_in_callback_t in_callback;
    50         device_t *dev;
     50        ddf_fun_t *fun;
    5151        size_t reported_size;
    5252        void *arg;
     
    5858        usbhc_iface_transfer_out_callback_t out_callback;
    5959        usbhc_iface_transfer_in_callback_t in_callback;
    60         device_t *dev;
     60        ddf_fun_t *fun;
    6161        void *arg;
    6262        void *data_buffer;
     
    7575        switch (transfer->direction) {
    7676                case USB_DIRECTION_IN:
    77                         transfer->in_callback(transfer->dev,
     77                        transfer->in_callback(transfer->fun,
    7878                            outcome, size,
    7979                            transfer->arg);
    8080                        break;
    8181                case USB_DIRECTION_OUT:
    82                         transfer->out_callback(transfer->dev,
     82                        transfer->out_callback(transfer->fun,
    8383                            outcome,
    8484                            transfer->arg);
     
    9292}
    9393
    94 static transfer_info_t *create_transfer_info(device_t *dev,
     94static transfer_info_t *create_transfer_info(ddf_fun_t *fun,
    9595    usb_direction_t direction, void *arg)
    9696{
     
    101101        transfer->out_callback = NULL;
    102102        transfer->arg = arg;
    103         transfer->dev = dev;
     103        transfer->fun = fun;
    104104        transfer->reported_size = (size_t) -1;
    105105
     
    112112        switch (transfer->direction) {
    113113                case USB_DIRECTION_IN:
    114                         transfer->in_callback(transfer->dev,
     114                        transfer->in_callback(transfer->fun,
    115115                            outcome, size,
    116116                            transfer->arg);
    117117                        break;
    118118                case USB_DIRECTION_OUT:
    119                         transfer->out_callback(transfer->dev,
     119                        transfer->out_callback(transfer->fun,
    120120                            outcome,
    121121                            transfer->arg);
     
    138138        }
    139139
    140         transfer_info_t *transfer  = create_transfer_info(ctrl_transfer->dev,
     140        transfer_info_t *transfer  = create_transfer_info(ctrl_transfer->fun,
    141141            ctrl_transfer->direction, ctrl_transfer->arg);
    142142        transfer->out_callback = ctrl_transfer->out_callback;
     
    195195}
    196196
    197 static control_transfer_info_t *create_control_transfer_info(device_t *dev,
     197static control_transfer_info_t *create_control_transfer_info(ddf_fun_t *fun,
    198198    usb_direction_t direction, usb_target_t target,
    199199    void *data_buffer, size_t data_buffer_size,
     
    208208        transfer->out_callback = NULL;
    209209        transfer->arg = arg;
    210         transfer->dev = dev;
     210        transfer->fun = fun;
    211211        transfer->data_buffer = data_buffer;
    212212        transfer->data_buffer_size = data_buffer_size;
     
    215215}
    216216
    217 static int enqueue_transfer_out(device_t *dev,
     217static int enqueue_transfer_out(ddf_fun_t *fun,
    218218    usb_target_t target, usb_transfer_type_t transfer_type,
    219219    void *buffer, size_t size,
     
    226226
    227227        transfer_info_t *transfer
    228             = create_transfer_info(dev, USB_DIRECTION_OUT, arg);
     228            = create_transfer_info(fun, USB_DIRECTION_OUT, arg);
    229229        transfer->out_callback = callback;
    230230
     
    235235}
    236236
    237 static int enqueue_transfer_in(device_t *dev,
     237static int enqueue_transfer_in(ddf_fun_t *fun,
    238238    usb_target_t target, usb_transfer_type_t transfer_type,
    239239    void *buffer, size_t size,
     
    246246
    247247        transfer_info_t *transfer
    248             = create_transfer_info(dev, USB_DIRECTION_IN, arg);
     248            = create_transfer_info(fun, USB_DIRECTION_IN, arg);
    249249        transfer->in_callback = callback;
    250250
     
    256256
    257257
    258 static int interrupt_out(device_t *dev, usb_target_t target,
    259     size_t max_packet_size,
     258static int interrupt_out(ddf_fun_t *fun, usb_target_t target,
    260259    void *data, size_t size,
    261260    usbhc_iface_transfer_out_callback_t callback, void *arg)
    262261{
    263         return enqueue_transfer_out(dev, target, USB_TRANSFER_INTERRUPT,
     262        return enqueue_transfer_out(fun, target, USB_TRANSFER_INTERRUPT,
    264263            data, size,
    265264            callback, arg);
    266265}
    267266
    268 static int interrupt_in(device_t *dev, usb_target_t target,
    269     size_t max_packet_size,
     267static int interrupt_in(ddf_fun_t *fun, usb_target_t target,
    270268    void *data, size_t size,
    271269    usbhc_iface_transfer_in_callback_t callback, void *arg)
    272270{
    273         return enqueue_transfer_in(dev, target, USB_TRANSFER_INTERRUPT,
     271        return enqueue_transfer_in(fun, target, USB_TRANSFER_INTERRUPT,
    274272            data, size,
    275273            callback, arg);
    276274}
    277275
    278 static int control_write(device_t *dev, usb_target_t target,
    279     size_t max_packet_size,
     276static int control_write(ddf_fun_t *fun, usb_target_t target,
    280277    void *setup_packet, size_t setup_packet_size,
    281278    void *data, size_t data_size,
     
    283280{
    284281        control_transfer_info_t *transfer
    285             = create_control_transfer_info(dev, USB_DIRECTION_OUT, target,
     282            = create_control_transfer_info(fun, USB_DIRECTION_OUT, target,
    286283            data, data_size, arg);
    287284        transfer->out_callback = callback;
     
    294291}
    295292
    296 static int control_read(device_t *dev, usb_target_t target,
    297     size_t max_packet_size,
     293static int control_read(ddf_fun_t *fun, usb_target_t target,
    298294    void *setup_packet, size_t setup_packet_size,
    299295    void *data, size_t data_size,
     
    301297{
    302298        control_transfer_info_t *transfer
    303             = create_control_transfer_info(dev, USB_DIRECTION_IN, target,
     299            = create_control_transfer_info(fun, USB_DIRECTION_IN, target,
    304300            data, data_size, arg);
    305301        transfer->in_callback = callback;
     
    314310static usb_address_keeping_t addresses;
    315311
    316 static int tell_address(device_t *dev, devman_handle_t handle,
     312static int tell_address(ddf_fun_t *fun, devman_handle_t handle,
    317313    usb_address_t *address)
    318314{
     315        usb_log_debug("tell_address(fun \"%s\", handle %zu)\n",
     316            fun->name, (size_t) fun->handle);
    319317        usb_address_t addr = usb_address_keeping_find(&addresses, handle);
    320318        if (addr < 0) {
     
    326324}
    327325
    328 static int reserve_default_address(device_t *dev, usb_speed_t ignored)
     326static int reserve_default_address(ddf_fun_t *fun, usb_speed_t ignored)
    329327{
    330328        usb_address_keeping_reserve_default(&addresses);
     
    332330}
    333331
    334 static int release_default_address(device_t *dev)
     332static int release_default_address(ddf_fun_t *fun)
    335333{
    336334        usb_address_keeping_release_default(&addresses);
     
    338336}
    339337
    340 static int request_address(device_t *dev, usb_speed_t ignored,
     338static int request_address(ddf_fun_t *fun, usb_speed_t ignored,
    341339    usb_address_t *address)
    342340{
     
    350348}
    351349
    352 static int release_address(device_t *dev, usb_address_t address)
     350static int release_address(ddf_fun_t *fun, usb_address_t address)
    353351{
    354352        return usb_address_keeping_release(&addresses, address);
    355353}
    356354
    357 static int bind_address(device_t *dev, usb_address_t address,
     355static int bind_address(ddf_fun_t *fun, usb_address_t address,
    358356    devman_handle_t handle)
    359357{
    360358        usb_address_keeping_devman_bind(&addresses, address, handle);
    361359        return EOK;
     360}
     361
     362static int usb_iface_get_hc_handle_rh_impl(ddf_fun_t *root_hub_fun,
     363    devman_handle_t *handle)
     364{
     365        ddf_fun_t *hc_fun = root_hub_fun->driver_data;
     366        assert(hc_fun != NULL);
     367
     368        *handle = hc_fun->handle;
     369
     370        usb_log_debug("usb_iface_get_hc_handle_rh_impl returns %zu\n", *handle);
     371
     372        return EOK;
     373}
     374
     375static int tell_address_rh(ddf_fun_t *root_hub_fun, devman_handle_t handle,
     376    usb_address_t *address)
     377{
     378        ddf_fun_t *hc_fun = root_hub_fun->driver_data;
     379        assert(hc_fun != NULL);
     380
     381        return tell_address(hc_fun, root_hub_fun->handle, address);
    362382}
    363383
     
    386406};
    387407
     408usb_iface_t rh_usb_iface = {
     409        .get_hc_handle = usb_iface_get_hc_handle_rh_impl,
     410        .get_address = tell_address_rh
     411};
     412
    388413
    389414/**
Note: See TracChangeset for help on using the changeset viewer.