linux/drivers/usb/core/usb.c
<<
>>
Prefs
   1/*
   2 * drivers/usb/core/usb.c
   3 *
   4 * (C) Copyright Linus Torvalds 1999
   5 * (C) Copyright Johannes Erdfelt 1999-2001
   6 * (C) Copyright Andreas Gal 1999
   7 * (C) Copyright Gregory P. Smith 1999
   8 * (C) Copyright Deti Fliegl 1999 (new USB architecture)
   9 * (C) Copyright Randy Dunlap 2000
  10 * (C) Copyright David Brownell 2000-2004
  11 * (C) Copyright Yggdrasil Computing, Inc. 2000
  12 *     (usb_device_id matching changes by Adam J. Richter)
  13 * (C) Copyright Greg Kroah-Hartman 2002-2003
  14 *
  15 * Released under the GPLv2 only.
  16 * SPDX-License-Identifier: GPL-2.0
  17 *
  18 * NOTE! This is not actually a driver at all, rather this is
  19 * just a collection of helper routines that implement the
  20 * generic USB things that the real drivers can use..
  21 *
  22 * Think of this as a "USB library" rather than anything else.
  23 * It should be considered a slave, with no callbacks. Callbacks
  24 * are evil.
  25 */
  26
  27#include <linux/module.h>
  28#include <linux/moduleparam.h>
  29#include <linux/string.h>
  30#include <linux/bitops.h>
  31#include <linux/slab.h>
  32#include <linux/interrupt.h>  /* for in_interrupt() */
  33#include <linux/kmod.h>
  34#include <linux/init.h>
  35#include <linux/spinlock.h>
  36#include <linux/errno.h>
  37#include <linux/usb.h>
  38#include <linux/usb/hcd.h>
  39#include <linux/mutex.h>
  40#include <linux/workqueue.h>
  41#include <linux/debugfs.h>
  42#include <linux/usb/of.h>
  43
  44#include <asm/io.h>
  45#include <linux/scatterlist.h>
  46#include <linux/mm.h>
  47#include <linux/dma-mapping.h>
  48
  49#include "usb.h"
  50
  51
  52const char *usbcore_name = "usbcore";
  53
  54static bool nousb;      /* Disable USB when built into kernel image */
  55
  56module_param(nousb, bool, 0444);
  57
  58/*
  59 * for external read access to <nousb>
  60 */
  61int usb_disabled(void)
  62{
  63        return nousb;
  64}
  65EXPORT_SYMBOL_GPL(usb_disabled);
  66
  67#ifdef  CONFIG_PM
  68static int usb_autosuspend_delay = 2;           /* Default delay value,
  69                                                 * in seconds */
  70module_param_named(autosuspend, usb_autosuspend_delay, int, 0644);
  71MODULE_PARM_DESC(autosuspend, "default autosuspend delay");
  72
  73#else
  74#define usb_autosuspend_delay           0
  75#endif
  76
  77static bool match_endpoint(struct usb_endpoint_descriptor *epd,
  78                struct usb_endpoint_descriptor **bulk_in,
  79                struct usb_endpoint_descriptor **bulk_out,
  80                struct usb_endpoint_descriptor **int_in,
  81                struct usb_endpoint_descriptor **int_out)
  82{
  83        switch (usb_endpoint_type(epd)) {
  84        case USB_ENDPOINT_XFER_BULK:
  85                if (usb_endpoint_dir_in(epd)) {
  86                        if (bulk_in && !*bulk_in) {
  87                                *bulk_in = epd;
  88                                break;
  89                        }
  90                } else {
  91                        if (bulk_out && !*bulk_out) {
  92                                *bulk_out = epd;
  93                                break;
  94                        }
  95                }
  96
  97                return false;
  98        case USB_ENDPOINT_XFER_INT:
  99                if (usb_endpoint_dir_in(epd)) {
 100                        if (int_in && !*int_in) {
 101                                *int_in = epd;
 102                                break;
 103                        }
 104                } else {
 105                        if (int_out && !*int_out) {
 106                                *int_out = epd;
 107                                break;
 108                        }
 109                }
 110
 111                return false;
 112        default:
 113                return false;
 114        }
 115
 116        return (!bulk_in || *bulk_in) && (!bulk_out || *bulk_out) &&
 117                        (!int_in || *int_in) && (!int_out || *int_out);
 118}
 119
 120/**
 121 * usb_find_common_endpoints() -- look up common endpoint descriptors
 122 * @alt:        alternate setting to search
 123 * @bulk_in:    pointer to descriptor pointer, or NULL
 124 * @bulk_out:   pointer to descriptor pointer, or NULL
 125 * @int_in:     pointer to descriptor pointer, or NULL
 126 * @int_out:    pointer to descriptor pointer, or NULL
 127 *
 128 * Search the alternate setting's endpoint descriptors for the first bulk-in,
 129 * bulk-out, interrupt-in and interrupt-out endpoints and return them in the
 130 * provided pointers (unless they are NULL).
 131 *
 132 * If a requested endpoint is not found, the corresponding pointer is set to
 133 * NULL.
 134 *
 135 * Return: Zero if all requested descriptors were found, or -ENXIO otherwise.
 136 */
 137int usb_find_common_endpoints(struct usb_host_interface *alt,
 138                struct usb_endpoint_descriptor **bulk_in,
 139                struct usb_endpoint_descriptor **bulk_out,
 140                struct usb_endpoint_descriptor **int_in,
 141                struct usb_endpoint_descriptor **int_out)
 142{
 143        struct usb_endpoint_descriptor *epd;
 144        int i;
 145
 146        if (bulk_in)
 147                *bulk_in = NULL;
 148        if (bulk_out)
 149                *bulk_out = NULL;
 150        if (int_in)
 151                *int_in = NULL;
 152        if (int_out)
 153                *int_out = NULL;
 154
 155        for (i = 0; i < alt->desc.bNumEndpoints; ++i) {
 156                epd = &alt->endpoint[i].desc;
 157
 158                if (match_endpoint(epd, bulk_in, bulk_out, int_in, int_out))
 159                        return 0;
 160        }
 161
 162        return -ENXIO;
 163}
 164EXPORT_SYMBOL_GPL(usb_find_common_endpoints);
 165
 166/**
 167 * usb_find_common_endpoints_reverse() -- look up common endpoint descriptors
 168 * @alt:        alternate setting to search
 169 * @bulk_in:    pointer to descriptor pointer, or NULL
 170 * @bulk_out:   pointer to descriptor pointer, or NULL
 171 * @int_in:     pointer to descriptor pointer, or NULL
 172 * @int_out:    pointer to descriptor pointer, or NULL
 173 *
 174 * Search the alternate setting's endpoint descriptors for the last bulk-in,
 175 * bulk-out, interrupt-in and interrupt-out endpoints and return them in the
 176 * provided pointers (unless they are NULL).
 177 *
 178 * If a requested endpoint is not found, the corresponding pointer is set to
 179 * NULL.
 180 *
 181 * Return: Zero if all requested descriptors were found, or -ENXIO otherwise.
 182 */
 183int usb_find_common_endpoints_reverse(struct usb_host_interface *alt,
 184                struct usb_endpoint_descriptor **bulk_in,
 185                struct usb_endpoint_descriptor **bulk_out,
 186                struct usb_endpoint_descriptor **int_in,
 187                struct usb_endpoint_descriptor **int_out)
 188{
 189        struct usb_endpoint_descriptor *epd;
 190        int i;
 191
 192        if (bulk_in)
 193                *bulk_in = NULL;
 194        if (bulk_out)
 195                *bulk_out = NULL;
 196        if (int_in)
 197                *int_in = NULL;
 198        if (int_out)
 199                *int_out = NULL;
 200
 201        for (i = alt->desc.bNumEndpoints - 1; i >= 0; --i) {
 202                epd = &alt->endpoint[i].desc;
 203
 204                if (match_endpoint(epd, bulk_in, bulk_out, int_in, int_out))
 205                        return 0;
 206        }
 207
 208        return -ENXIO;
 209}
 210EXPORT_SYMBOL_GPL(usb_find_common_endpoints_reverse);
 211
 212/**
 213 * usb_find_alt_setting() - Given a configuration, find the alternate setting
 214 * for the given interface.
 215 * @config: the configuration to search (not necessarily the current config).
 216 * @iface_num: interface number to search in
 217 * @alt_num: alternate interface setting number to search for.
 218 *
 219 * Search the configuration's interface cache for the given alt setting.
 220 *
 221 * Return: The alternate setting, if found. %NULL otherwise.
 222 */
 223struct usb_host_interface *usb_find_alt_setting(
 224                struct usb_host_config *config,
 225                unsigned int iface_num,
 226                unsigned int alt_num)
 227{
 228        struct usb_interface_cache *intf_cache = NULL;
 229        int i;
 230
 231        for (i = 0; i < config->desc.bNumInterfaces; i++) {
 232                if (config->intf_cache[i]->altsetting[0].desc.bInterfaceNumber
 233                                == iface_num) {
 234                        intf_cache = config->intf_cache[i];
 235                        break;
 236                }
 237        }
 238        if (!intf_cache)
 239                return NULL;
 240        for (i = 0; i < intf_cache->num_altsetting; i++)
 241                if (intf_cache->altsetting[i].desc.bAlternateSetting == alt_num)
 242                        return &intf_cache->altsetting[i];
 243
 244        printk(KERN_DEBUG "Did not find alt setting %u for intf %u, "
 245                        "config %u\n", alt_num, iface_num,
 246                        config->desc.bConfigurationValue);
 247        return NULL;
 248}
 249EXPORT_SYMBOL_GPL(usb_find_alt_setting);
 250
 251/**
 252 * usb_ifnum_to_if - get the interface object with a given interface number
 253 * @dev: the device whose current configuration is considered
 254 * @ifnum: the desired interface
 255 *
 256 * This walks the device descriptor for the currently active configuration
 257 * to find the interface object with the particular interface number.
 258 *
 259 * Note that configuration descriptors are not required to assign interface
 260 * numbers sequentially, so that it would be incorrect to assume that
 261 * the first interface in that descriptor corresponds to interface zero.
 262 * This routine helps device drivers avoid such mistakes.
 263 * However, you should make sure that you do the right thing with any
 264 * alternate settings available for this interfaces.
 265 *
 266 * Don't call this function unless you are bound to one of the interfaces
 267 * on this device or you have locked the device!
 268 *
 269 * Return: A pointer to the interface that has @ifnum as interface number,
 270 * if found. %NULL otherwise.
 271 */
 272struct usb_interface *usb_ifnum_to_if(const struct usb_device *dev,
 273                                      unsigned ifnum)
 274{
 275        struct usb_host_config *config = dev->actconfig;
 276        int i;
 277
 278        if (!config)
 279                return NULL;
 280        for (i = 0; i < config->desc.bNumInterfaces; i++)
 281                if (config->interface[i]->altsetting[0]
 282                                .desc.bInterfaceNumber == ifnum)
 283                        return config->interface[i];
 284
 285        return NULL;
 286}
 287EXPORT_SYMBOL_GPL(usb_ifnum_to_if);
 288
 289/**
 290 * usb_altnum_to_altsetting - get the altsetting structure with a given alternate setting number.
 291 * @intf: the interface containing the altsetting in question
 292 * @altnum: the desired alternate setting number
 293 *
 294 * This searches the altsetting array of the specified interface for
 295 * an entry with the correct bAlternateSetting value.
 296 *
 297 * Note that altsettings need not be stored sequentially by number, so
 298 * it would be incorrect to assume that the first altsetting entry in
 299 * the array corresponds to altsetting zero.  This routine helps device
 300 * drivers avoid such mistakes.
 301 *
 302 * Don't call this function unless you are bound to the intf interface
 303 * or you have locked the device!
 304 *
 305 * Return: A pointer to the entry of the altsetting array of @intf that
 306 * has @altnum as the alternate setting number. %NULL if not found.
 307 */
 308struct usb_host_interface *usb_altnum_to_altsetting(
 309                                        const struct usb_interface *intf,
 310                                        unsigned int altnum)
 311{
 312        int i;
 313
 314        for (i = 0; i < intf->num_altsetting; i++) {
 315                if (intf->altsetting[i].desc.bAlternateSetting == altnum)
 316                        return &intf->altsetting[i];
 317        }
 318        return NULL;
 319}
 320EXPORT_SYMBOL_GPL(usb_altnum_to_altsetting);
 321
 322struct find_interface_arg {
 323        int minor;
 324        struct device_driver *drv;
 325};
 326
 327static int __find_interface(struct device *dev, void *data)
 328{
 329        struct find_interface_arg *arg = data;
 330        struct usb_interface *intf;
 331
 332        if (!is_usb_interface(dev))
 333                return 0;
 334
 335        if (dev->driver != arg->drv)
 336                return 0;
 337        intf = to_usb_interface(dev);
 338        return intf->minor == arg->minor;
 339}
 340
 341/**
 342 * usb_find_interface - find usb_interface pointer for driver and device
 343 * @drv: the driver whose current configuration is considered
 344 * @minor: the minor number of the desired device
 345 *
 346 * This walks the bus device list and returns a pointer to the interface
 347 * with the matching minor and driver.  Note, this only works for devices
 348 * that share the USB major number.
 349 *
 350 * Return: A pointer to the interface with the matching major and @minor.
 351 */
 352struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor)
 353{
 354        struct find_interface_arg argb;
 355        struct device *dev;
 356
 357        argb.minor = minor;
 358        argb.drv = &drv->drvwrap.driver;
 359
 360        dev = bus_find_device(&usb_bus_type, NULL, &argb, __find_interface);
 361
 362        /* Drop reference count from bus_find_device */
 363        put_device(dev);
 364
 365        return dev ? to_usb_interface(dev) : NULL;
 366}
 367EXPORT_SYMBOL_GPL(usb_find_interface);
 368
 369struct each_dev_arg {
 370        void *data;
 371        int (*fn)(struct usb_device *, void *);
 372};
 373
 374static int __each_dev(struct device *dev, void *data)
 375{
 376        struct each_dev_arg *arg = (struct each_dev_arg *)data;
 377
 378        /* There are struct usb_interface on the same bus, filter them out */
 379        if (!is_usb_device(dev))
 380                return 0;
 381
 382        return arg->fn(to_usb_device(dev), arg->data);
 383}
 384
 385/**
 386 * usb_for_each_dev - iterate over all USB devices in the system
 387 * @data: data pointer that will be handed to the callback function
 388 * @fn: callback function to be called for each USB device
 389 *
 390 * Iterate over all USB devices and call @fn for each, passing it @data. If it
 391 * returns anything other than 0, we break the iteration prematurely and return
 392 * that value.
 393 */
 394int usb_for_each_dev(void *data, int (*fn)(struct usb_device *, void *))
 395{
 396        struct each_dev_arg arg = {data, fn};
 397
 398        return bus_for_each_dev(&usb_bus_type, NULL, &arg, __each_dev);
 399}
 400EXPORT_SYMBOL_GPL(usb_for_each_dev);
 401
 402/**
 403 * usb_release_dev - free a usb device structure when all users of it are finished.
 404 * @dev: device that's been disconnected
 405 *
 406 * Will be called only by the device core when all users of this usb device are
 407 * done.
 408 */
 409static void usb_release_dev(struct device *dev)
 410{
 411        struct usb_device *udev;
 412        struct usb_hcd *hcd;
 413
 414        udev = to_usb_device(dev);
 415        hcd = bus_to_hcd(udev->bus);
 416
 417        usb_destroy_configuration(udev);
 418        usb_release_bos_descriptor(udev);
 419        usb_put_hcd(hcd);
 420        kfree(udev->product);
 421        kfree(udev->manufacturer);
 422        kfree(udev->serial);
 423        kfree(udev);
 424}
 425
 426static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
 427{
 428        struct usb_device *usb_dev;
 429
 430        usb_dev = to_usb_device(dev);
 431
 432        if (add_uevent_var(env, "BUSNUM=%03d", usb_dev->bus->busnum))
 433                return -ENOMEM;
 434
 435        if (add_uevent_var(env, "DEVNUM=%03d", usb_dev->devnum))
 436                return -ENOMEM;
 437
 438        return 0;
 439}
 440
 441#ifdef  CONFIG_PM
 442
 443/* USB device Power-Management thunks.
 444 * There's no need to distinguish here between quiescing a USB device
 445 * and powering it down; the generic_suspend() routine takes care of
 446 * it by skipping the usb_port_suspend() call for a quiesce.  And for
 447 * USB interfaces there's no difference at all.
 448 */
 449
 450static int usb_dev_prepare(struct device *dev)
 451{
 452        return 0;               /* Implement eventually? */
 453}
 454
 455static void usb_dev_complete(struct device *dev)
 456{
 457        /* Currently used only for rebinding interfaces */
 458        usb_resume_complete(dev);
 459}
 460
 461static int usb_dev_suspend(struct device *dev)
 462{
 463        return usb_suspend(dev, PMSG_SUSPEND);
 464}
 465
 466static int usb_dev_resume(struct device *dev)
 467{
 468        return usb_resume(dev, PMSG_RESUME);
 469}
 470
 471static int usb_dev_freeze(struct device *dev)
 472{
 473        return usb_suspend(dev, PMSG_FREEZE);
 474}
 475
 476static int usb_dev_thaw(struct device *dev)
 477{
 478        return usb_resume(dev, PMSG_THAW);
 479}
 480
 481static int usb_dev_poweroff(struct device *dev)
 482{
 483        return usb_suspend(dev, PMSG_HIBERNATE);
 484}
 485
 486static int usb_dev_restore(struct device *dev)
 487{
 488        return usb_resume(dev, PMSG_RESTORE);
 489}
 490
 491static const struct dev_pm_ops usb_device_pm_ops = {
 492        .prepare =      usb_dev_prepare,
 493        .complete =     usb_dev_complete,
 494        .suspend =      usb_dev_suspend,
 495        .resume =       usb_dev_resume,
 496        .freeze =       usb_dev_freeze,
 497        .thaw =         usb_dev_thaw,
 498        .poweroff =     usb_dev_poweroff,
 499        .restore =      usb_dev_restore,
 500        .runtime_suspend =      usb_runtime_suspend,
 501        .runtime_resume =       usb_runtime_resume,
 502        .runtime_idle =         usb_runtime_idle,
 503};
 504
 505#endif  /* CONFIG_PM */
 506
 507
 508static char *usb_devnode(struct device *dev,
 509                         umode_t *mode, kuid_t *uid, kgid_t *gid)
 510{
 511        struct usb_device *usb_dev;
 512
 513        usb_dev = to_usb_device(dev);
 514        return kasprintf(GFP_KERNEL, "bus/usb/%03d/%03d",
 515                         usb_dev->bus->busnum, usb_dev->devnum);
 516}
 517
 518struct device_type usb_device_type = {
 519        .name =         "usb_device",
 520        .release =      usb_release_dev,
 521        .uevent =       usb_dev_uevent,
 522        .devnode =      usb_devnode,
 523#ifdef CONFIG_PM
 524        .pm =           &usb_device_pm_ops,
 525#endif
 526};
 527
 528
 529/* Returns 1 if @usb_bus is WUSB, 0 otherwise */
 530static unsigned usb_bus_is_wusb(struct usb_bus *bus)
 531{
 532        struct usb_hcd *hcd = bus_to_hcd(bus);
 533        return hcd->wireless;
 534}
 535
 536
 537/**
 538 * usb_alloc_dev - usb device constructor (usbcore-internal)
 539 * @parent: hub to which device is connected; null to allocate a root hub
 540 * @bus: bus used to access the device
 541 * @port1: one-based index of port; ignored for root hubs
 542 * Context: !in_interrupt()
 543 *
 544 * Only hub drivers (including virtual root hub drivers for host
 545 * controllers) should ever call this.
 546 *
 547 * This call may not be used in a non-sleeping context.
 548 *
 549 * Return: On success, a pointer to the allocated usb device. %NULL on
 550 * failure.
 551 */
 552struct usb_device *usb_alloc_dev(struct usb_device *parent,
 553                                 struct usb_bus *bus, unsigned port1)
 554{
 555        struct usb_device *dev;
 556        struct usb_hcd *usb_hcd = bus_to_hcd(bus);
 557        unsigned root_hub = 0;
 558        unsigned raw_port = port1;
 559
 560        dev = kzalloc(sizeof(*dev), GFP_KERNEL);
 561        if (!dev)
 562                return NULL;
 563
 564        if (!usb_get_hcd(usb_hcd)) {
 565                kfree(dev);
 566                return NULL;
 567        }
 568        /* Root hubs aren't true devices, so don't allocate HCD resources */
 569        if (usb_hcd->driver->alloc_dev && parent &&
 570                !usb_hcd->driver->alloc_dev(usb_hcd, dev)) {
 571                usb_put_hcd(bus_to_hcd(bus));
 572                kfree(dev);
 573                return NULL;
 574        }
 575
 576        device_initialize(&dev->dev);
 577        dev->dev.bus = &usb_bus_type;
 578        dev->dev.type = &usb_device_type;
 579        dev->dev.groups = usb_device_groups;
 580        /*
 581         * Fake a dma_mask/offset for the USB device:
 582         * We cannot really use the dma-mapping API (dma_alloc_* and
 583         * dma_map_*) for USB devices but instead need to use
 584         * usb_alloc_coherent and pass data in 'urb's, but some subsystems
 585         * manually look into the mask/offset pair to determine whether
 586         * they need bounce buffers.
 587         * Note: calling dma_set_mask() on a USB device would set the
 588         * mask for the entire HCD, so don't do that.
 589         */
 590        dev->dev.dma_mask = bus->sysdev->dma_mask;
 591        dev->dev.dma_pfn_offset = bus->sysdev->dma_pfn_offset;
 592        set_dev_node(&dev->dev, dev_to_node(bus->sysdev));
 593        dev->state = USB_STATE_ATTACHED;
 594        dev->lpm_disable_count = 1;
 595        atomic_set(&dev->urbnum, 0);
 596
 597        INIT_LIST_HEAD(&dev->ep0.urb_list);
 598        dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE;
 599        dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT;
 600        /* ep0 maxpacket comes later, from device descriptor */
 601        usb_enable_endpoint(dev, &dev->ep0, false);
 602        dev->can_submit = 1;
 603
 604        /* Save readable and stable topology id, distinguishing devices
 605         * by location for diagnostics, tools, driver model, etc.  The
 606         * string is a path along hub ports, from the root.  Each device's
 607         * dev->devpath will be stable until USB is re-cabled, and hubs
 608         * are often labeled with these port numbers.  The name isn't
 609         * as stable:  bus->busnum changes easily from modprobe order,
 610         * cardbus or pci hotplugging, and so on.
 611         */
 612        if (unlikely(!parent)) {
 613                dev->devpath[0] = '0';
 614                dev->route = 0;
 615
 616                dev->dev.parent = bus->controller;
 617                dev_set_name(&dev->dev, "usb%d", bus->busnum);
 618                root_hub = 1;
 619        } else {
 620                /* match any labeling on the hubs; it's one-based */
 621                if (parent->devpath[0] == '0') {
 622                        snprintf(dev->devpath, sizeof dev->devpath,
 623                                "%d", port1);
 624                        /* Root ports are not counted in route string */
 625                        dev->route = 0;
 626                } else {
 627                        snprintf(dev->devpath, sizeof dev->devpath,
 628                                "%s.%d", parent->devpath, port1);
 629                        /* Route string assumes hubs have less than 16 ports */
 630                        if (port1 < 15)
 631                                dev->route = parent->route +
 632                                        (port1 << ((parent->level - 1)*4));
 633                        else
 634                                dev->route = parent->route +
 635                                        (15 << ((parent->level - 1)*4));
 636                }
 637
 638                dev->dev.parent = &parent->dev;
 639                dev_set_name(&dev->dev, "%d-%s", bus->busnum, dev->devpath);
 640
 641                if (!parent->parent) {
 642                        /* device under root hub's port */
 643                        raw_port = usb_hcd_find_raw_port_number(usb_hcd,
 644                                port1);
 645                }
 646                dev->dev.of_node = usb_of_get_child_node(parent->dev.of_node,
 647                                raw_port);
 648
 649                /* hub driver sets up TT records */
 650        }
 651
 652        dev->portnum = port1;
 653        dev->bus = bus;
 654        dev->parent = parent;
 655        INIT_LIST_HEAD(&dev->filelist);
 656
 657#ifdef  CONFIG_PM
 658        pm_runtime_set_autosuspend_delay(&dev->dev,
 659                        usb_autosuspend_delay * 1000);
 660        dev->connect_time = jiffies;
 661        dev->active_duration = -jiffies;
 662#endif
 663        if (root_hub)   /* Root hub always ok [and always wired] */
 664                dev->authorized = 1;
 665        else {
 666                dev->authorized = !!HCD_DEV_AUTHORIZED(usb_hcd);
 667                dev->wusb = usb_bus_is_wusb(bus) ? 1 : 0;
 668        }
 669        return dev;
 670}
 671EXPORT_SYMBOL_GPL(usb_alloc_dev);
 672
 673/**
 674 * usb_get_dev - increments the reference count of the usb device structure
 675 * @dev: the device being referenced
 676 *
 677 * Each live reference to a device should be refcounted.
 678 *
 679 * Drivers for USB interfaces should normally record such references in
 680 * their probe() methods, when they bind to an interface, and release
 681 * them by calling usb_put_dev(), in their disconnect() methods.
 682 *
 683 * Return: A pointer to the device with the incremented reference counter.
 684 */
 685struct usb_device *usb_get_dev(struct usb_device *dev)
 686{
 687        if (dev)
 688                get_device(&dev->dev);
 689        return dev;
 690}
 691EXPORT_SYMBOL_GPL(usb_get_dev);
 692
 693/**
 694 * usb_put_dev - release a use of the usb device structure
 695 * @dev: device that's been disconnected
 696 *
 697 * Must be called when a user of a device is finished with it.  When the last
 698 * user of the device calls this function, the memory of the device is freed.
 699 */
 700void usb_put_dev(struct usb_device *dev)
 701{
 702        if (dev)
 703                put_device(&dev->dev);
 704}
 705EXPORT_SYMBOL_GPL(usb_put_dev);
 706
 707/**
 708 * usb_get_intf - increments the reference count of the usb interface structure
 709 * @intf: the interface being referenced
 710 *
 711 * Each live reference to a interface must be refcounted.
 712 *
 713 * Drivers for USB interfaces should normally record such references in
 714 * their probe() methods, when they bind to an interface, and release
 715 * them by calling usb_put_intf(), in their disconnect() methods.
 716 *
 717 * Return: A pointer to the interface with the incremented reference counter.
 718 */
 719struct usb_interface *usb_get_intf(struct usb_interface *intf)
 720{
 721        if (intf)
 722                get_device(&intf->dev);
 723        return intf;
 724}
 725EXPORT_SYMBOL_GPL(usb_get_intf);
 726
 727/**
 728 * usb_put_intf - release a use of the usb interface structure
 729 * @intf: interface that's been decremented
 730 *
 731 * Must be called when a user of an interface is finished with it.  When the
 732 * last user of the interface calls this function, the memory of the interface
 733 * is freed.
 734 */
 735void usb_put_intf(struct usb_interface *intf)
 736{
 737        if (intf)
 738                put_device(&intf->dev);
 739}
 740EXPORT_SYMBOL_GPL(usb_put_intf);
 741
 742/*                      USB device locking
 743 *
 744 * USB devices and interfaces are locked using the semaphore in their
 745 * embedded struct device.  The hub driver guarantees that whenever a
 746 * device is connected or disconnected, drivers are called with the
 747 * USB device locked as well as their particular interface.
 748 *
 749 * Complications arise when several devices are to be locked at the same
 750 * time.  Only hub-aware drivers that are part of usbcore ever have to
 751 * do this; nobody else needs to worry about it.  The rule for locking
 752 * is simple:
 753 *
 754 *      When locking both a device and its parent, always lock the
 755 *      the parent first.
 756 */
 757
 758/**
 759 * usb_lock_device_for_reset - cautiously acquire the lock for a usb device structure
 760 * @udev: device that's being locked
 761 * @iface: interface bound to the driver making the request (optional)
 762 *
 763 * Attempts to acquire the device lock, but fails if the device is
 764 * NOTATTACHED or SUSPENDED, or if iface is specified and the interface
 765 * is neither BINDING nor BOUND.  Rather than sleeping to wait for the
 766 * lock, the routine polls repeatedly.  This is to prevent deadlock with
 767 * disconnect; in some drivers (such as usb-storage) the disconnect()
 768 * or suspend() method will block waiting for a device reset to complete.
 769 *
 770 * Return: A negative error code for failure, otherwise 0.
 771 */
 772int usb_lock_device_for_reset(struct usb_device *udev,
 773                              const struct usb_interface *iface)
 774{
 775        unsigned long jiffies_expire = jiffies + HZ;
 776
 777        if (udev->state == USB_STATE_NOTATTACHED)
 778                return -ENODEV;
 779        if (udev->state == USB_STATE_SUSPENDED)
 780                return -EHOSTUNREACH;
 781        if (iface && (iface->condition == USB_INTERFACE_UNBINDING ||
 782                        iface->condition == USB_INTERFACE_UNBOUND))
 783                return -EINTR;
 784
 785        while (!usb_trylock_device(udev)) {
 786
 787                /* If we can't acquire the lock after waiting one second,
 788                 * we're probably deadlocked */
 789                if (time_after(jiffies, jiffies_expire))
 790                        return -EBUSY;
 791
 792                msleep(15);
 793                if (udev->state == USB_STATE_NOTATTACHED)
 794                        return -ENODEV;
 795                if (udev->state == USB_STATE_SUSPENDED)
 796                        return -EHOSTUNREACH;
 797                if (iface && (iface->condition == USB_INTERFACE_UNBINDING ||
 798                                iface->condition == USB_INTERFACE_UNBOUND))
 799                        return -EINTR;
 800        }
 801        return 0;
 802}
 803EXPORT_SYMBOL_GPL(usb_lock_device_for_reset);
 804
 805/**
 806 * usb_get_current_frame_number - return current bus frame number
 807 * @dev: the device whose bus is being queried
 808 *
 809 * Return: The current frame number for the USB host controller used
 810 * with the given USB device. This can be used when scheduling
 811 * isochronous requests.
 812 *
 813 * Note: Different kinds of host controller have different "scheduling
 814 * horizons". While one type might support scheduling only 32 frames
 815 * into the future, others could support scheduling up to 1024 frames
 816 * into the future.
 817 *
 818 */
 819int usb_get_current_frame_number(struct usb_device *dev)
 820{
 821        return usb_hcd_get_frame_number(dev);
 822}
 823EXPORT_SYMBOL_GPL(usb_get_current_frame_number);
 824
 825/*-------------------------------------------------------------------*/
 826/*
 827 * __usb_get_extra_descriptor() finds a descriptor of specific type in the
 828 * extra field of the interface and endpoint descriptor structs.
 829 */
 830
 831int __usb_get_extra_descriptor(char *buffer, unsigned size,
 832                               unsigned char type, void **ptr)
 833{
 834        struct usb_descriptor_header *header;
 835
 836        while (size >= sizeof(struct usb_descriptor_header)) {
 837                header = (struct usb_descriptor_header *)buffer;
 838
 839                if (header->bLength < 2) {
 840                        printk(KERN_ERR
 841                                "%s: bogus descriptor, type %d length %d\n",
 842                                usbcore_name,
 843                                header->bDescriptorType,
 844                                header->bLength);
 845                        return -1;
 846                }
 847
 848                if (header->bDescriptorType == type) {
 849                        *ptr = header;
 850                        return 0;
 851                }
 852
 853                buffer += header->bLength;
 854                size -= header->bLength;
 855        }
 856        return -1;
 857}
 858EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor);
 859
 860/**
 861 * usb_alloc_coherent - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP
 862 * @dev: device the buffer will be used with
 863 * @size: requested buffer size
 864 * @mem_flags: affect whether allocation may block
 865 * @dma: used to return DMA address of buffer
 866 *
 867 * Return: Either null (indicating no buffer could be allocated), or the
 868 * cpu-space pointer to a buffer that may be used to perform DMA to the
 869 * specified device.  Such cpu-space buffers are returned along with the DMA
 870 * address (through the pointer provided).
 871 *
 872 * Note:
 873 * These buffers are used with URB_NO_xxx_DMA_MAP set in urb->transfer_flags
 874 * to avoid behaviors like using "DMA bounce buffers", or thrashing IOMMU
 875 * hardware during URB completion/resubmit.  The implementation varies between
 876 * platforms, depending on details of how DMA will work to this device.
 877 * Using these buffers also eliminates cacheline sharing problems on
 878 * architectures where CPU caches are not DMA-coherent.  On systems without
 879 * bus-snooping caches, these buffers are uncached.
 880 *
 881 * When the buffer is no longer used, free it with usb_free_coherent().
 882 */
 883void *usb_alloc_coherent(struct usb_device *dev, size_t size, gfp_t mem_flags,
 884                         dma_addr_t *dma)
 885{
 886        if (!dev || !dev->bus)
 887                return NULL;
 888        return hcd_buffer_alloc(dev->bus, size, mem_flags, dma);
 889}
 890EXPORT_SYMBOL_GPL(usb_alloc_coherent);
 891
 892/**
 893 * usb_free_coherent - free memory allocated with usb_alloc_coherent()
 894 * @dev: device the buffer was used with
 895 * @size: requested buffer size
 896 * @addr: CPU address of buffer
 897 * @dma: DMA address of buffer
 898 *
 899 * This reclaims an I/O buffer, letting it be reused.  The memory must have
 900 * been allocated using usb_alloc_coherent(), and the parameters must match
 901 * those provided in that allocation request.
 902 */
 903void usb_free_coherent(struct usb_device *dev, size_t size, void *addr,
 904                       dma_addr_t dma)
 905{
 906        if (!dev || !dev->bus)
 907                return;
 908        if (!addr)
 909                return;
 910        hcd_buffer_free(dev->bus, size, addr, dma);
 911}
 912EXPORT_SYMBOL_GPL(usb_free_coherent);
 913
 914/**
 915 * usb_buffer_map - create DMA mapping(s) for an urb
 916 * @urb: urb whose transfer_buffer/setup_packet will be mapped
 917 *
 918 * URB_NO_TRANSFER_DMA_MAP is added to urb->transfer_flags if the operation
 919 * succeeds. If the device is connected to this system through a non-DMA
 920 * controller, this operation always succeeds.
 921 *
 922 * This call would normally be used for an urb which is reused, perhaps
 923 * as the target of a large periodic transfer, with usb_buffer_dmasync()
 924 * calls to synchronize memory and dma state.
 925 *
 926 * Reverse the effect of this call with usb_buffer_unmap().
 927 *
 928 * Return: Either %NULL (indicating no buffer could be mapped), or @urb.
 929 *
 930 */
 931#if 0
 932struct urb *usb_buffer_map(struct urb *urb)
 933{
 934        struct usb_bus          *bus;
 935        struct device           *controller;
 936
 937        if (!urb
 938                        || !urb->dev
 939                        || !(bus = urb->dev->bus)
 940                        || !(controller = bus->sysdev))
 941                return NULL;
 942
 943        if (controller->dma_mask) {
 944                urb->transfer_dma = dma_map_single(controller,
 945                        urb->transfer_buffer, urb->transfer_buffer_length,
 946                        usb_pipein(urb->pipe)
 947                                ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
 948        /* FIXME generic api broken like pci, can't report errors */
 949        /* if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; */
 950        } else
 951                urb->transfer_dma = ~0;
 952        urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
 953        return urb;
 954}
 955EXPORT_SYMBOL_GPL(usb_buffer_map);
 956#endif  /*  0  */
 957
 958/* XXX DISABLED, no users currently.  If you wish to re-enable this
 959 * XXX please determine whether the sync is to transfer ownership of
 960 * XXX the buffer from device to cpu or vice verse, and thusly use the
 961 * XXX appropriate _for_{cpu,device}() method.  -DaveM
 962 */
 963#if 0
 964
 965/**
 966 * usb_buffer_dmasync - synchronize DMA and CPU view of buffer(s)
 967 * @urb: urb whose transfer_buffer/setup_packet will be synchronized
 968 */
 969void usb_buffer_dmasync(struct urb *urb)
 970{
 971        struct usb_bus          *bus;
 972        struct device           *controller;
 973
 974        if (!urb
 975                        || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
 976                        || !urb->dev
 977                        || !(bus = urb->dev->bus)
 978                        || !(controller = bus->sysdev))
 979                return;
 980
 981        if (controller->dma_mask) {
 982                dma_sync_single_for_cpu(controller,
 983                        urb->transfer_dma, urb->transfer_buffer_length,
 984                        usb_pipein(urb->pipe)
 985                                ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
 986                if (usb_pipecontrol(urb->pipe))
 987                        dma_sync_single_for_cpu(controller,
 988                                        urb->setup_dma,
 989                                        sizeof(struct usb_ctrlrequest),
 990                                        DMA_TO_DEVICE);
 991        }
 992}
 993EXPORT_SYMBOL_GPL(usb_buffer_dmasync);
 994#endif
 995
 996/**
 997 * usb_buffer_unmap - free DMA mapping(s) for an urb
 998 * @urb: urb whose transfer_buffer will be unmapped
 999 *
1000 * Reverses the effect of usb_buffer_map().
1001 */
1002#if 0
1003void usb_buffer_unmap(struct urb *urb)
1004{
1005        struct usb_bus          *bus;
1006        struct device           *controller;
1007
1008        if (!urb
1009                        || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
1010                        || !urb->dev
1011                        || !(bus = urb->dev->bus)
1012                        || !(controller = bus->sysdev))
1013                return;
1014
1015        if (controller->dma_mask) {
1016                dma_unmap_single(controller,
1017                        urb->transfer_dma, urb->transfer_buffer_length,
1018                        usb_pipein(urb->pipe)
1019                                ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
1020        }
1021        urb->transfer_flags &= ~URB_NO_TRANSFER_DMA_MAP;
1022}
1023EXPORT_SYMBOL_GPL(usb_buffer_unmap);
1024#endif  /*  0  */
1025
1026#if 0
1027/**
1028 * usb_buffer_map_sg - create scatterlist DMA mapping(s) for an endpoint
1029 * @dev: device to which the scatterlist will be mapped
1030 * @is_in: mapping transfer direction
1031 * @sg: the scatterlist to map
1032 * @nents: the number of entries in the scatterlist
1033 *
1034 * Return: Either < 0 (indicating no buffers could be mapped), or the
1035 * number of DMA mapping array entries in the scatterlist.
1036 *
1037 * Note:
1038 * The caller is responsible for placing the resulting DMA addresses from
1039 * the scatterlist into URB transfer buffer pointers, and for setting the
1040 * URB_NO_TRANSFER_DMA_MAP transfer flag in each of those URBs.
1041 *
1042 * Top I/O rates come from queuing URBs, instead of waiting for each one
1043 * to complete before starting the next I/O.   This is particularly easy
1044 * to do with scatterlists.  Just allocate and submit one URB for each DMA
1045 * mapping entry returned, stopping on the first error or when all succeed.
1046 * Better yet, use the usb_sg_*() calls, which do that (and more) for you.
1047 *
1048 * This call would normally be used when translating scatterlist requests,
1049 * rather than usb_buffer_map(), since on some hardware (with IOMMUs) it
1050 * may be able to coalesce mappings for improved I/O efficiency.
1051 *
1052 * Reverse the effect of this call with usb_buffer_unmap_sg().
1053 */
1054int usb_buffer_map_sg(const struct usb_device *dev, int is_in,
1055                      struct scatterlist *sg, int nents)
1056{
1057        struct usb_bus          *bus;
1058        struct device           *controller;
1059
1060        if (!dev
1061                        || !(bus = dev->bus)
1062                        || !(controller = bus->sysdev)
1063                        || !controller->dma_mask)
1064                return -EINVAL;
1065
1066        /* FIXME generic api broken like pci, can't report errors */
1067        return dma_map_sg(controller, sg, nents,
1068                        is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE) ? : -ENOMEM;
1069}
1070EXPORT_SYMBOL_GPL(usb_buffer_map_sg);
1071#endif
1072
1073/* XXX DISABLED, no users currently.  If you wish to re-enable this
1074 * XXX please determine whether the sync is to transfer ownership of
1075 * XXX the buffer from device to cpu or vice verse, and thusly use the
1076 * XXX appropriate _for_{cpu,device}() method.  -DaveM
1077 */
1078#if 0
1079
1080/**
1081 * usb_buffer_dmasync_sg - synchronize DMA and CPU view of scatterlist buffer(s)
1082 * @dev: device to which the scatterlist will be mapped
1083 * @is_in: mapping transfer direction
1084 * @sg: the scatterlist to synchronize
1085 * @n_hw_ents: the positive return value from usb_buffer_map_sg
1086 *
1087 * Use this when you are re-using a scatterlist's data buffers for
1088 * another USB request.
1089 */
1090void usb_buffer_dmasync_sg(const struct usb_device *dev, int is_in,
1091                           struct scatterlist *sg, int n_hw_ents)
1092{
1093        struct usb_bus          *bus;
1094        struct device           *controller;
1095
1096        if (!dev
1097                        || !(bus = dev->bus)
1098                        || !(controller = bus->sysdev)
1099                        || !controller->dma_mask)
1100                return;
1101
1102        dma_sync_sg_for_cpu(controller, sg, n_hw_ents,
1103                            is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
1104}
1105EXPORT_SYMBOL_GPL(usb_buffer_dmasync_sg);
1106#endif
1107
1108#if 0
1109/**
1110 * usb_buffer_unmap_sg - free DMA mapping(s) for a scatterlist
1111 * @dev: device to which the scatterlist will be mapped
1112 * @is_in: mapping transfer direction
1113 * @sg: the scatterlist to unmap
1114 * @n_hw_ents: the positive return value from usb_buffer_map_sg
1115 *
1116 * Reverses the effect of usb_buffer_map_sg().
1117 */
1118void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
1119                         struct scatterlist *sg, int n_hw_ents)
1120{
1121        struct usb_bus          *bus;
1122        struct device           *controller;
1123
1124        if (!dev
1125                        || !(bus = dev->bus)
1126                        || !(controller = bus->sysdev)
1127                        || !controller->dma_mask)
1128                return;
1129
1130        dma_unmap_sg(controller, sg, n_hw_ents,
1131                        is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE);
1132}
1133EXPORT_SYMBOL_GPL(usb_buffer_unmap_sg);
1134#endif
1135
1136/*
1137 * Notifications of device and interface registration
1138 */
1139static int usb_bus_notify(struct notifier_block *nb, unsigned long action,
1140                void *data)
1141{
1142        struct device *dev = data;
1143
1144        switch (action) {
1145        case BUS_NOTIFY_ADD_DEVICE:
1146                if (dev->type == &usb_device_type)
1147                        (void) usb_create_sysfs_dev_files(to_usb_device(dev));
1148                else if (dev->type == &usb_if_device_type)
1149                        usb_create_sysfs_intf_files(to_usb_interface(dev));
1150                break;
1151
1152        case BUS_NOTIFY_DEL_DEVICE:
1153                if (dev->type == &usb_device_type)
1154                        usb_remove_sysfs_dev_files(to_usb_device(dev));
1155                else if (dev->type == &usb_if_device_type)
1156                        usb_remove_sysfs_intf_files(to_usb_interface(dev));
1157                break;
1158        }
1159        return 0;
1160}
1161
1162static struct notifier_block usb_bus_nb = {
1163        .notifier_call = usb_bus_notify,
1164};
1165
1166struct dentry *usb_debug_root;
1167EXPORT_SYMBOL_GPL(usb_debug_root);
1168
1169static struct dentry *usb_debug_devices;
1170
1171static int usb_debugfs_init(void)
1172{
1173        usb_debug_root = debugfs_create_dir("usb", NULL);
1174        if (!usb_debug_root)
1175                return -ENOENT;
1176
1177        usb_debug_devices = debugfs_create_file("devices", 0444,
1178                                                usb_debug_root, NULL,
1179                                                &usbfs_devices_fops);
1180        if (!usb_debug_devices) {
1181                debugfs_remove(usb_debug_root);
1182                usb_debug_root = NULL;
1183                return -ENOENT;
1184        }
1185
1186        return 0;
1187}
1188
1189static void usb_debugfs_cleanup(void)
1190{
1191        debugfs_remove(usb_debug_devices);
1192        debugfs_remove(usb_debug_root);
1193}
1194
1195/*
1196 * Init
1197 */
1198static int __init usb_init(void)
1199{
1200        int retval;
1201        if (usb_disabled()) {
1202                pr_info("%s: USB support disabled\n", usbcore_name);
1203                return 0;
1204        }
1205        usb_init_pool_max();
1206
1207        retval = usb_debugfs_init();
1208        if (retval)
1209                goto out;
1210
1211        usb_acpi_register();
1212        retval = bus_register(&usb_bus_type);
1213        if (retval)
1214                goto bus_register_failed;
1215        retval = bus_register_notifier(&usb_bus_type, &usb_bus_nb);
1216        if (retval)
1217                goto bus_notifier_failed;
1218        retval = usb_major_init();
1219        if (retval)
1220                goto major_init_failed;
1221        retval = usb_register(&usbfs_driver);
1222        if (retval)
1223                goto driver_register_failed;
1224        retval = usb_devio_init();
1225        if (retval)
1226                goto usb_devio_init_failed;
1227        retval = usb_hub_init();
1228        if (retval)
1229                goto hub_init_failed;
1230        retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE);
1231        if (!retval)
1232                goto out;
1233
1234        usb_hub_cleanup();
1235hub_init_failed:
1236        usb_devio_cleanup();
1237usb_devio_init_failed:
1238        usb_deregister(&usbfs_driver);
1239driver_register_failed:
1240        usb_major_cleanup();
1241major_init_failed:
1242        bus_unregister_notifier(&usb_bus_type, &usb_bus_nb);
1243bus_notifier_failed:
1244        bus_unregister(&usb_bus_type);
1245bus_register_failed:
1246        usb_acpi_unregister();
1247        usb_debugfs_cleanup();
1248out:
1249        return retval;
1250}
1251
1252/*
1253 * Cleanup
1254 */
1255static void __exit usb_exit(void)
1256{
1257        /* This will matter if shutdown/reboot does exitcalls. */
1258        if (usb_disabled())
1259                return;
1260
1261        usb_deregister_device_driver(&usb_generic_driver);
1262        usb_major_cleanup();
1263        usb_deregister(&usbfs_driver);
1264        usb_devio_cleanup();
1265        usb_hub_cleanup();
1266        bus_unregister_notifier(&usb_bus_type, &usb_bus_nb);
1267        bus_unregister(&usb_bus_type);
1268        usb_acpi_unregister();
1269        usb_debugfs_cleanup();
1270        idr_destroy(&usb_bus_idr);
1271}
1272
1273subsys_initcall(usb_init);
1274module_exit(usb_exit);
1275MODULE_LICENSE("GPL");
1276