Changeset 6ab7f3e9 in mainline
- Timestamp:
- 2011-05-29T21:53:34Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 98e15b1
- Parents:
- 5c1a65e
- Location:
- uspace/drv
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/ohci/root_hub.c
r5c1a65e r6ab7f3e9 117 117 */ 118 118 static const uint32_t hub_clear_feature_by_writing_one_mask = 119 RHS_CLEAR_PORT_POWER;119 RHS_CLEAR_PORT_POWER; 120 120 121 121 /** … … 412 412 request->transfered_size = 4; 413 413 uint32_t data = instance->registers->rh_port_status[port - 1]; 414 memcpy(request->data_buffer, &data,4);414 memcpy(request->data_buffer, &data, 4); 415 415 #if 0 416 416 int i; … … 445 445 uint32_t data = mask & instance->registers->rh_status; 446 446 //uint32_buffer[0] = mask & instance->registers->rh_status; 447 memcpy(request->data_buffer, &data,4);447 memcpy(request->data_buffer, &data, 4); 448 448 449 449 return EOK; … … 499 499 | (1 << (USB_HUB_FEATURE_C_HUB_OVER_CURRENT + 16)); 500 500 bzero(bitmap, instance->interrupt_mask_size); 501 if ((instance->registers->rh_status & mask) != 0) {501 if ((instance->registers->rh_status & mask) != 0) { 502 502 bitmap[0] = 1; 503 503 } … … 925 925 * @return 926 926 */ 927 static int process_interrupt_mask_in_instance(rh_t *instance, usb_transfer_batch_t * request) { 927 static int process_interrupt_mask_in_instance(rh_t *instance, 928 usb_transfer_batch_t * request) { 928 929 memcpy(request->data_buffer, instance->interrupt_buffer, 929 930 instance->interrupt_mask_size); … … 945 946 * @return 946 947 */ 947 static bool is_zeros(void * 948 static bool is_zeros(void *buffer, size_t size) { 948 949 if (!buffer) return true; 949 950 if (!size) return true; -
uspace/drv/uhci-rhd/port.h
r5c1a65e r6ab7f3e9 55 55 56 56 /** UHCI port structure */ 57 typedef struct uhci_port 58 { 57 typedef struct uhci_port { 59 58 const char *id_string; 60 59 port_status_t *address; … … 68 67 69 68 int uhci_port_init( 70 uhci_port_t *port, port_status_t *address, unsigned number,71 unsigned usec, ddf_dev_t *rh);69 uhci_port_t *port, port_status_t *address, unsigned number, 70 unsigned usec, ddf_dev_t *rh); 72 71 73 72 void uhci_port_fini(uhci_port_t *port); -
uspace/drv/usbhub/port_status.h
r5c1a65e r6ab7f3e9 64 64 */ 65 65 static inline void usb_hub_set_port_status_request( 66 usb_device_request_setup_packet_t * request, uint16_t port 67 ) { 66 usb_device_request_setup_packet_t *request, uint16_t port) { 68 67 request->index = port; 69 68 request->request_type = USB_HUB_REQ_TYPE_GET_PORT_STATUS; … … 79 78 */ 80 79 static inline void usb_hub_set_hub_status_request( 81 usb_device_request_setup_packet_t * request 82 ) { 80 usb_device_request_setup_packet_t *request) { 83 81 request->index = 0; 84 82 request->request_type = USB_HUB_REQ_TYPE_GET_HUB_STATUS; … … 95 93 static inline usb_device_request_setup_packet_t * 96 94 usb_hub_create_port_status_request(uint16_t port) { 97 usb_device_request_setup_packet_t * 98 malloc(sizeof(usb_device_request_setup_packet_t));95 usb_device_request_setup_packet_t *result = 96 malloc(sizeof (usb_device_request_setup_packet_t)); 99 97 usb_hub_set_port_status_request(result, port); 100 98 return result; … … 108 106 */ 109 107 static inline void usb_hub_set_enable_port_feature_request( 110 usb_device_request_setup_packet_t * request, uint16_t port, 111 uint16_t feature_selector 112 ) { 108 usb_device_request_setup_packet_t *request, uint16_t port, 109 uint16_t feature_selector) { 113 110 request->index = port; 114 111 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 125 122 */ 126 123 static inline void usb_hub_set_disable_port_feature_request( 127 usb_device_request_setup_packet_t *request, uint16_t port,128 129 124 usb_device_request_setup_packet_t *request, uint16_t port, 125 uint16_t feature_selector 126 ) { 130 127 request->index = port; 131 128 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 141 138 */ 142 139 static inline void usb_hub_set_enable_port_request( 143 usb_device_request_setup_packet_t *request, uint16_t port144 140 usb_device_request_setup_packet_t *request, uint16_t port 141 ) { 145 142 request->index = port; 146 143 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 157 154 static inline usb_device_request_setup_packet_t * 158 155 usb_hub_create_enable_port_request(uint16_t port) { 159 usb_device_request_setup_packet_t * 160 malloc(sizeof(usb_device_request_setup_packet_t));156 usb_device_request_setup_packet_t *result = 157 malloc(sizeof (usb_device_request_setup_packet_t)); 161 158 usb_hub_set_enable_port_request(result, port); 162 159 return result; … … 169 166 */ 170 167 static inline void usb_hub_set_disable_port_request( 171 usb_device_request_setup_packet_t *request, uint16_t port172 168 usb_device_request_setup_packet_t *request, uint16_t port 169 ) { 173 170 request->index = port; 174 171 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 185 182 static inline usb_device_request_setup_packet_t * 186 183 usb_hub_create_disable_port_request(uint16_t port) { 187 usb_device_request_setup_packet_t * 188 malloc(sizeof(usb_device_request_setup_packet_t));184 usb_device_request_setup_packet_t *result = 185 malloc(sizeof (usb_device_request_setup_packet_t)); 189 186 usb_hub_set_disable_port_request(result, port); 190 187 return result; … … 197 194 */ 198 195 static inline void usb_hub_set_reset_port_request( 199 usb_device_request_setup_packet_t *request, uint16_t port200 196 usb_device_request_setup_packet_t *request, uint16_t port 197 ) { 201 198 request->index = port; 202 199 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 213 210 static inline usb_device_request_setup_packet_t * 214 211 usb_hub_create_reset_port_request(uint16_t port) { 215 usb_device_request_setup_packet_t * 216 malloc(sizeof(usb_device_request_setup_packet_t));212 usb_device_request_setup_packet_t *result = 213 malloc(sizeof (usb_device_request_setup_packet_t)); 217 214 usb_hub_set_reset_port_request(result, port); 218 215 return result; … … 225 222 */ 226 223 static inline void usb_hub_set_power_port_request( 227 usb_device_request_setup_packet_t *request, uint16_t port228 224 usb_device_request_setup_packet_t *request, uint16_t port 225 ) { 229 226 request->index = port; 230 227 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 240 237 */ 241 238 static inline void usb_hub_unset_power_port_request( 242 usb_device_request_setup_packet_t *request, uint16_t port243 239 usb_device_request_setup_packet_t *request, uint16_t port 240 ) { 244 241 request->index = port; 245 242 request->request_type = USB_HUB_REQ_TYPE_SET_PORT_FEATURE; … … 257 254 */ 258 255 static inline bool usb_port_is_status(usb_port_status_t status, int idx) { 259 return (status &(1 << idx))!=0;256 return (status & (1 << idx)) != 0; 260 257 } 261 258 … … 268 265 */ 269 266 static inline void usb_port_status_set_bit( 270 267 usb_port_status_t * status, int idx, bool value) { 271 268 (*status) = value ? 272 273 269 ((*status) | (1 << (idx))) : 270 ((*status)&(~(1 << (idx)))); 274 271 } 275 272 … … 282 279 */ 283 280 static inline bool usb_hub_is_status(usb_hub_status_t status, int idx) { 284 return (status &(1 << idx))!=0;281 return (status & (1 << idx)) != 0; 285 282 } 286 283 … … 293 290 */ 294 291 static inline void usb_hub_status_set_bit( 295 usb_hub_status_t *status, int idx, bool value) {292 usb_hub_status_t *status, int idx, bool value) { 296 293 (*status) = value ? 297 ((*status) | (1 << (idx))) : 298 ((*status)&(~(1 << (idx)))); 299 } 300 301 302 #if 0 303 /** 304 * connection status geter for port status 305 * 306 * @param status 307 * @return true if there is something connected 308 */ 309 static inline bool usb_port_dev_connected(usb_port_status_t * status) { 310 return usb_port_get_bit(status, 0); 311 } 312 313 /** 314 * set device connected bit in port status 315 * 316 * @param status 317 * @param connected value of the bit 318 */ 319 static inline void usb_port_set_dev_connected(usb_port_status_t * status, bool connected) { 320 usb_port_set_bit(status, 0, connected); 321 } 322 323 //port enabled 324 325 /** 326 * port enabled getter for port status 327 * 328 * @param status 329 * @return true if the port is enabled 330 */ 331 static inline bool usb_port_enabled(usb_port_status_t * status) { 332 return usb_port_get_bit(status, 1); 333 } 334 335 /** 336 * set port enabled bit in port status 337 * 338 * @param status 339 * @param enabled value of the bit 340 */ 341 static inline void usb_port_set_enabled(usb_port_status_t * status, bool enabled) { 342 usb_port_set_bit(status, 1, enabled); 343 } 344 345 //port suspended 346 /** 347 * port suspended getter for port status 348 * 349 * @param status 350 * @return true if port is suspended 351 */ 352 static inline bool usb_port_suspended(usb_port_status_t * status) { 353 return usb_port_get_bit(status, 2); 354 } 355 356 /** 357 * set port suspended bit in port status 358 * 359 * @param status 360 * @param suspended value of the bit 361 */ 362 static inline void usb_port_set_suspended(usb_port_status_t * status, bool suspended) { 363 usb_port_set_bit(status, 2, suspended); 364 } 365 366 //over currect 367 /** 368 * over current condition indicator getter for port status 369 * 370 * @param status 371 * @return true if there is opver-current condition on the hub 372 */ 373 static inline bool usb_port_over_current(usb_port_status_t * status) { 374 return usb_port_get_bit(status, 3); 375 } 376 377 /** 378 * set over current indicator bit in port status 379 * 380 * @param status 381 * @param value value of the bit 382 */ 383 static inline void usb_port_set_over_current(usb_port_status_t * status, bool value) { 384 usb_port_set_bit(status, 3, value); 385 } 386 387 //port reset 388 /** 389 * port reset indicator getter for port status 390 * 391 * @param status 392 * @return true if port is reset 393 */ 394 static inline bool usb_port_reset(usb_port_status_t * status) { 395 return usb_port_get_bit(status, 4); 396 } 397 398 /** 399 * set port reset bit in port status 400 * 401 * @param status 402 * @param value value of the bit 403 */ 404 static inline void usb_port_set_reset(usb_port_status_t * status, bool value) { 405 usb_port_set_bit(status, 4, value); 406 } 407 408 //powered 409 /** 410 * power state getter for port status 411 * 412 * @param status 413 * @return true if port is powered 414 */ 415 static inline bool usb_port_powered(usb_port_status_t * status) { 416 return usb_port_get_bit(status, 8); 417 } 418 419 /** 420 * set port powered bit in port status 421 * 422 * @param status 423 * @param powered value of the bit 424 */ 425 static inline void usb_port_set_powered(usb_port_status_t * status, bool powered) { 426 usb_port_set_bit(status, 8, powered); 427 } 428 429 #endif 430 431 //low speed device attached 294 ((*status) | (1 << (idx))) : 295 ((*status)&(~(1 << (idx)))); 296 } 297 432 298 /** 433 299 * low speed device on the port indicator … … 446 312 * @param low_speed value of the bit 447 313 */ 448 static inline void usb_port_set_low_speed(usb_port_status_t * 314 static inline void usb_port_set_low_speed(usb_port_status_t *status, bool low_speed) { 449 315 usb_port_status_set_bit(status, 9, low_speed); 450 316 } 451 317 452 318 //high speed device attached 319 453 320 /** 454 321 * high speed device on the port indicator … … 467 334 * @param high_speed value of the bit 468 335 */ 469 static inline void usb_port_set_high_speed(usb_port_status_t * 336 static inline void usb_port_set_high_speed(usb_port_status_t *status, bool high_speed) { 470 337 usb_port_status_set_bit(status, 10, high_speed); 471 338 } … … 485 352 } 486 353 487 #if 0488 //connect change489 /**490 * port connect change indicator491 *492 * @param status493 * @return true if connection has changed494 */495 static inline bool usb_port_connect_change(usb_port_status_t * status) {496 return usb_port_get_bit(status, 16);497 }498 499 /**500 * set connection change bit in port status501 * @param status502 * @param change value of the bit503 */504 static inline void usb_port_set_connect_change(usb_port_status_t * status, bool change) {505 usb_port_set_bit(status, 16, change);506 }507 508 //port enable change509 /**510 * port enable change for port status511 *512 * @param status513 * @return true if the port has been enabled/disabled514 */515 static inline bool usb_port_enabled_change(usb_port_status_t * status) {516 return usb_port_get_bit(status, 17);517 }518 519 /**520 * set port enable change bit in port status521 *522 * @param status523 * @param change value of the bit524 */525 static inline void usb_port_set_enabled_change(usb_port_status_t * status, bool change) {526 usb_port_set_bit(status, 17, change);527 }528 529 //suspend change530 /**531 * port suspend change for port status532 *533 * @param status534 * @return ture if suspend status has changed535 */536 static inline bool usb_port_suspend_change(usb_port_status_t * status) {537 return usb_port_get_bit(status, 18);538 }539 540 /**541 * set port suspend change bit in port status542 *543 * @param status544 * @param change value of the bit545 */546 static inline void usb_port_set_suspend_change(usb_port_status_t * status, bool change) {547 usb_port_set_bit(status, 18, change);548 }549 550 //over current change551 /**552 * over current change indicator553 *554 * @param status555 * @return true if over-current condition on port has changed556 */557 static inline bool usb_port_overcurrent_change(usb_port_status_t * status) {558 return usb_port_get_bit(status, 19);559 }560 561 /**562 * set port over current change bit in port status563 *564 * @param status565 * @param change value of the bit566 */567 static inline void usb_port_set_overcurrent_change(usb_port_status_t * status, bool change) {568 usb_port_set_bit(status, 19, change);569 }570 571 //reset change572 /**573 * port reset change indicator574 * @param status575 * @return true if port has been reset576 */577 static inline bool usb_port_reset_completed(usb_port_status_t * status) {578 return usb_port_get_bit(status, 20);579 }580 581 /**582 * set port reset completed bit in port status583 *584 * @param status585 * @param change value of the bit586 */587 static inline void usb_port_set_reset_completed(usb_port_status_t * status, bool completed) {588 usb_port_set_bit(status, 20, completed);589 }590 591 //local power status592 /**593 * local power lost indicator for hub status594 *595 * @param status596 * @return true if hub is not powered597 */598 static inline bool usb_hub_local_power_lost(usb_hub_status_t * status) {599 return usb_hub_get_bit(status, 0);600 }601 602 /**603 * set hub power lost bit in hub status604 *605 * @param status606 * @param change value of the bit607 */608 static inline void usb_hub_set_local_power_lost(usb_port_status_t * status,609 bool power_lost) {610 usb_hub_set_bit(status, 0, power_lost);611 }612 613 //over current ocndition614 /**615 * hub over-current indicator616 *617 * @param status618 * @return true if over-current condition occurred on hub619 */620 static inline bool usb_hub_over_current(usb_hub_status_t * status) {621 return usb_hub_get_bit(status, 1);622 }623 624 /**625 * set hub over current bit in hub status626 *627 * @param status628 * @param change value of the bit629 */630 static inline void usb_hub_set_over_current(usb_port_status_t * status,631 bool over_current) {632 usb_hub_set_bit(status, 1, over_current);633 }634 635 //local power change636 /**637 * hub power change indicator638 *639 * @param status640 * @return true if local power status has been changed - power has been641 * dropped or re-established642 */643 static inline bool usb_hub_local_power_change(usb_hub_status_t * status) {644 return usb_hub_get_bit(status, 16);645 }646 647 /**648 * set hub power change bit in hub status649 *650 * @param status651 * @param change value of the bit652 */653 static inline void usb_hub_set_local_power_change(usb_port_status_t * status,654 bool change) {655 usb_hub_set_bit(status, 16, change);656 }657 658 //local power status659 /**660 * hub over-current condition change indicator661 *662 * @param status663 * @return true if over-current condition has changed664 */665 static inline bool usb_hub_over_current_change(usb_hub_status_t * status) {666 return usb_hub_get_bit(status, 17);667 }668 669 /**670 * set hub over current change bit in hub status671 *672 * @param status673 * @param change value of the bit674 */675 static inline void usb_hub_set_over_current_change(usb_port_status_t * status,676 bool change) {677 usb_hub_set_bit(status, 17, change);678 }679 #endif680 354 681 355 -
uspace/drv/usbhub/ports.h
r5c1a65e r6ab7f3e9 70 70 71 71 72 void usb_hub_process_interrupt(usb_hub_info_t * 72 void usb_hub_process_interrupt(usb_hub_info_t *hub, 73 73 uint16_t port); 74 74 -
uspace/drv/usbhub/usbhub.c
r5c1a65e r6ab7f3e9 73 73 74 74 static void usb_hub_polling_terminated_callback(usb_device_t *device, 75 bool was_error, void * 75 bool was_error, void *data); 76 76 77 77 -
uspace/drv/usbhub/usbhub.h
r5c1a65e r6ab7f3e9 51 51 #include "ports.h" 52 52 53 54 55 53 /** Information about attached hub. */ 56 struct usb_hub_info_t {54 struct usb_hub_info_t { 57 55 /** Number of ports. */ 58 56 size_t port_count; … … 106 104 }; 107 105 108 //int usb_hub_control_loop(void * hub_info_param); 109 110 int usb_hub_add_device(usb_device_t * usb_dev); 106 int usb_hub_add_device(usb_device_t *usb_dev); 111 107 112 108 bool hub_port_changes_callback(usb_device_t *dev, -
uspace/drv/usbhub/usbhub_private.h
r5c1a65e r6ab7f3e9 65 65 */ 66 66 static inline void usb_hub_set_descriptor_request( 67 usb_device_request_setup_packet_t * request68 ){67 usb_device_request_setup_packet_t * request 68 ) { 69 69 request->index = 0; 70 70 request->request_type = USB_HUB_REQ_TYPE_GET_DESCRIPTOR; … … 87 87 int port_index, 88 88 usb_hub_class_feature_t feature) { 89 89 90 90 usb_device_request_setup_packet_t clear_request = { 91 91 .request_type = USB_HUB_REQ_TYPE_CLEAR_PORT_FEATURE, … … 96 96 clear_request.value = feature; 97 97 return usb_pipe_control_write(pipe, &clear_request, 98 sizeof (clear_request), NULL, 0);98 sizeof (clear_request), NULL, 0); 99 99 } 100 100 … … 120 120 clear_request.value = feature; 121 121 return usb_pipe_control_write(pipe, &clear_request, 122 sizeof (clear_request), NULL, 0);122 sizeof (clear_request), NULL, 0); 123 123 } 124 125 124 126 125 /** … … 142 141 clear_request.value = feature; 143 142 return usb_pipe_control_write(pipe, &clear_request, 144 sizeof (clear_request), NULL, 0);143 sizeof (clear_request), NULL, 0); 145 144 } 146 145 … … 163 162 clear_request.value = feature; 164 163 return usb_pipe_control_write(pipe, &clear_request, 165 sizeof (clear_request), NULL, 0);164 sizeof (clear_request), NULL, 0); 166 165 } 167 166 -
uspace/drv/usbhub/utils.c
r5c1a65e r6ab7f3e9 62 62 * @return newly created serializd descriptor pointer 63 63 */ 64 void * usb_create_serialized_hub_descriptor(usb_hub_descriptor_t * 64 void * usb_create_serialized_hub_descriptor(usb_hub_descriptor_t *descriptor) { 65 65 //base size 66 66 size_t size = 7; 67 67 //variable size according to port count 68 size_t var_size = (descriptor->ports_count +7)/8;68 size_t var_size = (descriptor->ports_count + 7) / 8; 69 69 size += 2 * var_size; 70 70 uint8_t * result = malloc(size); 71 71 //size 72 if (result)73 usb_serialize_hub_descriptor(descriptor, result);72 if (result) 73 usb_serialize_hub_descriptor(descriptor, result); 74 74 return result; 75 75 } … … 82 82 * @param serialized_descriptor 83 83 */ 84 void usb_serialize_hub_descriptor(usb_hub_descriptor_t * 84 void usb_serialize_hub_descriptor(usb_hub_descriptor_t *descriptor, 85 85 void * serialized_descriptor) { 86 86 //base size … … 88 88 size_t size = 7; 89 89 //variable size according to port count 90 size_t var_size = (descriptor->ports_count +7)/8;90 size_t var_size = (descriptor->ports_count + 7) / 8; 91 91 size += 2 * var_size; 92 92 //size … … 110 110 } 111 111 112 113 112 /** 114 113 * create deserialized desriptor structure out of serialized descriptor … … 121 120 */ 122 121 usb_hub_descriptor_t * usb_create_deserialized_hub_desriptor( 123 void *serialized_descriptor) {122 void *serialized_descriptor) { 124 123 uint8_t * sdescriptor = serialized_descriptor; 125 124 … … 130 129 } 131 130 132 usb_hub_descriptor_t * result = malloc(sizeof (usb_hub_descriptor_t));133 if (result)134 usb_deserialize_hub_desriptor(serialized_descriptor, result);131 usb_hub_descriptor_t * result = malloc(sizeof (usb_hub_descriptor_t)); 132 if (result) 133 usb_deserialize_hub_desriptor(serialized_descriptor, result); 135 134 return result; 136 135 } … … 144 143 */ 145 144 void usb_deserialize_hub_desriptor( 146 void * serialized_descriptor, usb_hub_descriptor_t *descriptor) {145 void * serialized_descriptor, usb_hub_descriptor_t *descriptor) { 147 146 uint8_t * sdescriptor = serialized_descriptor; 148 147 descriptor->ports_count = sdescriptor[2]; … … 151 150 descriptor->pwr_on_2_good_time = sdescriptor[5]; 152 151 descriptor->current_requirement = sdescriptor[6]; 153 size_t var_size = (descriptor->ports_count +7) / 8;152 size_t var_size = (descriptor->ports_count + 7) / 8; 154 153 //descriptor->devices_removable = (uint8_t*) malloc(var_size); 155 154
Note:
See TracChangeset
for help on using the changeset viewer.