Changeset 78f01ff9 in mainline for uspace/lib/usb/src/hcdrv.c
- Timestamp:
- 2010-11-28T22:25:01Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 4570779, c39544a
- Parents:
- 36bcf84f (diff), 1f43c8f (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. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usb/src/hcdrv.c
r36bcf84f r78f01ff9 54 54 }; 55 55 56 int usb_add_hc_device(device_t *dev) 57 { 56 static usb_hc_device_t *usb_hc_device_create(device_t *dev) { 58 57 usb_hc_device_t *hc_dev = malloc(sizeof (usb_hc_device_t)); 58 59 59 list_initialize(&hc_dev->link); 60 list_initialize(&hc_dev->hubs); 61 list_initialize(&hc_dev->attached_devices); 60 62 hc_dev->transfer_ops = NULL; 61 63 … … 63 65 dev->ops = &usb_device_ops; 64 66 hc_dev->generic->driver_data = hc_dev; 67 68 return hc_dev; 69 } 70 71 int usb_add_hc_device(device_t *dev) 72 { 73 usb_hc_device_t *hc_dev = usb_hc_device_create(dev); 65 74 66 75 int rc = hc_driver->add_hc(hc_dev); … … 78 87 list_append(&hc_dev->link, &hc_list); 79 88 80 //add keyboard81 /// @TODO this is not correct code82 83 89 /* 84 * Announce presence of child device. 90 * FIXME: the following is a workaround to force loading of USB 91 * keyboard driver. 92 * Will be removed as soon as the hub driver is completed and 93 * can detect connected devices. 85 94 */ 86 device_t *kbd = NULL; 87 match_id_t *match_id = NULL; 88 89 kbd = create_device(); 90 if (kbd == NULL) { 91 printf("ERROR: enomem\n"); 92 } 93 kbd->name = USB_KBD_DEVICE_NAME; 94 95 match_id = create_match_id(); 96 if (match_id == NULL) { 97 printf("ERROR: enomem\n"); 95 printf("%s: trying to add USB HID child device...\n", hc_driver->name); 96 rc = usb_hc_add_child_device(dev, USB_KBD_DEVICE_NAME, "usb&hid", false); 97 if (rc != EOK) { 98 printf("%s: adding USB HID child failed...\n", hc_driver->name); 98 99 } 99 100 100 char *id;101 rc = asprintf(&id, USB_KBD_DEVICE_NAME);102 if (rc <= 0) {103 printf("ERROR: enomem\n");104 return rc;105 }106 107 match_id->id = id;108 match_id->score = 30;109 110 add_match_id(&kbd->match_ids, match_id);111 112 rc = child_device_register(kbd, dev);113 if (rc != EOK) {114 printf("ERROR: cannot register kbd\n");115 return rc;116 }117 118 printf("%s: registered root hub\n", dev->name);119 101 return EOK; 120 102 }
Note:
See TracChangeset
for help on using the changeset viewer.