Ignore:
File:
1 edited

Legend:

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

    re0a5d4c rb7fd2a0  
    11/*
    22 * Copyright (c) 2011 Vojtech Horky
    3  * Copyright (c) 2018 Ondrej Hlavaty
    43 * All rights reserved.
    54 *
     
    4140
    4241#include <usb/host/ddf_helpers.h>
    43 #include <usb/host/utility.h>
    4442
    4543#include <usb/debug.h>
     
    7169                return ret;
    7270        }
     71        vhc_init(vhc);
    7372        return EOK;
    7473}
    7574
     75hcd_ops_t vhc_hc_ops = {
     76        .schedule = vhc_schedule,
     77};
     78
    7679static errno_t vhc_dev_add(ddf_dev_t *dev)
    7780{
    78         /* Initialize generic structures */
    79         errno_t ret = hcd_ddf_setup_hc(dev, sizeof(vhc_data_t));
     81        /* Initialize virtual structure */
     82        ddf_fun_t *ctl_fun = NULL;
     83        errno_t ret = vhc_control_node(dev, &ctl_fun);
    8084        if (ret != EOK) {
    81                 usb_log_error("Failed to init HCD structures: %s.",
    82                    str_error(ret));
     85                usb_log_error("Failed to setup control node.\n");
    8386                return ret;
    8487        }
    85         vhc_data_t *vhc = ddf_dev_data_get(dev);
    86         vhc_init(vhc);
     88        vhc_data_t *data = ddf_fun_data_get(ctl_fun);
    8789
    88         hc_device_setup(&vhc->base, (bus_t *) &vhc->bus);
    89 
    90         /* Initialize virtual structure */
    91         ddf_fun_t *ctl_fun = NULL;
    92         ret = vhc_control_node(dev, &ctl_fun);
     90        /* Initialize generic structures */
     91        ret = hcd_ddf_setup_hc(dev, USB_SPEED_FULL,
     92            BANDWIDTH_AVAILABLE_USB11, bandwidth_count_usb11);
    9393        if (ret != EOK) {
    94                 usb_log_error("Failed to setup control node.");
     94                usb_log_error("Failed to init HCD structures: %s.\n",
     95                   str_error(ret));
     96                ddf_fun_destroy(ctl_fun);
    9597                return ret;
    9698        }
    9799
     100        hcd_set_implementation(dev_to_hcd(dev), data, &vhc_hc_ops);
     101
    98102        /* Add virtual hub device */
    99         ret = vhc_virtdev_plug_hub(vhc, &vhc->hub, NULL, 0);
     103        ret = vhc_virtdev_plug_hub(data, &data->hub, NULL, 0);
    100104        if (ret != EOK) {
    101                 usb_log_error("Failed to plug root hub: %s.", str_error(ret));
     105                usb_log_error("Failed to plug root hub: %s.\n", str_error(ret));
    102106                ddf_fun_destroy(ctl_fun);
    103107                return ret;
     
    108112         * needs to be ready at this time.
    109113         */
    110         ret = hc_setup_virtual_root_hub(&vhc->base, USB_SPEED_HIGH);
     114        ret = hcd_ddf_setup_root_hub(dev);
    111115        if (ret != EOK) {
    112                 usb_log_error("Failed to init VHC root hub: %s",
     116                usb_log_error("Failed to init VHC root hub: %s\n",
    113117                        str_error(ret));
    114118                // TODO do something here...
Note: See TracChangeset for help on using the changeset viewer.