Changeset 78f01ff9 in mainline for uspace/lib/usb/src/hcdrv.c


Ignore:
Timestamp:
2010-11-28T22:25:01Z (15 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
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.
Message:

Merge with vojtechhorky/

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usb/src/hcdrv.c

    r36bcf84f r78f01ff9  
    5454};
    5555
    56 int usb_add_hc_device(device_t *dev)
    57 {
     56static usb_hc_device_t *usb_hc_device_create(device_t *dev) {
    5857        usb_hc_device_t *hc_dev = malloc(sizeof (usb_hc_device_t));
     58
    5959        list_initialize(&hc_dev->link);
     60        list_initialize(&hc_dev->hubs);
     61        list_initialize(&hc_dev->attached_devices);
    6062        hc_dev->transfer_ops = NULL;
    6163
     
    6365        dev->ops = &usb_device_ops;
    6466        hc_dev->generic->driver_data = hc_dev;
     67
     68        return hc_dev;
     69}
     70
     71int usb_add_hc_device(device_t *dev)
     72{
     73        usb_hc_device_t *hc_dev = usb_hc_device_create(dev);
    6574
    6675        int rc = hc_driver->add_hc(hc_dev);
     
    7887        list_append(&hc_dev->link, &hc_list);
    7988
    80         //add keyboard
    81         /// @TODO this is not correct code
    82 
    8389        /*
    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.
    8594         */
    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);
    9899        }
    99100
    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);
    119101        return EOK;
    120102}
Note: See TracChangeset for help on using the changeset viewer.