Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/bus/usb/uhci/main.c

    r0f6b50f r53a309e  
    4949#define NAME "uhci"
    5050
    51 static int uhci_driver_init(hcd_t *, const hw_res_list_parsed_t *, ddf_dev_t *);
    52 static int uhci_driver_start(hcd_t *, bool);
     51static int uhci_driver_init(hcd_t *, const hw_res_list_parsed_t *, bool);
    5352static void uhci_driver_fini(hcd_t *);
    54 static int disable_legacy(hcd_t *, ddf_dev_t *);
     53static int disable_legacy(ddf_dev_t *);
    5554
    5655static const ddf_hc_driver_t uhci_hc_driver = {
    5756        .claim = disable_legacy,
     57        .hc_speed = USB_SPEED_FULL,
    5858        .irq_code_gen = uhci_hc_gen_irq_code,
    5959        .init = uhci_driver_init,
    60         .start = uhci_driver_start,
    61         .setup_root_hub = hcd_setup_virtual_root_hub,
    6260        .fini = uhci_driver_fini,
    6361        .name = "UHCI",
     
    6967};
    7068
    71 static int uhci_driver_init(hcd_t *hcd, const hw_res_list_parsed_t *res, ddf_dev_t *device)
     69static int uhci_driver_init(hcd_t *hcd, const hw_res_list_parsed_t *res, bool irq)
    7270{
    73         int err;
    74 
    7571        assert(hcd);
    7672        assert(hcd_get_driver_data(hcd) == NULL);
     
    8076                return ENOMEM;
    8177
    82         if ((err = hc_init(instance, res)) != EOK)
    83                 goto err;
    84 
    85         hcd_set_implementation(hcd, instance, &uhci_hc_driver.ops, &instance->bus.base);
    86 
    87         return EOK;
    88 
    89 err:
    90         free(instance);
    91         return err;
    92 }
    93 
    94 static int uhci_driver_start(hcd_t *hcd, bool interrupts)
    95 {
    96         assert(hcd);
    97         hc_t *hc = hcd_get_driver_data(hcd);
    98 
    99         hc->hw_interrupts = interrupts;
    100         hc_start(hc);
    101         return EOK;
     78        const int ret = hc_init(instance, res, irq);
     79        if (ret == EOK) {
     80                hcd_set_implementation(hcd, instance, &uhci_hc_driver.ops);
     81        } else {
     82                free(instance);
     83        }
     84        return ret;
    10285}
    10386
     
    10992                hc_fini(hc);
    11093
    111         hcd_set_implementation(hcd, NULL, NULL, NULL);
     94        hcd_set_implementation(hcd, NULL, NULL);
    11295        free(hc);
    11396}
     
    118101 * @return Error code.
    119102 */
    120 static int disable_legacy(hcd_t *hcd, ddf_dev_t *device)
     103static int disable_legacy(ddf_dev_t *device)
    121104{
    122105        assert(device);
Note: See TracChangeset for help on using the changeset viewer.