Changeset df6ded8 in mainline for uspace/lib/usbdev/src/driver.c


Ignore:
Timestamp:
2018-02-28T16:37:50Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1b20da0
Parents:
f5e5f73 (diff), b2dca8de (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.
git-author:
Jakub Jermar <jakub@…> (2018-02-28 16:06:42)
git-committer:
Jakub Jermar <jakub@…> (2018-02-28 16:37:50)
Message:

Merge github.com:helenos-xhci-team/helenos

This commit merges support for USB 3 and generally refactors, fixes,
extends and cleans up the existing USB framework.

Notable additions and features:

  • new host controller driver has been implemented to control various xHC models (among others, NEC Renesas uPD720200)
  • isochronous data transfer mode
  • support for explicit USB device removal
  • USB tablet driver
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbdev/src/driver.c

    rf5e5f73 rdf6ded8  
    22 * Copyright (c) 2011 Vojtech Horky
    33 * Copyright (c) 2013 Jan Vesely
     4 * Copyright (c) 2018 Petr Manek
    45 * All rights reserved.
    56 *
     
    6263        errno_t rc = usb_device_create_ddf(gen_dev, driver->endpoints, &err_msg);
    6364        if (rc != EOK) {
    64                 usb_log_error("USB device `%s' init failed (%s): %s.\n",
     65                usb_log_error("USB device `%s' init failed (%s): %s.",
    6566                    ddf_dev_get_name(gen_dev), err_msg, str_error(rc));
    6667                return rc;
     
    8586        assert(driver);
    8687        assert(driver->ops);
    87         if (driver->ops->device_rem == NULL)
     88        if (driver->ops->device_remove == NULL)
    8889                return ENOTSUP;
     90
    8991        /* Just tell the driver to stop whatever it is doing */
    9092        usb_device_t *usb_dev = ddf_dev_data_get(gen_dev);
    91         const errno_t ret = driver->ops->device_rem(usb_dev);
     93        const errno_t ret = driver->ops->device_remove(usb_dev);
    9294        if (ret != EOK)
    9395                return ret;
     96
    9497        usb_device_destroy_ddf(gen_dev);
    9598        return EOK;
     
    117120}
    118121
     122/** Callback when the driver is asked to online a specific function.
     123 *
     124 * This callback is a wrapper for USB specific version of @c fun_online.
     125 *
     126 * @param gen_dev Device function structure as prepared by DDF.
     127 * @return Error code.
     128 */
     129static int generic_function_online(ddf_fun_t *fun)
     130{
     131        assert(driver);
     132        assert(driver->ops);
     133        if (driver->ops->function_online == NULL)
     134                return ENOTSUP;
     135        return driver->ops->function_online(fun);
     136}
     137
     138/** Callback when the driver is asked to offline a specific function.
     139 *
     140 * This callback is a wrapper for USB specific version of @c fun_offline.
     141 *
     142 * @param gen_dev Device function structure as prepared by DDF.
     143 * @return Error code.
     144 */
     145static int generic_function_offline(ddf_fun_t *fun)
     146{
     147        assert(driver);
     148        assert(driver->ops);
     149        if (driver->ops->function_offline == NULL)
     150                return ENOTSUP;
     151        return driver->ops->function_offline(fun);
     152}
     153
    119154static driver_ops_t generic_driver_ops = {
    120155        .dev_add = generic_device_add,
    121156        .dev_remove = generic_device_remove,
    122157        .dev_gone = generic_device_gone,
     158        .fun_online = generic_function_online,
     159        .fun_offline = generic_function_offline,
    123160};
    124161static driver_t generic_driver = {
Note: See TracChangeset for help on using the changeset viewer.