Changeset 98e15b1 in mainline
- Timestamp:
- 2011-05-29T21:58:31Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 95067954, d600874
- Parents:
- 6ab7f3e9 (diff), bd7acda (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
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/ehci-hcd/hc_iface.c
r6ab7f3e9 r98e15b1 48 48 methodname, __FILE__, __LINE__) 49 49 50 /** Reserve default address.51 *52 * This function may block the caller.53 *54 * @param[in] fun Device function the action was invoked on.55 * @param[in] speed Speed of the device for which the default address is56 * reserved.57 * @return Error code.58 */59 static int reserve_default_address(ddf_fun_t *fun, usb_speed_t speed)60 {61 UNSUPPORTED("reserve_default_address");62 63 return ENOTSUP;64 }65 66 /** Release default address.67 *68 * @param[in] fun Device function the action was invoked on.69 * @return Error code.70 */71 static int release_default_address(ddf_fun_t *fun)72 {73 UNSUPPORTED("release_default_address");74 75 return ENOTSUP;76 }77 78 50 /** Found free USB address. 79 51 * … … 332 304 /** Host controller interface implementation for EHCI. */ 333 305 usbhc_iface_t ehci_hc_iface = { 334 .reserve_default_address = reserve_default_address,335 .release_default_address = release_default_address,336 306 .request_address = request_address, 337 307 .bind_address = bind_address, -
uspace/drv/usbhub/usbhub.c
r6ab7f3e9 r98e15b1 515 515 fibril_mutex_unlock(&hub->pending_ops_mutex); 516 516 517 usb_device_destroy(hub->usb_device); 518 517 519 free(hub->ports); 518 520 free(hub); -
uspace/drv/usbmouse/init.c
r6ab7f3e9 r98e15b1 39 39 #include <usb/hid/hid.h> 40 40 #include <usb/dev/request.h> 41 #include <usb/hid/request.h> 41 42 #include <errno.h> 42 43 … … 126 127 127 128 /* Set the boot protocol. */ 128 rc = usb_control_request_set(&dev->ctrl_pipe, 129 USB_REQUEST_TYPE_CLASS, USB_REQUEST_RECIPIENT_INTERFACE, 130 USB_HIDREQ_SET_PROTOCOL, USB_HID_PROTOCOL_BOOT, dev->interface_no, 131 NULL, 0); 129 rc = usbhid_req_set_protocol(&dev->ctrl_pipe, dev->interface_no, 130 USB_HID_PROTOCOL_BOOT); 132 131 if (rc != EOK) { 133 132 goto leave; -
uspace/drv/usbmouse/mouse.c
r6ab7f3e9 r98e15b1 117 117 async_hangup(mouse->console_phone); 118 118 mouse->console_phone = -1; 119 120 usb_device_destroy(dev); 119 121 } 120 122 -
uspace/lib/drv/include/usbhc_iface.h
r6ab7f3e9 r98e15b1 212 212 /** USB host controller communication interface. */ 213 213 typedef struct { 214 int (*reserve_default_address)(ddf_fun_t *, usb_speed_t);215 int (*release_default_address)(ddf_fun_t *);216 214 int (*request_address)(ddf_fun_t *, usb_speed_t, usb_address_t *); 217 215 int (*bind_address)(ddf_fun_t *, usb_address_t, devman_handle_t); -
uspace/lib/usbdev/include/usb/dev/driver.h
r6ab7f3e9 r98e15b1 168 168 int usb_device_destroy_pipes(ddf_dev_t *, usb_endpoint_mapping_t *, size_t); 169 169 int usb_device_create(ddf_dev_t *, usb_endpoint_description_t **, usb_device_t **, const char **); 170 void usb_device_destroy(usb_device_t *); 170 171 171 172 size_t usb_interface_count_alternates(uint8_t *, size_t, uint8_t); -
uspace/lib/usbdev/src/devdrv.c
r6ab7f3e9 r98e15b1 533 533 } 534 534 535 /** Destroy instance of a USB device. 536 * 537 * @param dev Device to be destroyed. 538 */ 539 void usb_device_destroy(usb_device_t *dev) 540 { 541 if (dev == NULL) { 542 return; 543 } 544 545 /* Ignore errors and hope for the best. */ 546 usb_device_destroy_pipes(dev->ddf_dev, dev->pipes, dev->pipes_count); 547 if (dev->descriptors.configuration != NULL) { 548 free(dev->descriptors.configuration); 549 } 550 551 if (dev->alternate_interfaces != NULL) { 552 if (dev->alternate_interfaces->alternatives != NULL) { 553 free(dev->alternate_interfaces->alternatives); 554 } 555 free(dev->alternate_interfaces); 556 } 557 558 free(dev); 559 } 560 535 561 /** 536 562 * @} -
uspace/srv/hid/console/console.c
r6ab7f3e9 r98e15b1 57 57 #include <io/style.h> 58 58 #include <io/screenbuffer.h> 59 #include <inttypes.h> 59 60 60 61 #include "console.h" … … 67 68 /** Interval for checking for new keyboard (1/4s). */ 68 69 #define HOTPLUG_WATCH_INTERVAL (1000 * 250) 70 71 /* Kernel defines 32 but does not export it. */ 72 #define MAX_IPC_OUTGOING_PHONES 128 73 /** To allow proper phone closing. */ 74 static ipc_callid_t driver_phones[MAX_IPC_OUTGOING_PHONES] = { 0 }; 69 75 70 76 /** Phone to the keyboard driver. */ … … 90 96 contents and related settings. */ 91 97 } console_t; 98 99 92 100 93 101 /** Array of data for virtual consoles */ … … 401 409 } 402 410 411 static void close_driver_phone(ipc_callid_t hash) 412 { 413 int i; 414 for (i = 0; i < MAX_IPC_OUTGOING_PHONES; i++) { 415 if (driver_phones[i] == hash) { 416 printf("Device %" PRIxn " gone.\n", hash); 417 driver_phones[i] = 0; 418 async_hangup(i); 419 return; 420 } 421 } 422 } 423 403 424 /** Handler for keyboard */ 404 425 static void keyboard_events(ipc_callid_t iid, ipc_call_t *icall) … … 415 436 case IPC_M_PHONE_HUNGUP: 416 437 /* TODO: Handle hangup */ 438 close_driver_phone(iid); 417 439 return; 418 440 case KBD_EVENT: … … 458 480 case IPC_M_PHONE_HUNGUP: 459 481 /* TODO: Handle hangup */ 482 close_driver_phone(iid); 460 483 return; 461 484 case MEVENT_BUTTON: … … 715 738 } 716 739 740 static int async_connect_to_me_hack(int phone, sysarg_t arg1, sysarg_t arg2, 741 sysarg_t arg3, async_client_conn_t client_receiver, ipc_callid_t *hash) 742 { 743 sysarg_t task_hash; 744 sysarg_t phone_hash; 745 int rc = async_req_3_5(phone, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3, 746 NULL, NULL, NULL, &task_hash, &phone_hash); 747 if (rc != EOK) 748 return rc; 749 750 if (client_receiver != NULL) 751 async_new_connection(task_hash, phone_hash, phone_hash, NULL, 752 client_receiver); 753 754 if (hash != NULL) { 755 *hash = phone_hash; 756 } 757 758 return EOK; 759 } 760 717 761 static int connect_keyboard_or_mouse(const char *devname, 718 762 async_client_conn_t handler, const char *path) … … 729 773 } 730 774 731 int rc = async_connect_to_me(phone, SERVICE_CONSOLE, 0, 0, handler); 775 ipc_callid_t hash; 776 int rc = async_connect_to_me_hack(phone, SERVICE_CONSOLE, 0, phone, 777 handler, &hash); 732 778 if (rc != EOK) { 733 779 printf(NAME ": " \ … … 737 783 } 738 784 739 printf(NAME ": found %s \"%s\".\n", devname, path); 785 driver_phones[phone] = hash; 786 787 printf(NAME ": found %s \"%s\" (%" PRIxn ").\n", devname, path, hash); 740 788 741 789 return phone;
Note:
See TracChangeset
for help on using the changeset viewer.