Changeset 84a04dd in mainline for uspace/lib/usb/src
- Timestamp:
- 2011-04-18T20:21:58Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 44b1674, c7d19d84, da1dd48, e3f1987
- Parents:
- 8595577b (diff), 4125b7d (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/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/devdrv.c
r8595577b r84a04dd 236 236 237 237 /* It is worth to start a long transfer. */ 238 rc = usb_pipe_start_long_transfer(ctrl_pipe); 239 if (rc != EOK) { 240 return rc; 241 } 238 usb_pipe_start_long_transfer(ctrl_pipe); 242 239 243 240 /* Get the device descriptor. */ -
uspace/lib/usb/src/devpoll.c
r8595577b r84a04dd 78 78 usb_endpoint_mapping_t *mapping 79 79 = &polling_data->dev->pipes[polling_data->pipe_index]; 80 usb_log_debug("Poll 0x%x: started polling of `%s' - " \80 usb_log_debug("Poll%p: started polling of `%s' - " \ 81 81 "interface %d (%s,%d,%d), %zuB/%zu.\n", 82 82 polling_data, … … 100 100 if (rc == EOK) { 101 101 usb_log_debug( 102 "Poll 0x%x: received: '%s' (%zuB).\n",102 "Poll%p: received: '%s' (%zuB).\n", 103 103 polling_data, 104 104 usb_debug_str_buffer(polling_data->buffer, … … 107 107 } else { 108 108 usb_log_debug( 109 "Poll 0x%x: polling failed: %s.\n",109 "Poll%p: polling failed: %s.\n", 110 110 polling_data, str_error(rc)); 111 111 } -
uspace/lib/usb/src/hidparser.c
r8595577b r84a04dd 167 167 168 168 usb_log_debug2( 169 "i(% u) data(%X) value(%X): TAG %u, class %u, size %u - ", i,169 "i(%zu) data(%X) value(%X): TAG %d, class %u, size %u - ", i, 170 170 data[i], usb_hid_report_tag_data_int32(data+i+1,item_size), 171 171 tag, class, item_size); … … 576 576 report_item = list_get_instance(item, usb_hid_report_item_t, link); 577 577 578 usb_log_debug("\tOFFSET: % X\n", report_item->offset);578 usb_log_debug("\tOFFSET: %zX\n", report_item->offset); 579 579 usb_log_debug("\tCOUNT: %X\n", report_item->count); 580 580 usb_log_debug("\tSIZE: %X\n", report_item->size); -
uspace/lib/usb/src/hidreport.c
r8595577b r84a04dd 109 109 110 110 if (*d != sizeof(usb_standard_hid_descriptor_t)) { 111 usb_log_error("HID descriptor has s wrong size (%u, expected %u"111 usb_log_error("HID descriptor has wrong size (%u, expected %zu" 112 112 ")\n", *d, sizeof(usb_standard_hid_descriptor_t)); 113 113 return EINVAL; … … 149 149 free(*report_desc); 150 150 *report_desc = NULL; 151 usb_log_error("Report descriptor has wrong size (% u, expected "151 usb_log_error("Report descriptor has wrong size (%zu, expected " 152 152 "%u)\n", actual_size, length); 153 153 return EINVAL; -
uspace/lib/usb/src/pipepriv.c
r8595577b r84a04dd 77 77 * 78 78 * @param pipe The USB pipe. 79 * @param hide_failure Whether to hide failure when adding reference 80 * (use soft refcount). 79 81 * @return Error code. 80 82 * @retval EOK Currently always. 81 83 */ 82 int pipe_add_ref(usb_pipe_t *pipe )84 int pipe_add_ref(usb_pipe_t *pipe, bool hide_failure) 83 85 { 84 another_try:85 86 pipe_acquire(pipe); 86 87 … … 89 90 int phone = devman_device_connect(pipe->wire->hc_handle, 0); 90 91 if (phone < 0) { 91 // TODO: treat some error as non-recoverable 92 // and return error from here 92 if (hide_failure) { 93 pipe->refcount_soft++; 94 phone = EOK; 95 } 93 96 pipe_release(pipe); 94 goto another_try;97 return phone; 95 98 } 96 99 /* … … 114 117 { 115 118 pipe_acquire(pipe); 119 if (pipe->refcount_soft > 0) { 120 pipe->refcount_soft--; 121 pipe_release(pipe); 122 return; 123 } 116 124 assert(pipe->refcount > 0); 117 125 pipe->refcount--; -
uspace/lib/usb/src/pipepriv.h
r8595577b r84a04dd 37 37 38 38 #include <usb/pipes.h> 39 #include <bool.h> 39 40 40 41 void pipe_acquire(usb_pipe_t *); … … 44 45 void pipe_end_transaction(usb_pipe_t *); 45 46 46 int pipe_add_ref(usb_pipe_t * );47 int pipe_add_ref(usb_pipe_t *, bool); 47 48 void pipe_drop_ref(usb_pipe_t *); 48 49 -
uspace/lib/usb/src/pipes.c
r8595577b r84a04dd 229 229 } 230 230 231 232 /** Start a session on the endpoint pipe.233 *234 * A session is something inside what any communication occurs.235 * It is expected that sessions would be started right before the transfer236 * and ended - see usb_pipe_end_session() - after the last237 * transfer.238 * The reason for this is that session actually opens some communication239 * channel to the host controller (or to the physical hardware if you240 * wish) and thus it involves acquiring kernel resources.241 * Since they are limited, sessions shall not be longer than strictly242 * necessary.243 *244 * @deprecated245 * Obsoleted with introduction of usb_pipe_start_long_transfer246 *247 * @param pipe Endpoint pipe to start the session on.248 * @return Error code.249 */250 int usb_pipe_start_session(usb_pipe_t *pipe)251 {252 usb_log_warning("usb_pipe_start_session() was deprecated.\n");253 return EOK;254 }255 256 257 /** Ends a session on the endpoint pipe.258 *259 * @deprecated260 * Obsoleted with introduction of usb_pipe_end_long_transfer261 *262 * @see usb_pipe_start_session263 *264 * @param pipe Endpoint pipe to end the session on.265 * @return Error code.266 */267 int usb_pipe_end_session(usb_pipe_t *pipe)268 {269 usb_log_warning("usb_pipe_end_session() was deprecated.\n");270 return EOK;271 }272 273 /** Tell whether a session is started (open) on the endpoint pipe.274 *275 * The expected usage of this function is in assertions for some276 * nested functions.277 *278 * @param pipe Endpoint pipe in question.279 * @return Whether @p pipe has opened a session.280 */281 bool usb_pipe_is_session_started(usb_pipe_t *pipe)282 {283 pipe_acquire(pipe);284 bool started = pipe->refcount > 0;285 pipe_release(pipe);286 return started;287 }288 289 231 /** Prepare pipe for a long transfer. 290 232 * … … 297 239 * @return Error code. 298 240 */ 299 intusb_pipe_start_long_transfer(usb_pipe_t *pipe)300 { 301 return pipe_add_ref(pipe);241 void usb_pipe_start_long_transfer(usb_pipe_t *pipe) 242 { 243 (void) pipe_add_ref(pipe, true); 302 244 } 303 245 -
uspace/lib/usb/src/pipesinit.c
r8595577b r84a04dd 365 365 pipe->direction = direction; 366 366 pipe->refcount = 0; 367 pipe->refcount_soft = 0; 367 368 pipe->auto_reset_halt = false; 368 369 … … 419 420 int rc; 420 421 421 rc = usb_pipe_start_long_transfer(pipe); 422 if (rc != EOK) { 423 return rc; 424 } 425 422 usb_pipe_start_long_transfer(pipe); 426 423 427 424 uint8_t dev_descr_start[CTRL_PIPE_MIN_PACKET_SIZE]; -
uspace/lib/usb/src/pipesio.c
r8595577b r84a04dd 173 173 174 174 int rc; 175 rc = pipe_add_ref(pipe );175 rc = pipe_add_ref(pipe, false); 176 176 if (rc != EOK) { 177 177 return rc; … … 296 296 int rc; 297 297 298 rc = pipe_add_ref(pipe );298 rc = pipe_add_ref(pipe, false); 299 299 if (rc != EOK) { 300 300 return rc; … … 447 447 int rc; 448 448 449 rc = pipe_add_ref(pipe );449 rc = pipe_add_ref(pipe, false); 450 450 if (rc != EOK) { 451 451 return rc; … … 579 579 int rc; 580 580 581 rc = pipe_add_ref(pipe );581 rc = pipe_add_ref(pipe, false); 582 582 if (rc != EOK) { 583 583 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.