Changeset 41ef5b9 in mainline for uspace/lib/usb/include
- Timestamp:
- 2011-03-21T17:16:10Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4d0c40b
- Parents:
- fd9f6e4c (diff), 434ef65 (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/include/usb
- Files:
-
- 1 added
- 6 edited
- 1 moved
-
classes/hub.h (modified) (1 diff)
-
devdrv.h (modified) (2 diffs)
-
host/batch.h (added)
-
host/device_keeper.h (moved) (moved from uspace/drv/uhci-hcd/utils/device_keeper.h ) (1 diff)
-
pipes.h (modified) (3 diffs)
-
recognise.h (modified) (1 diff)
-
request.h (modified) (1 diff)
-
usb.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/include/usb/classes/hub.h
rfd9f6e4c r41ef5b9 60 60 } usb_hub_class_feature_t; 61 61 62 /** Header of standard hub descriptor without the "variadic" part. */ 63 typedef struct { 64 /** Descriptor length. */ 65 uint8_t length; 66 /** Descriptor type (0x29). */ 67 uint8_t descriptor_type; 68 /** Number of downstream ports. */ 69 uint8_t port_count; 70 /** Characteristics bitmask. */ 71 uint16_t characteristics; 72 /** Time from power-on to stabilization of current on the port. */ 73 uint8_t power_good_time; 74 /** Maximum current requirements in mA. */ 75 uint8_t max_current; 76 } __attribute__ ((packed)) usb_hub_descriptor_header_t; 62 77 63 78 /** -
uspace/lib/usb/include/usb/devdrv.h
rfd9f6e4c r41ef5b9 38 38 #include <usb/pipes.h> 39 39 40 /** Descriptors for USB device. */ 41 typedef struct { 42 /** Standard device descriptor. */ 43 usb_standard_device_descriptor_t device; 44 /** Full configuration descriptor of current configuration. */ 45 uint8_t *configuration; 46 size_t configuration_size; 47 } usb_device_descriptors_t; 48 40 49 /** USB device structure. */ 41 50 typedef struct { 42 51 /** The default control pipe. */ 43 usb_ endpoint_pipe_t ctrl_pipe;52 usb_pipe_t ctrl_pipe; 44 53 /** Other endpoint pipes. 45 54 * This is an array of other endpoint pipes in the same order as … … 52 61 */ 53 62 int interface_no; 63 64 /** Some useful descriptors. */ 65 usb_device_descriptors_t descriptors; 66 54 67 /** Generic DDF device backing this one. */ 55 68 ddf_dev_t *ddf_dev; -
uspace/lib/usb/include/usb/host/device_keeper.h
rfd9f6e4c r41ef5b9 27 27 */ 28 28 29 /** @addtogroup drvusbuhcihc29 /** @addtogroup libusb 30 30 * @{ 31 31 */ 32 32 /** @file 33 * @brief UHCI driver 33 * Device keeper structure and functions. 34 * 35 * Typical USB host controller needs to keep track of various settings for 36 * each device that is connected to it. 37 * State of toggle bit, device speed etc. etc. 38 * This structure shall simplify the management. 34 39 */ 35 #ifndef UTILS_DEVICE_KEEPER_H36 #define UTILS_DEVICE_KEEPER_H40 #ifndef LIBUSB_HOST_DEVICE_KEEPER_H 41 #define LIBUSB_HOST_DEVICE_KEEPER_H 37 42 #include <devman.h> 38 43 #include <fibril_synch.h> 39 44 #include <usb/usb.h> 40 45 46 /** Number of USB address for array dimensions. */ 41 47 #define USB_ADDRESS_COUNT (USB11_ADDRESS_MAX + 1) 42 48 49 /** Information about attached USB device. */ 43 50 struct usb_device_info { 44 51 usb_speed_t speed; 45 52 bool occupied; 46 uint16_t toggle_status ;53 uint16_t toggle_status[2]; 47 54 devman_handle_t handle; 48 55 }; 49 56 50 typedef struct device_keeper { 57 /** Host controller device keeper. 58 * You shall not access members directly but only using functions below. 59 */ 60 typedef struct { 51 61 struct usb_device_info devices[USB_ADDRESS_COUNT]; 52 62 fibril_mutex_t guard; 53 63 fibril_condvar_t default_address_occupied; 54 64 usb_address_t last_address; 55 } device_keeper_t;65 } usb_device_keeper_t; 56 66 57 void device_keeper_init(device_keeper_t *instance);67 void usb_device_keeper_init(usb_device_keeper_t *instance); 58 68 59 void device_keeper_reserve_default(60 device_keeper_t *instance,usb_speed_t speed);69 void usb_device_keeper_reserve_default_address(usb_device_keeper_t *instance, 70 usb_speed_t speed); 61 71 62 void device_keeper_release_default(device_keeper_t *instance);72 void usb_device_keeper_release_default_address(usb_device_keeper_t *instance); 63 73 64 void device_keeper_reset_if_need( 65 device_keeper_t *instance, usb_target_t target, const unsigned char *setup_data); 74 void usb_device_keeper_reset_if_need(usb_device_keeper_t *instance, 75 usb_target_t target, 76 const uint8_t *setup_data); 66 77 67 int device_keeper_get_toggle(device_keeper_t *instance, usb_target_t target); 78 int usb_device_keeper_get_toggle(usb_device_keeper_t *instance, 79 usb_target_t target, usb_direction_t direction); 68 80 69 int device_keeper_set_toggle(70 device_keeper_t *instance, usb_target_t target, bool toggle);81 int usb_device_keeper_set_toggle(usb_device_keeper_t *instance, 82 usb_target_t target, usb_direction_t direction, bool toggle); 71 83 72 usb_address_t device_keeper_ request(73 device_keeper_t *instance,usb_speed_t speed);84 usb_address_t device_keeper_get_free_address(usb_device_keeper_t *instance, 85 usb_speed_t speed); 74 86 75 void device_keeper_bind(76 device_keeper_t *instance,usb_address_t address, devman_handle_t handle);87 void usb_device_keeper_bind(usb_device_keeper_t *instance, 88 usb_address_t address, devman_handle_t handle); 77 89 78 void device_keeper_release(device_keeper_t *instance, usb_address_t address); 90 void usb_device_keeper_release(usb_device_keeper_t *instance, 91 usb_address_t address); 79 92 80 usb_address_t device_keeper_find(81 dev ice_keeper_t *instance, devman_handle_t handle);93 usb_address_t usb_device_keeper_find(usb_device_keeper_t *instance, 94 devman_handle_t handle); 82 95 83 usb_speed_t device_keeper_speed( 84 device_keeper_t *instance, usb_address_t address); 96 usb_speed_t usb_device_keeper_get_speed(usb_device_keeper_t *instance, 97 usb_address_t address); 98 85 99 #endif 86 100 /** -
uspace/lib/usb/include/usb/pipes.h
rfd9f6e4c r41ef5b9 80 80 */ 81 81 int hc_phone; 82 } usb_ endpoint_pipe_t;82 } usb_pipe_t; 83 83 84 84 … … 102 102 typedef struct { 103 103 /** Endpoint pipe. */ 104 usb_ endpoint_pipe_t *pipe;104 usb_pipe_t *pipe; 105 105 /** Endpoint description. */ 106 106 const usb_endpoint_description_t *description; … … 125 125 usb_address_t usb_device_get_assigned_address(devman_handle_t); 126 126 127 int usb_endpoint_pipe_initialize(usb_endpoint_pipe_t *, 128 usb_device_connection_t *, 127 int usb_pipe_initialize(usb_pipe_t *, usb_device_connection_t *, 129 128 usb_endpoint_t, usb_transfer_type_t, size_t, usb_direction_t); 130 int usb_ endpoint_pipe_initialize_default_control(usb_endpoint_pipe_t *,129 int usb_pipe_initialize_default_control(usb_pipe_t *, 131 130 usb_device_connection_t *); 132 int usb_ endpoint_pipe_probe_default_control(usb_endpoint_pipe_t *);133 int usb_ endpoint_pipe_initialize_from_configuration(usb_endpoint_mapping_t *,131 int usb_pipe_probe_default_control(usb_pipe_t *); 132 int usb_pipe_initialize_from_configuration(usb_endpoint_mapping_t *, 134 133 size_t, uint8_t *, size_t, usb_device_connection_t *); 135 int usb_endpoint_pipe_register(usb_endpoint_pipe_t *, unsigned int, 136 usb_hc_connection_t *); 137 int usb_endpoint_pipe_unregister(usb_endpoint_pipe_t *, usb_hc_connection_t *); 134 int usb_pipe_register(usb_pipe_t *, unsigned int, usb_hc_connection_t *); 135 int usb_pipe_unregister(usb_pipe_t *, usb_hc_connection_t *); 138 136 139 int usb_ endpoint_pipe_start_session(usb_endpoint_pipe_t *);140 int usb_ endpoint_pipe_end_session(usb_endpoint_pipe_t *);141 bool usb_ endpoint_pipe_is_session_started(usb_endpoint_pipe_t *);137 int usb_pipe_start_session(usb_pipe_t *); 138 int usb_pipe_end_session(usb_pipe_t *); 139 bool usb_pipe_is_session_started(usb_pipe_t *); 142 140 143 int usb_ endpoint_pipe_read(usb_endpoint_pipe_t *, void *, size_t, size_t *);144 int usb_ endpoint_pipe_write(usb_endpoint_pipe_t *, void *, size_t);141 int usb_pipe_read(usb_pipe_t *, void *, size_t, size_t *); 142 int usb_pipe_write(usb_pipe_t *, void *, size_t); 145 143 146 int usb_ endpoint_pipe_control_read(usb_endpoint_pipe_t *, void *, size_t,144 int usb_pipe_control_read(usb_pipe_t *, void *, size_t, 147 145 void *, size_t, size_t *); 148 int usb_ endpoint_pipe_control_write(usb_endpoint_pipe_t *, void *, size_t,146 int usb_pipe_control_write(usb_pipe_t *, void *, size_t, 149 147 void *, size_t); 150 148 -
uspace/lib/usb/include/usb/recognise.h
rfd9f6e4c r41ef5b9 48 48 const usb_standard_interface_descriptor_t *, match_id_list_t *); 49 49 50 int usb_device_create_match_ids(usb_ endpoint_pipe_t *, match_id_list_t *);50 int usb_device_create_match_ids(usb_pipe_t *, match_id_list_t *); 51 51 52 52 int usb_device_register_child_in_devman(usb_address_t, devman_handle_t, -
uspace/lib/usb/include/usb/request.h
rfd9f6e4c r41ef5b9 86 86 } __attribute__ ((packed)) usb_device_request_setup_packet_t; 87 87 88 int usb_control_request_set(usb_ endpoint_pipe_t *,88 int usb_control_request_set(usb_pipe_t *, 89 89 usb_request_type_t, usb_request_recipient_t, uint8_t, 90 90 uint16_t, uint16_t, void *, size_t); 91 91 92 int usb_control_request_get(usb_ endpoint_pipe_t *,92 int usb_control_request_get(usb_pipe_t *, 93 93 usb_request_type_t, usb_request_recipient_t, uint8_t, 94 94 uint16_t, uint16_t, void *, size_t, size_t *); 95 95 96 int usb_request_set_address(usb_endpoint_pipe_t *, usb_address_t); 97 int usb_request_get_descriptor(usb_endpoint_pipe_t *, usb_request_type_t, 96 int usb_request_get_status(usb_pipe_t *, usb_request_recipient_t, 97 uint16_t, uint16_t *); 98 int usb_request_clear_feature(usb_pipe_t *, usb_request_type_t, 99 usb_request_recipient_t, uint16_t, uint16_t); 100 int usb_request_set_feature(usb_pipe_t *, usb_request_type_t, 101 usb_request_recipient_t, uint16_t, uint16_t); 102 int usb_request_set_address(usb_pipe_t *, usb_address_t); 103 int usb_request_get_descriptor(usb_pipe_t *, usb_request_type_t, 98 104 usb_request_recipient_t, uint8_t, uint8_t, uint16_t, void *, size_t, 99 105 size_t *); 100 int usb_request_get_descriptor_alloc(usb_ endpoint_pipe_t *, usb_request_type_t,106 int usb_request_get_descriptor_alloc(usb_pipe_t *, usb_request_type_t, 101 107 usb_request_recipient_t, uint8_t, uint8_t, uint16_t, void **, size_t *); 102 int usb_request_get_device_descriptor(usb_ endpoint_pipe_t *,108 int usb_request_get_device_descriptor(usb_pipe_t *, 103 109 usb_standard_device_descriptor_t *); 104 int usb_request_get_bare_configuration_descriptor(usb_ endpoint_pipe_t *, int,110 int usb_request_get_bare_configuration_descriptor(usb_pipe_t *, int, 105 111 usb_standard_configuration_descriptor_t *); 106 int usb_request_get_full_configuration_descriptor(usb_ endpoint_pipe_t *, int,112 int usb_request_get_full_configuration_descriptor(usb_pipe_t *, int, 107 113 void *, size_t, size_t *); 108 int usb_request_get_full_configuration_descriptor_alloc(usb_ endpoint_pipe_t *,114 int usb_request_get_full_configuration_descriptor_alloc(usb_pipe_t *, 109 115 int, void **, size_t *); 110 int usb_request_set_configuration(usb_endpoint_pipe_t *, uint8_t); 116 int usb_request_set_descriptor(usb_pipe_t *, usb_request_type_t, 117 usb_request_recipient_t, uint8_t, uint8_t, uint16_t, void *, size_t); 118 int usb_request_get_configuration(usb_pipe_t *, uint8_t *); 119 int usb_request_set_configuration(usb_pipe_t *, uint8_t); 120 int usb_request_get_interface(usb_pipe_t *, uint8_t, uint8_t *); 121 int usb_request_set_interface(usb_pipe_t *, uint8_t, uint8_t); 111 122 112 int usb_request_get_supported_languages(usb_ endpoint_pipe_t *,123 int usb_request_get_supported_languages(usb_pipe_t *, 113 124 l18_win_locales_t **, size_t *); 114 int usb_request_get_string(usb_ endpoint_pipe_t *, size_t, l18_win_locales_t,125 int usb_request_get_string(usb_pipe_t *, size_t, l18_win_locales_t, 115 126 char **); 116 127 -
uspace/lib/usb/include/usb/usb.h
rfd9f6e4c r41ef5b9 61 61 62 62 const char * usb_str_transfer_type(usb_transfer_type_t t); 63 const char * usb_str_transfer_type_short(usb_transfer_type_t t); 63 64 64 65 /** USB data transfer direction. */ … … 78 79 USB_SPEED_HIGH 79 80 } usb_speed_t; 81 82 const char *usb_str_speed(usb_speed_t); 83 80 84 81 85 /** USB request type target. */
Note:
See TracChangeset
for help on using the changeset viewer.
