Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/uhci-hcd/iface.c

    ra7e2f0d r1ae51ae  
    4343#include "utils/device_keeper.h"
    4444
    45 /** Reserve default address interface function
    46  *
    47  * @param[in] fun DDF function that was called.
    48  * @param[in] speed Speed to associate with the new default address.
    49  * @return Error code.
    50  */
    5145/*----------------------------------------------------------------------------*/
    5246static int reserve_default_address(ddf_fun_t *fun, usb_speed_t speed)
     
    6054}
    6155/*----------------------------------------------------------------------------*/
    62 /** Release default address interface function
    63  *
    64  * @param[in] fun DDF function that was called.
    65  * @return Error code.
    66  */
    6756static int release_default_address(ddf_fun_t *fun)
    6857{
     
    7564}
    7665/*----------------------------------------------------------------------------*/
    77 /** Request address interface function
    78  *
    79  * @param[in] fun DDF function that was called.
    80  * @param[in] speed Speed to associate with the new default address.
    81  * @param[out] address Place to write a new address.
    82  * @return Error code.
    83  */
    8466static int request_address(ddf_fun_t *fun, usb_speed_t speed,
    8567    usb_address_t *address)
     
    9880}
    9981/*----------------------------------------------------------------------------*/
    100 /** Bind address interface function
    101  *
    102  * @param[in] fun DDF function that was called.
    103  * @param[in] address Address of the device
    104  * @param[in] handle Devman handle of the device driver.
    105  * @return Error code.
    106  */
    10782static int bind_address(
    10883  ddf_fun_t *fun, usb_address_t address, devman_handle_t handle)
     
    11691}
    11792/*----------------------------------------------------------------------------*/
    118 /** Release address interface function
    119  *
    120  * @param[in] fun DDF function that was called.
    121  * @param[in] address USB address to be released.
    122  * @return Error code.
    123  */
    12493static int release_address(ddf_fun_t *fun, usb_address_t address)
    12594{
     
    132101}
    133102/*----------------------------------------------------------------------------*/
    134 /** Interrupt out transaction interface function
    135  *
    136  * @param[in] fun DDF function that was called.
    137  * @param[in] target USB device to write to.
    138  * @param[in] max_packet_size maximum size of data packet the device accepts
    139  * @param[in] data Source of data.
    140  * @param[in] size Size of data source.
    141  * @param[in] callback Function to call on transaction completion
    142  * @param[in] arg Additional for callback function.
    143  * @return Error code.
    144  */
    145103static int interrupt_out(ddf_fun_t *fun, usb_target_t target,
    146104    size_t max_packet_size, void *data, size_t size,
     
    156114
    157115        batch_t *batch = batch_get(fun, target, USB_TRANSFER_INTERRUPT,
    158             max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg,
    159             &hc->device_manager);
     116            max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg);
    160117        if (!batch)
    161118                return ENOMEM;
     
    164121}
    165122/*----------------------------------------------------------------------------*/
    166 /** Interrupt in transaction interface function
    167  *
    168  * @param[in] fun DDF function that was called.
    169  * @param[in] target USB device to write to.
    170  * @param[in] max_packet_size maximum size of data packet the device accepts
    171  * @param[out] data Data destination.
    172  * @param[in] size Size of data source.
    173  * @param[in] callback Function to call on transaction completion
    174  * @param[in] arg Additional for callback function.
    175  * @return Error code.
    176  */
    177123static int interrupt_in(ddf_fun_t *fun, usb_target_t target,
    178124    size_t max_packet_size, void *data, size_t size,
     
    187133
    188134        batch_t *batch = batch_get(fun, target, USB_TRANSFER_INTERRUPT,
    189             max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg,
    190                         &hc->device_manager);
     135            max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg);
    191136        if (!batch)
    192137                return ENOMEM;
     
    195140}
    196141/*----------------------------------------------------------------------------*/
    197 /** Bulk out transaction interface function
    198  *
    199  * @param[in] fun DDF function that was called.
    200  * @param[in] target USB device to write to.
    201  * @param[in] max_packet_size maximum size of data packet the device accepts
    202  * @param[in] data Source of data.
    203  * @param[in] size Size of data source.
    204  * @param[in] callback Function to call on transaction completion
    205  * @param[in] arg Additional for callback function.
    206  * @return Error code.
    207  */
    208 static int bulk_out(ddf_fun_t *fun, usb_target_t target,
    209     size_t max_packet_size, void *data, size_t size,
    210     usbhc_iface_transfer_out_callback_t callback, void *arg)
    211 {
    212         assert(fun);
    213         uhci_t *hc = fun_to_uhci(fun);
    214         assert(hc);
    215         usb_speed_t speed = device_keeper_speed(&hc->device_manager, target.address);
    216 
    217         usb_log_debug("Bulk OUT %d:%d %zu(%zu).\n",
    218             target.address, target.endpoint, size, max_packet_size);
    219 
    220         batch_t *batch = batch_get(fun, target, USB_TRANSFER_BULK,
    221             max_packet_size, speed, data, size, NULL, 0, NULL, callback, arg,
    222             &hc->device_manager);
    223         if (!batch)
    224                 return ENOMEM;
    225         batch_bulk_out(batch);
    226         return EOK;
    227 }
    228 /*----------------------------------------------------------------------------*/
    229 /** Bulk in transaction interface function
    230  *
    231  * @param[in] fun DDF function that was called.
    232  * @param[in] target USB device to write to.
    233  * @param[in] max_packet_size maximum size of data packet the device accepts
    234  * @param[out] data Data destination.
    235  * @param[in] size Size of data source.
    236  * @param[in] callback Function to call on transaction completion
    237  * @param[in] arg Additional for callback function.
    238  * @return Error code.
    239  */
    240 static int bulk_in(ddf_fun_t *fun, usb_target_t target,
    241     size_t max_packet_size, void *data, size_t size,
    242     usbhc_iface_transfer_in_callback_t callback, void *arg)
    243 {
    244         assert(fun);
    245         uhci_t *hc = fun_to_uhci(fun);
    246         assert(hc);
    247         usb_speed_t speed = device_keeper_speed(&hc->device_manager, target.address);
    248         usb_log_debug("Bulk IN %d:%d %zu(%zu).\n",
    249             target.address, target.endpoint, size, max_packet_size);
    250 
    251         batch_t *batch = batch_get(fun, target, USB_TRANSFER_BULK,
    252             max_packet_size, speed, data, size, NULL, 0, callback, NULL, arg,
    253             &hc->device_manager);
    254         if (!batch)
    255                 return ENOMEM;
    256         batch_bulk_in(batch);
    257         return EOK;
    258 }
    259 /*----------------------------------------------------------------------------*/
    260 /** Control write transaction interface function
    261  *
    262  * @param[in] fun DDF function that was called.
    263  * @param[in] target USB device to write to.
    264  * @param[in] max_packet_size maximum size of data packet the device accepts.
    265  * @param[in] setup_data Data to send with SETUP packet.
    266  * @param[in] setup_size Size of data to send with SETUP packet (should be 8B).
    267  * @param[in] data Source of data.
    268  * @param[in] size Size of data source.
    269  * @param[in] callback Function to call on transaction completion.
    270  * @param[in] arg Additional for callback function.
    271  * @return Error code.
    272  */
    273142static int control_write(ddf_fun_t *fun, usb_target_t target,
    274143    size_t max_packet_size,
     
    283152            target.address, target.endpoint, size, max_packet_size);
    284153
    285         if (setup_size != 8)
    286                 return EINVAL;
    287 
    288154        batch_t *batch = batch_get(fun, target, USB_TRANSFER_CONTROL,
    289155            max_packet_size, speed, data, size, setup_data, setup_size,
    290             NULL, callback, arg, &hc->device_manager);
    291         if (!batch)
    292                 return ENOMEM;
    293         device_keeper_reset_if_need(&hc->device_manager, target, setup_data);
     156            NULL, callback, arg);
     157        if (!batch)
     158                return ENOMEM;
    294159        batch_control_write(batch);
    295160        return EOK;
    296161}
    297162/*----------------------------------------------------------------------------*/
    298 /** Control read transaction interface function
    299  *
    300  * @param[in] fun DDF function that was called.
    301  * @param[in] target USB device to write to.
    302  * @param[in] max_packet_size maximum size of data packet the device accepts.
    303  * @param[in] setup_data Data to send with SETUP packet.
    304  * @param[in] setup_size Size of data to send with SETUP packet (should be 8B).
    305  * @param[out] data Source of data.
    306  * @param[in] size Size of data source.
    307  * @param[in] callback Function to call on transaction completion.
    308  * @param[in] arg Additional for callback function.
    309  * @return Error code.
    310  */
    311163static int control_read(ddf_fun_t *fun, usb_target_t target,
    312164    size_t max_packet_size,
     
    323175        batch_t *batch = batch_get(fun, target, USB_TRANSFER_CONTROL,
    324176            max_packet_size, speed, data, size, setup_data, setup_size, callback,
    325             NULL, arg, &hc->device_manager);
     177            NULL, arg);
    326178        if (!batch)
    327179                return ENOMEM;
     
    329181        return EOK;
    330182}
     183
     184
    331185/*----------------------------------------------------------------------------*/
    332186usbhc_iface_t uhci_iface = {
     
    340194        .interrupt_in = interrupt_in,
    341195
    342         .bulk_in = bulk_in,
    343         .bulk_out = bulk_out,
    344 
    345196        .control_read = control_read,
    346197        .control_write = control_write,
Note: See TracChangeset for help on using the changeset viewer.