Ignore:
Timestamp:
2016-07-22T08:24:47Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f76d2c2
Parents:
5b18137 (diff), 8351f9a4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge from lp:~jan.vesely/helenos/usb

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/include/usb/dev/driver.h

    r5b18137 rb4b534ac  
    3737#define LIBUSBDEV_DRIVER_H_
    3838
    39 #include <usb/hc.h>
    40 #include <usb/dev/usb_device_connection.h>
     39#include <usb/dev/device.h>
    4140#include <usb/dev/pipes.h>
    42 
    43 /** Descriptors for USB device. */
    44 typedef struct {
    45         /** Standard device descriptor. */
    46         usb_standard_device_descriptor_t device;
    47         /** Full configuration descriptor of current configuration. */
    48         const uint8_t *configuration;
    49         size_t configuration_size;
    50 } usb_device_descriptors_t;
    51 
    52 /** Wrapper for data related to alternate interface setting.
    53  * The pointers will typically point inside configuration descriptor and
    54  * thus you shall not deallocate them.
    55  */
    56 typedef struct {
    57         /** Interface descriptor. */
    58         const usb_standard_interface_descriptor_t *interface;
    59         /** Pointer to start of descriptor tree bound with this interface. */
    60         const uint8_t *nested_descriptors;
    61         /** Size of data pointed by nested_descriptors in bytes. */
    62         size_t nested_descriptors_size;
    63 } usb_alternate_interface_descriptors_t;
    64 
    65 /** Alternate interface settings. */
    66 typedef struct {
    67         /** Array of alternate interfaces descriptions. */
    68         usb_alternate_interface_descriptors_t *alternatives;
    69         /** Size of @c alternatives array. */
    70         size_t alternative_count;
    71         /** Index of currently selected one. */
    72         size_t current;
    73 } usb_alternate_interfaces_t;
    74 
    75 /** USB device structure. */
    76 typedef struct {
    77         /** Connection to USB hc, used by wire and arbitrary requests. */
    78         usb_hc_connection_t hc_conn;
    79         /** Connection backing the pipes.
    80          * Typically, you will not need to use this attribute at all.
    81          */
    82         usb_device_connection_t wire;
    83         /** The default control pipe. */
    84         usb_pipe_t ctrl_pipe;
    85         /** Other endpoint pipes.
    86          * This is an array of other endpoint pipes in the same order as
    87          * in usb_driver_t.
    88          */
    89         usb_endpoint_mapping_t *pipes;
    90         /** Number of other endpoint pipes. */
    91         size_t pipes_count;
    92         /** Current interface.
    93          * Usually, drivers operate on single interface only.
    94          * This item contains the value of the interface or -1 for any.
    95          */
    96         int interface_no;
    97 
    98         /** Alternative interfaces. */
    99         usb_alternate_interfaces_t alternate_interfaces;
    100 
    101         /** Some useful descriptors. */
    102         usb_device_descriptors_t descriptors;
    103 
    104         /** Generic DDF device backing this one. DO NOT TOUCH! */
    105         ddf_dev_t *ddf_dev;
    106         /** Custom driver data.
    107          * Do not use the entry in generic device, that is already used
    108          * by the framework.
    109          */
    110         void *driver_data;
    111 } usb_device_t;
    11241
    11342/** USB driver ops. */
     
    16493int usb_driver_main(const usb_driver_t *);
    16594
    166 int usb_device_init(usb_device_t *, ddf_dev_t *,
    167     const usb_endpoint_description_t **, const char **);
    168 void usb_device_deinit(usb_device_t *);
    169 
    170 int usb_device_select_interface(usb_device_t *, uint8_t,
    171     const usb_endpoint_description_t **);
    172 
    173 int usb_device_retrieve_descriptors(usb_pipe_t *, usb_device_descriptors_t *);
    174 void usb_device_release_descriptors(usb_device_descriptors_t *);
    175 
    176 int usb_device_create_pipes(usb_device_connection_t *,
    177     const usb_endpoint_description_t **, const uint8_t *, size_t, int, int,
    178     usb_endpoint_mapping_t **, size_t *);
    179 void usb_device_destroy_pipes(usb_endpoint_mapping_t *, size_t);
    180 
    181 void * usb_device_data_alloc(usb_device_t *, size_t);
    182 
    183 size_t usb_interface_count_alternates(const uint8_t *, size_t, uint8_t);
    184 int usb_alternate_interfaces_init(usb_alternate_interfaces_t *,
    185     const uint8_t *, size_t, int);
    186 void usb_alternate_interfaces_deinit(usb_alternate_interfaces_t *);
    18795#endif
    18896/**
Note: See TracChangeset for help on using the changeset viewer.