Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/include/usb/host/endpoint.h

    r3e6a98c5 r58563585  
    4040#include <fibril_synch.h>
    4141#include <usb/usb.h>
     42#include <atomic.h>
    4243
    4344/** Host controller side endpoint structure. */
    4445typedef struct endpoint {
     46        /** Reference count. */
     47        atomic_t refcnt;       
    4548        /** Part of linked list. */
    4649        link_t link;
     
    5760        /** Maximum size of data packets. */
    5861        size_t max_packet_size;
     62        /** Additional opportunities per uframe */
     63        unsigned packets;
    5964        /** Necessary bandwidth. */
    6065        size_t bandwidth;
     
    6772        /** Signals change of active status. */
    6873        fibril_condvar_t avail;
     74        /** High speed TT data */
     75        struct {
     76                usb_address_t address;
     77                unsigned port;
     78        } tt;
    6979        /** Optional device specific data. */
    7080        struct {
     
    7888} endpoint_t;
    7989
    80 endpoint_t * endpoint_create(usb_address_t address, usb_endpoint_t endpoint,
    81     usb_direction_t direction, usb_transfer_type_t type, usb_speed_t speed,
    82     size_t max_packet_size, size_t bw);
    83 void endpoint_destroy(endpoint_t *instance);
     90extern endpoint_t *endpoint_create(usb_address_t, usb_endpoint_t,
     91    usb_direction_t, usb_transfer_type_t, usb_speed_t, size_t, unsigned int,
     92    size_t, usb_address_t, unsigned int);
     93extern void endpoint_destroy(endpoint_t *);
    8494
    85 void endpoint_set_hc_data(endpoint_t *instance,
    86     void *data, int (*toggle_get)(void *), void (*toggle_set)(void *, int));
    87 void endpoint_clear_hc_data(endpoint_t *instance);
     95extern void endpoint_add_ref(endpoint_t *);
     96extern void endpoint_del_ref(endpoint_t *);
    8897
    89 void endpoint_use(endpoint_t *instance);
    90 void endpoint_release(endpoint_t *instance);
     98extern void endpoint_set_hc_data(endpoint_t *, void *, int (*)(void *),
     99    void (*)(void *, int));
     100extern void endpoint_clear_hc_data(endpoint_t *);
    91101
    92 int endpoint_toggle_get(endpoint_t *instance);
    93 void endpoint_toggle_set(endpoint_t *instance, int toggle);
     102extern void endpoint_use(endpoint_t *);
     103extern void endpoint_release(endpoint_t *);
     104
     105extern int endpoint_toggle_get(endpoint_t *);
     106extern void endpoint_toggle_set(endpoint_t *, int);
    94107
    95108/** list_get_instance wrapper.
     109 *
    96110 * @param item Pointer to link member.
     111 *
    97112 * @return Pointer to endpoint_t structure.
     113 *
    98114 */
    99115static inline endpoint_t * endpoint_get_instance(link_t *item)
     
    102118}
    103119#endif
     120
    104121/**
    105122 * @}
Note: See TracChangeset for help on using the changeset viewer.