Changeset 75732da in mainline for uspace/lib/usb
- Timestamp:
- 2010-12-13T07:20:20Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 309dea52
- Parents:
- 84439d7 (diff), 37f7cfe (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/lib/usb
- Files:
-
- 10 added
- 10 edited
-
Makefile (modified) (1 diff)
-
include/usb/classes/classes.h (modified) (1 diff)
-
include/usb/classes/hid.h (modified) (2 diffs)
-
include/usb/classes/hidparser.h (added)
-
include/usb/classes/hub.h (modified) (2 diffs)
-
include/usb/debug.h (added)
-
include/usb/devreq.h (modified) (2 diffs)
-
include/usb/hcd.h (added)
-
include/usb/hcdhubd.h (modified) (1 diff)
-
include/usb/usb.h (modified) (1 diff)
-
include/usb/usbdrv.h (modified) (4 diffs)
-
src/addrkeep.c (added)
-
src/class.c (added)
-
src/debug.c (added)
-
src/drvpsync.c (added)
-
src/hidparser.c (added)
-
src/recognise.c (added)
-
src/remotedrv.c (modified) (1 diff)
-
src/usbdrv.c (modified) (8 diffs)
-
src/usbdrvreq.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/Makefile
r84439d7 r75732da 33 33 34 34 SOURCES = \ 35 src/addrkeep.c \ 36 src/class.c \ 37 src/debug.c \ 38 src/drvpsync.c \ 35 39 src/hcdhubd.c \ 36 40 src/hcdrv.c \ 41 src/hidparser.c \ 37 42 src/localdrv.c \ 43 src/recognise.c \ 38 44 src/remotedrv.c \ 39 45 src/usb.c \ 46 src/usbdrvreq.c \ 40 47 src/usbdrv.c 41 48 -
uspace/lib/usb/include/usb/classes/classes.h
r84439d7 r75732da 60 60 } usb_class_t; 61 61 62 const char *usb_str_class(usb_class_t); 62 63 63 64 #endif -
uspace/lib/usb/include/usb/classes/hid.h
r84439d7 r75732da 36 36 #define LIBUSB_HID_H_ 37 37 38 #include <usb/usb.h> 39 #include <driver.h> 40 #include <usb/classes/hidparser.h> 41 38 42 /** USB/HID device requests. */ 39 43 typedef enum { … … 54 58 } usb_hid_protocol_t; 55 59 60 /** Part of standard USB HID descriptor specifying one class descriptor. 61 * 62 * (See HID Specification, p.22) 63 */ 64 typedef struct { 65 /** Type of class descriptor (Report or Physical). */ 66 uint8_t class_descriptor_type; 67 /** Length of class descriptor. */ 68 uint16_t class_descriptor_length; 69 } __attribute__ ((packed)) usb_standard_hid_descriptor_class_item_t; 70 71 /** Standard USB HID descriptor. 72 * 73 * (See HID Specification, p.22) 74 * 75 * It is actually only the "header" of the descriptor, as it may have arbitrary 76 * length if more than one class descritor is provided. 77 */ 78 typedef struct { 79 /** Size of this descriptor in bytes. */ 80 uint8_t length; 81 /** Descriptor type (USB_DESCTYPE_HID). */ 82 uint8_t descriptor_type; 83 /** HID Class Specification release. */ 84 uint16_t spec_release; 85 /** Country code of localized hardware. */ 86 uint8_t country_code; 87 /** Total number of class (i.e. Report and Physical) descriptors. */ 88 uint8_t class_count; 89 /** First mandatory class descriptor info. */ 90 usb_standard_hid_descriptor_class_item_t class_descriptor; 91 } __attribute__ ((packed)) usb_standard_hid_descriptor_t; 92 93 94 /** 95 * @brief USB/HID keyboard device type. 96 * 97 * Quite dummy right now. 98 */ 99 typedef struct { 100 device_t *device; 101 usb_address_t address; 102 usb_endpoint_t poll_endpoint; 103 usb_hid_report_parser_t *parser; 104 } usb_hid_dev_kbd_t; 105 56 106 #endif 57 107 /** -
uspace/lib/usb/include/usb/classes/hub.h
r84439d7 r75732da 177 177 178 178 /** @brief hub class request codes*/ 179 /// \TODO these are duplicit to standart descriptors 179 180 typedef enum { 180 181 /** */ … … 213 214 usb_hub_descriptor_t * usb_deserialize_hub_desriptor(void * sdescriptor); 214 215 215 /**216 * @brief create hub structure instance217 *218 * @param device219 * @return220 */221 usb_hcd_hub_info_t * usb_create_hub_info(device_t * device);222 216 223 217 -
uspace/lib/usb/include/usb/devreq.h
r84439d7 r75732da 38 38 #include <ipc/ipc.h> 39 39 #include <async.h> 40 #include <usb/usb.h> 41 #include <usb/descriptor.h> 40 42 41 43 /** Standard device request. */ … … 83 85 } __attribute__ ((packed)) usb_device_request_setup_packet_t; 84 86 87 int usb_drv_req_set_address(int, usb_address_t, usb_address_t); 88 int usb_drv_req_get_device_descriptor(int, usb_address_t, 89 usb_standard_device_descriptor_t *); 90 int usb_drv_req_get_bare_configuration_descriptor(int, usb_address_t, int, 91 usb_standard_configuration_descriptor_t *); 92 int usb_drv_req_get_full_configuration_descriptor(int, usb_address_t, int, 93 void *, size_t, size_t *); 94 95 85 96 #endif 86 97 /** -
uspace/lib/usb/include/usb/hcdhubd.h
r84439d7 r75732da 65 65 } usb_hcd_attached_device_info_t; 66 66 67 /** Information about attached hub. */68 typedef struct {69 /** Number of ports. */70 size_t port_count;71 /** General device info. */72 usb_hcd_attached_device_info_t *device;73 /** Link to other hubs. */74 link_t link;75 } usb_hcd_hub_info_t;76 67 77 68 /** Host controller device. */ -
uspace/lib/usb/include/usb/usb.h
r84439d7 r75732da 69 69 typedef int usb_address_t; 70 70 71 /** Default USB address. */ 72 #define USB_ADDRESS_DEFAULT 0 73 /** Maximum address number in USB 1.1. */ 74 #define USB11_ADDRESS_MAX 128 75 71 76 /** USB endpoint number type. 72 77 * Negative values could be used to indicate error. -
uspace/lib/usb/include/usb/usbdrv.h
r84439d7 r75732da 36 36 #define LIBUSB_USBDRV_H_ 37 37 38 #include "usb.h"38 #include <usb/usb.h> 39 39 #include <driver.h> 40 #include <usb/devreq.h> 41 #include <usb/descriptor.h> 40 42 41 43 int usb_drv_hc_connect(device_t *, unsigned int); … … 54 56 void *, size_t, size_t *, usb_handle_t *); 55 57 58 int usb_drv_psync_interrupt_out(int, usb_target_t, void *, size_t); 59 int usb_drv_psync_interrupt_in(int, usb_target_t, void *, size_t, size_t *); 60 61 62 56 63 int usb_drv_async_control_write_setup(int, usb_target_t, 57 64 void *, size_t, usb_handle_t *); … … 60 67 int usb_drv_async_control_write_status(int, usb_target_t, 61 68 usb_handle_t *); 69 70 int usb_drv_psync_control_write_setup(int, usb_target_t, void *, size_t); 71 int usb_drv_psync_control_write_data(int, usb_target_t, void *, size_t); 72 int usb_drv_psync_control_write_status(int, usb_target_t); 73 74 int usb_drv_psync_control_write(int, usb_target_t, 75 void *, size_t, void *, size_t); 76 62 77 63 78 int usb_drv_async_control_read_setup(int, usb_target_t, … … 68 83 usb_handle_t *); 69 84 85 int usb_drv_psync_control_read_setup(int, usb_target_t, void *, size_t); 86 int usb_drv_psync_control_read_data(int, usb_target_t, void *, size_t, size_t *); 87 int usb_drv_psync_control_read_status(int, usb_target_t); 88 89 int usb_drv_psync_control_read(int, usb_target_t, 90 void *, size_t, void *, size_t, size_t *); 91 92 93 70 94 int usb_drv_async_wait_for(usb_handle_t); 95 96 int usb_drv_create_device_match_ids(int, match_id_list_t *, usb_address_t); 97 int usb_drv_register_child_in_devman(int, device_t *, usb_address_t, 98 devman_handle_t *); 99 71 100 72 101 #endif -
uspace/lib/usb/src/remotedrv.c
r84439d7 r75732da 300 300 */ 301 301 static void remote_in_callback(usb_hc_device_t *hc, 302 usb_transaction_outcome_t outcome, size_t actual_size, void *arg)302 size_t actual_size, usb_transaction_outcome_t outcome, void *arg) 303 303 { 304 304 transfer_info_t *transfer = (transfer_info_t *) arg; -
uspace/lib/usb/src/usbdrv.c
r84439d7 r75732da 36 36 #include <usbhc_iface.h> 37 37 #include <errno.h> 38 #include <str_error.h> 38 39 39 40 /** Information about pending transaction on HC. */ … … 71 72 devman_handle_t handle; 72 73 73 rc = devman_device_get_handle("/v hc", &handle, 0);74 rc = devman_device_get_handle("/virt/usbhc", &handle, 0); 74 75 if (rc != EOK) { 75 76 return rc; … … 90 91 { 91 92 ipcarg_t address; 92 int rc = async_req_1_1(phone, IPC_M_USBHC_GET_ADDRESS, 93 int rc = async_req_2_1(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 94 IPC_M_USBHC_GET_ADDRESS, 93 95 dev->handle, &address); 94 96 95 97 if (rc != EOK) { 98 printf("usb_drv_get_my_address over %d failed: %s\n", phone, str_error(rc)); 96 99 return rc; 97 100 } … … 107 110 int usb_drv_reserve_default_address(int phone) 108 111 { 109 return async_req_0_0(phone, IPC_M_USBHC_RESERVE_DEFAULT_ADDRESS); 112 return async_req_1_0(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 113 IPC_M_USBHC_RESERVE_DEFAULT_ADDRESS); 110 114 } 111 115 … … 117 121 int usb_drv_release_default_address(int phone) 118 122 { 119 return async_req_0_0(phone, IPC_M_USBHC_RELEASE_DEFAULT_ADDRESS); 123 return async_req_1_0(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 124 IPC_M_USBHC_RELEASE_DEFAULT_ADDRESS); 120 125 } 121 126 … … 128 133 { 129 134 ipcarg_t address; 130 int rc = async_req_0_1(phone, IPC_M_USBHC_REQUEST_ADDRESS, &address); 135 int rc = async_req_1_1(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 136 IPC_M_USBHC_REQUEST_ADDRESS, &address); 131 137 if (rc != EOK) { 132 138 return rc; … … 146 152 devman_handle_t handle) 147 153 { 148 int rc = async_req_2_0(phone, IPC_M_USBHC_BIND_ADDRESS, 154 int rc = async_req_3_0(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 155 IPC_M_USBHC_BIND_ADDRESS, 149 156 address, handle); 150 157 … … 160 167 int usb_drv_release_address(int phone, usb_address_t address) 161 168 { 162 return async_req_1_0(phone, IPC_M_USBHC_RELEASE_ADDRESS, address); 169 return async_req_2_0(phone, DEV_IFACE_ID(USBHC_DEV_IFACE), 170 IPC_M_USBHC_RELEASE_ADDRESS, address); 163 171 } 164 172
Note:
See TracChangeset
for help on using the changeset viewer.
