Changeset 92b41f33 in mainline for uspace/lib/usb
- Timestamp:
- 2011-03-13T22:54:33Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b711f62
- Parents:
- deb4ba7 (diff), 5fd22d8 (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:
-
- 3 edited
-
include/usb/pipes.h (modified) (1 diff)
-
src/devdrv.c (modified) (1 diff)
-
src/pipesinit.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/include/usb/pipes.h
rdeb4ba7 r92b41f33 131 131 int usb_endpoint_pipe_initialize_from_configuration(usb_endpoint_mapping_t *, 132 132 size_t, uint8_t *, size_t, usb_device_connection_t *); 133 133 int usb_endpoint_pipe_register(usb_endpoint_pipe_t *, unsigned int, 134 usb_hc_connection_t *); 135 int usb_endpoint_pipe_unregister(usb_endpoint_pipe_t *, usb_hc_connection_t *); 134 136 135 137 int usb_endpoint_pipe_start_session(usb_endpoint_pipe_t *); -
uspace/lib/usb/src/devdrv.c
rdeb4ba7 r92b41f33 155 155 } 156 156 157 /* Register the endpoints. */ 158 usb_hc_connection_t hc_conn; 159 rc = usb_hc_connection_initialize_from_device(&hc_conn, dev->ddf_dev); 160 if (rc != EOK) { 161 usb_log_error( 162 "Failed initializing connection to host controller: %s.\n", 163 str_error(rc)); 164 goto rollback; 165 } 166 rc = usb_hc_connection_open(&hc_conn); 167 if (rc != EOK) { 168 usb_log_error("Failed to connect to host controller: %s.\n", 169 str_error(rc)); 170 goto rollback; 171 } 172 for (i = 0; i < pipe_count; i++) { 173 if (dev->pipes[i].present) { 174 rc = usb_endpoint_pipe_register(dev->pipes[i].pipe, 175 dev->pipes[i].descriptor->poll_interval, 176 &hc_conn); 177 /* Ignore error when operation not supported by HC. */ 178 if ((rc != EOK) && (rc != ENOTSUP)) { 179 /* FIXME: what shall we do? */ 180 dev->pipes[i].present = false; 181 free(dev->pipes[i].pipe); 182 dev->pipes[i].pipe = NULL; 183 } 184 } 185 } 186 /* Ignoring errors here. */ 187 usb_hc_connection_close(&hc_conn); 188 157 189 return EOK; 158 190 -
uspace/lib/usb/src/pipesinit.c
rdeb4ba7 r92b41f33 38 38 #include <usb/dp.h> 39 39 #include <usb/request.h> 40 #include <usbhc_iface.h> 40 41 #include <errno.h> 41 42 #include <assert.h> … … 393 394 } 394 395 396 /** Register endpoint with the host controller. 397 * 398 * @param pipe Pipe to be registered. 399 * @param interval Polling interval. 400 * @param hc_connection Connection to the host controller (must be opened). 401 * @return Error code. 402 */ 403 int usb_endpoint_pipe_register(usb_endpoint_pipe_t *pipe, 404 unsigned int interval, 405 usb_hc_connection_t *hc_connection) 406 { 407 assert(pipe); 408 assert(hc_connection); 409 410 if (!usb_hc_connection_is_opened(hc_connection)) { 411 return EBADF; 412 } 413 414 #define _PACK(high, low) ((high) * 256 + (low)) 415 416 return async_req_5_0(hc_connection->hc_phone, 417 DEV_IFACE_ID(USBHC_DEV_IFACE), IPC_M_USBHC_REGISTER_ENDPOINT, 418 _PACK(pipe->wire->address, pipe->endpoint_no), 419 _PACK(pipe->transfer_type, pipe->direction), 420 pipe->max_packet_size, interval); 421 422 #undef _PACK 423 } 424 425 /** Revert endpoint registration with the host controller. 426 * 427 * @param pipe Pipe to be unregistered. 428 * @param hc_connection Connection to the host controller (must be opened). 429 * @return Error code. 430 */ 431 int usb_endpoint_pipe_unregister(usb_endpoint_pipe_t *pipe, 432 usb_hc_connection_t *hc_connection) 433 { 434 assert(pipe); 435 assert(hc_connection); 436 437 if (!usb_hc_connection_is_opened(hc_connection)) { 438 return EBADF; 439 } 440 441 return async_req_4_0(hc_connection->hc_phone, 442 DEV_IFACE_ID(USBHC_DEV_IFACE), IPC_M_USBHC_UNREGISTER_ENDPOINT, 443 pipe->wire->address, pipe->endpoint_no, pipe->direction); 444 } 445 395 446 /** 396 447 * @}
Note:
See TracChangeset
for help on using the changeset viewer.
