Changeset 17873ac7 in mainline for uspace/lib/usbhost/include/usb
- Timestamp:
- 2017-10-31T19:06:57Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 479e32d
- Parents:
- a312d8f
- Location:
- uspace/lib/usbhost/include/usb/host
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/include/usb/host/bus.h
ra312d8f r17873ac7 44 44 45 45 #include <usb/usb.h> 46 #include <usb/request.h> 46 47 47 48 #include <assert.h> … … 97 98 int (*release_address)(bus_t *, usb_address_t); 98 99 99 int (*reset_toggle)(bus_t *, usb_target_t, bool);100 int (*reset_toggle)(bus_t *, usb_target_t, toggle_reset_mode_t); 100 101 101 102 size_t (*count_bw) (endpoint_t *, size_t); -
uspace/lib/usbhost/include/usb/host/endpoint.h
ra312d8f r17873ac7 52 52 /** Host controller side endpoint structure. */ 53 53 typedef struct endpoint { 54 /** Part of linked list. */ 55 link_t link; 54 56 /** Managing bus */ 55 57 bus_t *bus; 56 58 /** Reference count. */ 57 59 atomic_t refcnt; 58 /** Part of linked list. */59 link_t link;60 60 /** USB device */ 61 61 device_t *device; … … 76 76 /** Value of the toggle bit. */ 77 77 unsigned toggle:1; 78 /** T rue if there is a batch using this scheduled for this endpoint. */79 bool active;78 /** The currently active transfer batch. Write using methods, read under guard. */ 79 usb_transfer_batch_t *active_batch; 80 80 /** Protects resources and active status changes. */ 81 81 fibril_mutex_t guard; … … 91 91 extern void endpoint_del_ref(endpoint_t *); 92 92 93 extern void endpoint_use(endpoint_t *); 94 extern void endpoint_release(endpoint_t *); 93 /* Pay atention to synchronization of batch access wrt to aborting & finishing from another fibril. */ 94 95 /* Set currently active batch. The common case is to activate in the same 96 * critical section as scheduling to HW. 97 */ 98 extern void endpoint_activate_locked(endpoint_t *, usb_transfer_batch_t *); 99 100 /* Deactivate the endpoint, allowing others to activate it again. Batch shall 101 * already have an error set. */ 102 extern void endpoint_deactivate_locked(endpoint_t *); 103 104 /* Abort the currenty active batch. */ 105 void endpoint_abort(endpoint_t *); 95 106 96 107 extern int endpoint_toggle_get(endpoint_t *); 97 extern void endpoint_toggle_set(endpoint_t *, unsigned);108 extern void endpoint_toggle_set(endpoint_t *, bool); 98 109 99 110 /** list_get_instance wrapper. -
uspace/lib/usbhost/include/usb/host/usb_transfer_batch.h
ra312d8f r17873ac7 40 40 #include <usb/request.h> 41 41 42 #include <atomic.h> 42 43 #include <stddef.h> 44 #include <errno.h> 43 45 #include <stdint.h> 44 46 #include <usbhc_iface.h> … … 86 88 /** Size of memory pointed to by buffer member */ 87 89 size_t buffer_size; 88 89 90 /** Actually used portion of the buffer */ 90 91 size_t transfered_size; 92 91 93 /** Indicates success/failure of the communication */ 92 94 int error; … … 106 108 (batch).buffer_size, (batch).ep->max_packet_size 107 109 110 /** Wrapper for bus operation. */ 111 usb_transfer_batch_t *usb_transfer_batch_create(endpoint_t *); 112 113 /** Batch initializer. */ 108 114 void usb_transfer_batch_init(usb_transfer_batch_t *, endpoint_t *); 115 116 /** Call after status is known, but before releasing endpoint */ 117 int usb_transfer_batch_reset_toggle(usb_transfer_batch_t *); 118 119 /** Batch finalization. */ 120 void usb_transfer_batch_abort(usb_transfer_batch_t *); 109 121 void usb_transfer_batch_finish(usb_transfer_batch_t *); 110 122 111 usb_transfer_batch_t *usb_transfer_batch_create(endpoint_t *); 123 /** To be called from outside only when the transfer is not going to be finished 124 * (i.o.w. until successfuly scheduling) 125 */ 112 126 void usb_transfer_batch_destroy(usb_transfer_batch_t *); 113 127
Note:
See TracChangeset
for help on using the changeset viewer.