Changes in uspace/lib/drv/include/usb_iface.h [56bdd9a4:27ed734c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/include/usb_iface.h
r56bdd9a4 r27ed734c 39 39 40 40 #include "ddf/driver.h" 41 #include <async.h>42 41 #include <usb/usb.h> 42 typedef enum { 43 /** Tell USB address assigned to device. 44 * Parameters: 45 * - devman handle id 46 * Answer: 47 * - EINVAL - unknown handle or handle not managed by this driver 48 * - ENOTSUP - operation not supported (shall not happen) 49 * - arbitrary error code if returned by remote implementation 50 * - EOK - handle found, first parameter contains the USB address 51 * 52 * The handle must be the one used for binding USB address with 53 * it (IPC_M_USBHC_BIND_ADDRESS), otherwise the host controller 54 * (that this request would eventually reach) would not be able 55 * to find it. 56 * The problem is that this handle is actually assigned to the 57 * function inside driver of the parent device (usually hub driver). 58 * To bypass this problem, the initial caller specify handle as 59 * zero and the first parent assigns the actual value. 60 * See usb_iface_get_address_hub_child_impl() implementation 61 * that could be assigned to device ops of a child device of in a 62 * hub driver. 63 * For example, the USB multi interface device driver (MID) 64 * passes this initial zero without any modification because the 65 * handle must be resolved by its parent. 66 */ 67 IPC_M_USB_GET_MY_ADDRESS, 43 68 44 int usb_get_my_address(async_exch_t *, usb_address_t *); 45 int usb_get_my_interface(async_exch_t *, int *); 46 int usb_get_hc_handle(async_exch_t *, devman_handle_t *); 69 /** Tell interface number given device can use. 70 * Parameters 71 * - devman handle id of the device 72 * Answer: 73 * - ENOTSUP - operation not supported (can also mean any interface) 74 * - EOK - operation okay, first parameter contains interface number 75 */ 76 IPC_M_USB_GET_INTERFACE, 77 78 /** Tell devman handle of device host controller. 79 * Parameters: 80 * - none 81 * Answer: 82 * - EOK - request processed without errors 83 * - ENOTSUP - this indicates invalid USB driver 84 * Parameters of the answer: 85 * - devman handle of HC caller is physically connected to 86 */ 87 IPC_M_USB_GET_HOST_CONTROLLER_HANDLE 88 } usb_iface_funcs_t; 47 89 48 90 /** USB device communication interface. */ 49 91 typedef struct { 50 92 int (*get_my_address)(ddf_fun_t *, usb_address_t *); 51 int (*get_ my_interface)(ddf_fun_t *, int *);93 int (*get_interface)(ddf_fun_t *, devman_handle_t, int *); 52 94 int (*get_hc_handle)(ddf_fun_t *, devman_handle_t *); 53 95 } usb_iface_t; 96 54 97 55 98 #endif
Note:
See TracChangeset
for help on using the changeset viewer.