Changeset cbd568b in mainline
- Timestamp:
- 2011-12-14T13:49:01Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- bdb23c63
- Parents:
- c59dbdd5
- Location:
- uspace/lib/usbhost/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbhost/src/iface.c
rc59dbdd5 rcbd568b 39 39 #include <usb/host/hcd.h> 40 40 41 /** Prepare generic usb_transfer_batch and schedule it. 42 * @param fun DDF fun 43 * @param target address and endpoint number. 44 * @param setup_data Data to use in setup stage (Control communication type) 45 * @param in Callback for device to host communication. 46 * @param out Callback for host to device communication. 47 * @param arg Callback parameter. 48 * @param name Communication identifier (for nicer output). 49 * @return Error code. 50 */ 41 51 static inline int send_batch( 42 52 ddf_fun_t *fun, usb_target_t target, usb_direction_t direction, … … 89 99 } 90 100 /*----------------------------------------------------------------------------*/ 101 /** Calls ep_add_hook upon endpoint registration. 102 * @param ep Endpoint to be registered. 103 * @param arg hcd_t in disguise. 104 * @return Error code. 105 */ 91 106 static int register_helper(endpoint_t *ep, void *arg) 92 107 { … … 99 114 } 100 115 /*----------------------------------------------------------------------------*/ 116 /** Calls ep_remove_hook upon endpoint removal. 117 * @param ep Endpoint to be unregistered. 118 * @param arg hcd_t in disguise. 119 */ 101 120 static void unregister_helper(endpoint_t *ep, void *arg) 102 121 { … … 108 127 } 109 128 /*----------------------------------------------------------------------------*/ 129 /** Calls ep_remove_hook upon endpoint removal. Prints warning. 130 * @param ep Endpoint to be unregistered. 131 * @param arg hcd_t in disguise. 132 */ 110 133 static void unregister_helper_warn(endpoint_t *ep, void *arg) 111 134 { … … 119 142 } 120 143 /*----------------------------------------------------------------------------*/ 121 /** Request address interface function 144 /** Request address interface function. 122 145 * 123 146 * @param[in] fun DDF function that was called. 147 * @param[in] address Pointer to preferred USB address. 148 * @param[out] address Place to write a new address. 149 * @param[in] strict Fail if the preferred address is not available. 124 150 * @param[in] speed Speed to associate with the new default address. 125 * @param[out] address Place to write a new address.126 151 * @return Error code. 127 152 */ … … 140 165 } 141 166 /*----------------------------------------------------------------------------*/ 142 /** Bind address interface function 167 /** Bind address interface function. 143 168 * 144 169 * @param[in] fun DDF function that was called. … … 148 173 */ 149 174 static int bind_address( 150 ddf_fun_t *fun, usb_address_t address, devman_handle_t handle)175 ddf_fun_t *fun, usb_address_t address, devman_handle_t handle) 151 176 { 152 177 assert(fun); … … 176 201 } 177 202 /*----------------------------------------------------------------------------*/ 178 /** Release address interface function 203 /** Release address interface function. 179 204 * 180 205 * @param[in] fun DDF function that was called. … … 194 219 } 195 220 /*----------------------------------------------------------------------------*/ 221 /** Register endpoint interface function. 222 * @param fun DDF function. 223 * @param address USB address of the device. 224 * @param endpoint USB endpoint number to be registered. 225 * @param transfer_type Endpoint's transfer type. 226 * @param direction USB communication direction the endpoint is capable of. 227 * @param max_packet_size Maximu size of packets the endpoint accepts. 228 * @param interval Preferred timeout between communication. 229 * @return Error code. 230 */ 196 231 static int register_endpoint( 197 232 ddf_fun_t *fun, usb_address_t address, usb_endpoint_t endpoint, 198 233 usb_transfer_type_t transfer_type, usb_direction_t direction, 199 size_t max_packet_size, unsigned int interval)234 size_t max_packet_size, unsigned interval) 200 235 { 201 236 assert(fun); … … 220 255 } 221 256 /*----------------------------------------------------------------------------*/ 257 /** Unregister endpoint interface function. 258 * @param fun DDF function. 259 * @param address USB address of the endpoint. 260 * @param endpoint USB endpoint number. 261 * @param direction Communication direction of the enpdoint to unregister. 262 * @return Error code. 263 */ 222 264 static int unregister_endpoint( 223 265 ddf_fun_t *fun, usb_address_t address, … … 233 275 } 234 276 /*----------------------------------------------------------------------------*/ 277 /** Inbound communication interface function. 278 * @param fun DDF function. 279 * @param target Communication target. 280 * @param setup_data Data to use in setup stage (control transfers). 281 * @param data Pointer to data buffer. 282 * @param size Size of the data buffer. 283 * @param callback Function to call on communication end. 284 * @param arg Argument passed to the callback function. 285 * @return Error code. 286 */ 235 287 static int usb_read(ddf_fun_t *fun, usb_target_t target, uint64_t setup_data, 236 288 uint8_t *data, size_t size, usbhc_iface_transfer_in_callback_t callback, … … 241 293 } 242 294 /*----------------------------------------------------------------------------*/ 295 /** Outbound communication interface function. 296 * @param fun DDF function. 297 * @param target Communication target. 298 * @param setup_data Data to use in setup stage (control transfers). 299 * @param data Pointer to data buffer. 300 * @param size Size of the data buffer. 301 * @param callback Function to call on communication end. 302 * @param arg Argument passed to the callback function. 303 * @return Error code. 304 */ 243 305 static int usb_write(ddf_fun_t *fun, usb_target_t target, uint64_t setup_data, 244 306 const uint8_t *data, size_t size, … … 249 311 } 250 312 /*----------------------------------------------------------------------------*/ 313 /** usbhc Interface implementation using hcd_t from libusbhost library. */ 251 314 usbhc_iface_t hcd_iface = { 252 315 .request_address = request_address, -
uspace/lib/usbhost/src/usb_device_manager.c
rc59dbdd5 rcbd568b 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 29 28 /** @addtogroup libusbhost 30 29 * @{ … … 41 40 * 42 41 * @param[in] instance Device manager structure to use. 43 * @param[in] speed Speed of the device requiring address.44 42 * @return Free address, or error code. 45 43 */ … … 133 131 * @param[in] handle Devman handle of the device. 134 132 * @return Error code. 133 * @note Won't accept binding for default address. 135 134 */ 136 135 int usb_device_manager_bind_address(usb_device_manager_t *instance, … … 184 183 } 185 184 /*----------------------------------------------------------------------------*/ 186 /** Find USB address associated with the device 185 /** Find USB address associated with the device. 187 186 * 188 187 * @param[in] instance Device manager structure to use. … … 208 207 /*----------------------------------------------------------------------------*/ 209 208 /** Find devman handle and speed assigned to USB address. 210 * Intentionally refuse to work on default address.211 209 * 212 210 * @param[in] instance Device manager structure to use. -
uspace/lib/usbhost/src/usb_endpoint_manager.c
rc59dbdd5 rcbd568b 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 /** @addtogroup libusbhost 29 * @{ 30 */ 31 /** @file 32 * HC Endpoint management. 33 */ 28 34 29 35 #include <bool.h> … … 56 62 } 57 63 /*----------------------------------------------------------------------------*/ 58 /** Get list that holds endp ints for given address.64 /** Get list that holds endpoints for given address. 59 65 * @param instance usb_endpoint_manager structure, non-null. 60 66 * @param addr USB address, must be >= 0. … … 75 81 * @return Pointer to endpoint_t structure representing given communication 76 82 * target, NULL if there is no such endpoint registered. 83 * @note Assumes that the internal mutex is locked. 77 84 */ 78 85 static endpoint_t * find_locked(usb_endpoint_manager_t *instance, … … 169 176 * 170 177 * Really ugly one. Resets toggle bit on all endpoints that need it. 178 * @TODO Use tools from libusbdev requests.h 171 179 */ 172 180 void usb_endpoint_manager_reset_eps_if_need(usb_endpoint_manager_t *instance, … … 184 192 case 0x01: /* Clear Feature -- resets only cleared ep */ 185 193 /* Recipient is endpoint, value is zero (ENDPOINT_STALL) */ 194 // TODO Use macros in libusbdev requests.h 186 195 if (((data[0] & 0xf) == 1) && ((data[2] | data[3]) == 0)) { 187 196 fibril_mutex_lock(&instance->guard); … … 202 211 /* Recipient must be device, this resets all endpoints, 203 212 * In fact there should be no endpoints but EP 0 registered 204 * as different interfaces use different endpoints. */ 213 * as different interfaces use different endpoints, 214 * unless you're changing configuration or alternative 215 * interface of an already setup device. */ 205 216 if ((data[0] & 0xf) == 0) { 206 217 fibril_mutex_lock(&instance->guard); … … 385 396 } 386 397 /*----------------------------------------------------------------------------*/ 398 /** Unregister and destroy all endpoints using given address. 399 * @param instance usb_endpoint_manager structure, non-null. 400 * @param address USB address. 401 * @param endpoint USB endpoint number. 402 * @param direction Communication direction. 403 * @param callback Function to call after unregister, before destruction. 404 * @arg Argument to pass to the callback function. 405 * @return Error code. 406 */ 387 407 void usb_endpoint_manager_remove_address(usb_endpoint_manager_t *instance, 388 408 usb_address_t address, void (*callback)(endpoint_t *, void *), void *arg) … … 403 423 fibril_mutex_unlock(&instance->guard); 404 424 } 425 /** 426 * @} 427 */ -
uspace/lib/usbhost/src/usb_transfer_batch.c
rc59dbdd5 rcbd568b 48 48 * @param func_in callback on IN transfer completion. 49 49 * @param func_out callback on OUT transfer completion. 50 * @param fun DDF function (passed to callback function). 50 51 * @param arg Argument to pass to the callback function. 51 52 * @param private_data driver specific per batch data.
Note:
See TracChangeset
for help on using the changeset viewer.