Changes in uspace/lib/usbhost/include/usb/host/endpoint.h [58563585:20eaa82] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/include/usb/host/endpoint.h
r58563585 r20eaa82 32 32 /** @file 33 33 * 34 * Endpoint structure is tightly coupled to the bus. The bus controls the 35 * life-cycle of endpoint. In order to keep endpoints lightweight, operations 36 * on endpoints are part of the bus structure. 37 * 34 38 */ 35 39 #ifndef LIBUSBHOST_HOST_ENDPOINT_H … … 42 46 #include <atomic.h> 43 47 48 typedef struct bus bus_t; 49 typedef struct device device_t; 50 44 51 /** Host controller side endpoint structure. */ 45 52 typedef struct endpoint { 53 /** Managing bus */ 54 bus_t *bus; 46 55 /** Reference count. */ 47 atomic_t refcnt; 56 atomic_t refcnt; 48 57 /** Part of linked list. */ 49 58 link_t link; 59 /** USB device */ 60 device_t *device; 50 61 /** USB address. */ 51 usb_address_t address; 52 /** USB endpoint number. */ 53 usb_endpoint_t endpoint; 62 usb_target_t target; 54 63 /** Communication direction. */ 55 64 usb_direction_t direction; … … 62 71 /** Additional opportunities per uframe */ 63 72 unsigned packets; 64 /** Necessarybandwidth. */73 /** Reserved bandwidth. */ 65 74 size_t bandwidth; 66 75 /** Value of the toggle bit. */ 67 76 unsigned toggle:1; 68 77 /** True if there is a batch using this scheduled for this endpoint. */ 69 volatilebool active;78 bool active; 70 79 /** Protects resources and active status changes. */ 71 80 fibril_mutex_t guard; 72 81 /** Signals change of active status. */ 73 82 fibril_condvar_t avail; 74 /** High speed TT data */ 75 struct { 76 usb_address_t address; 77 unsigned port; 78 } tt; 79 /** Optional device specific data. */ 80 struct { 81 /** Device specific data. */ 82 void *data; 83 /** Callback to get the value of toggle bit. */ 84 int (*toggle_get)(void *); 85 /** Callback to set the value of toggle bit. */ 86 void (*toggle_set)(void *, int); 87 } hc_data; 83 84 /* This structure is meant to be extended by overriding. */ 88 85 } endpoint_t; 89 86 90 extern 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); 93 extern void endpoint_destroy(endpoint_t *); 87 extern void endpoint_init(endpoint_t *, bus_t *); 94 88 95 89 extern void endpoint_add_ref(endpoint_t *); 96 90 extern void endpoint_del_ref(endpoint_t *); 97 98 extern void endpoint_set_hc_data(endpoint_t *, void *, int (*)(void *),99 void (*)(void *, int));100 extern void endpoint_clear_hc_data(endpoint_t *);101 91 102 92 extern void endpoint_use(endpoint_t *); … … 104 94 105 95 extern int endpoint_toggle_get(endpoint_t *); 106 extern void endpoint_toggle_set(endpoint_t *, int);96 extern void endpoint_toggle_set(endpoint_t *, unsigned); 107 97 108 98 /** list_get_instance wrapper.
Note:
See TracChangeset
for help on using the changeset viewer.