Changes in uspace/lib/drv/include/usb_iface.h [d4da860:41df71f9] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/include/usb_iface.h
rd4da860 r41df71f9 32 32 */ 33 33 /** @file 34 * @brief USB interface definition.34 * @brief USB device interface definition. 35 35 */ 36 36 … … 40 40 #include "ddf/driver.h" 41 41 #include <async.h> 42 #include <usb/usb.h> 42 43 43 44 typedef async_sess_t usb_dev_session_t; 44 45 /** USB speeds. */46 typedef enum {47 /** USB 1.1 low speed (1.5Mbits/s). */48 USB_SPEED_LOW,49 /** USB 1.1 full speed (12Mbits/s). */50 USB_SPEED_FULL,51 /** USB 2.0 high speed (480Mbits/s). */52 USB_SPEED_HIGH,53 /** Psuedo-speed serving as a boundary. */54 USB_SPEED_MAX55 } usb_speed_t;56 57 /** USB endpoint number type.58 * Negative values could be used to indicate error.59 */60 typedef int16_t usb_endpoint_t;61 62 /** USB address type.63 * Negative values could be used to indicate error.64 */65 typedef int16_t usb_address_t;66 67 /** USB transfer type. */68 typedef enum {69 USB_TRANSFER_CONTROL = 0,70 USB_TRANSFER_ISOCHRONOUS = 1,71 USB_TRANSFER_BULK = 2,72 USB_TRANSFER_INTERRUPT = 373 } usb_transfer_type_t;74 75 /** USB data transfer direction. */76 typedef enum {77 USB_DIRECTION_IN,78 USB_DIRECTION_OUT,79 USB_DIRECTION_BOTH80 } usb_direction_t;81 82 /** USB complete address type.83 * Pair address + endpoint is identification of transaction recipient.84 */85 typedef union {86 struct {87 usb_address_t address;88 usb_endpoint_t endpoint;89 } __attribute__((packed));90 uint32_t packed;91 } usb_target_t;92 45 93 46 extern usb_dev_session_t *usb_dev_connect(devman_handle_t); … … 98 51 extern int usb_get_my_device_handle(async_exch_t *, devman_handle_t *); 99 52 100 extern int usb_reserve_default_address(async_exch_t *, usb_speed_t);101 extern int usb_release_default_address(async_exch_t *);102 103 extern int usb_device_enumerate(async_exch_t *, unsigned port);104 extern int usb_device_remove(async_exch_t *, unsigned port);105 106 extern int usb_register_endpoint(async_exch_t *, usb_endpoint_t,107 usb_transfer_type_t, usb_direction_t, size_t, unsigned, unsigned);108 extern int usb_unregister_endpoint(async_exch_t *, usb_endpoint_t,109 usb_direction_t);110 extern int usb_read(async_exch_t *, usb_endpoint_t, uint64_t, void *, size_t,111 size_t *);112 extern int usb_write(async_exch_t *, usb_endpoint_t, uint64_t, const void *,113 size_t);114 115 /** Callback for outgoing transfer. */116 typedef void (*usb_iface_transfer_out_callback_t)(int, void *);117 118 /** Callback for incoming transfer. */119 typedef void (*usb_iface_transfer_in_callback_t)(int, size_t, void *);120 121 53 /** USB device communication interface. */ 122 54 typedef struct { 123 55 int (*get_my_interface)(ddf_fun_t *, int *); 124 56 int (*get_my_device_handle)(ddf_fun_t *, devman_handle_t *); 125 126 int (*reserve_default_address)(ddf_fun_t *, usb_speed_t);127 int (*release_default_address)(ddf_fun_t *);128 129 int (*device_enumerate)(ddf_fun_t *, unsigned);130 int (*device_remove)(ddf_fun_t *, unsigned);131 132 int (*register_endpoint)(ddf_fun_t *, usb_endpoint_t,133 usb_transfer_type_t, usb_direction_t, size_t, unsigned, unsigned);134 int (*unregister_endpoint)(ddf_fun_t *, usb_endpoint_t,135 usb_direction_t);136 137 int (*read)(ddf_fun_t *, usb_endpoint_t, uint64_t, uint8_t *, size_t,138 usb_iface_transfer_in_callback_t, void *);139 int (*write)(ddf_fun_t *, usb_endpoint_t, uint64_t, const uint8_t *,140 size_t, usb_iface_transfer_out_callback_t, void *);141 57 } usb_iface_t; 142 58
Note:
See TracChangeset
for help on using the changeset viewer.