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 52 const char *usbcore_name = "usbcore"; 53 54 static bool nousb; /* Disable USB when built into kernel image */ 55 56 module_param(nousb, bool, 0444); 57 58 /* 59 * for external read access to <nousb> 60 */ 61 int usb_disabled(void) 62 { 63 return nousb; 64 } 65 EXPORT_SYMBOL_GPL(usb_disabled); 66 67 #ifdef CONFIG_PM 68 static int usb_autosuspend_delay = 2; /* Default delay value, 69 * in seconds */ 70 module_param_named(autosuspend, usb_autosuspend_delay, int, 0644); 71 MODULE_PARM_DESC(autosuspend, "default autosuspend delay"); 72 73 #else 74 #define usb_autosuspend_delay 0 75 #endif 76 77 static 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 */ 137 int 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 } 164 EXPORT_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 */ 183 int 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 } 210 EXPORT_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 */ 223 struct 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 } 249 EXPORT_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 */ 272 struct 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 } 287 EXPORT_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 */ 308 struct 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 } 320 EXPORT_SYMBOL_GPL(usb_altnum_to_altsetting); 321 322 struct find_interface_arg { 323 int minor; 324 struct device_driver *drv; 325 }; 326 327 static 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 */ 352 struct 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 } 367 EXPORT_SYMBOL_GPL(usb_find_interface); 368 369 struct each_dev_arg { 370 void *data; 371 int (*fn)(struct usb_device *, void *); 372 }; 373 374 static 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 */ 394 int 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 } 400 EXPORT_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 */ 409 static 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 of_node_put(dev->of_node); 420 usb_put_hcd(hcd); 421 kfree(udev->product); 422 kfree(udev->manufacturer); 423 kfree(udev->serial); 424 kfree(udev); 425 } 426 427 static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env) 428 { 429 struct usb_device *usb_dev; 430 431 usb_dev = to_usb_device(dev); 432 433 if (add_uevent_var(env, "BUSNUM=%03d", usb_dev->bus->busnum)) 434 return -ENOMEM; 435 436 if (add_uevent_var(env, "DEVNUM=%03d", usb_dev->devnum)) 437 return -ENOMEM; 438 439 return 0; 440 } 441 442 #ifdef CONFIG_PM 443 444 /* USB device Power-Management thunks. 445 * There's no need to distinguish here between quiescing a USB device 446 * and powering it down; the generic_suspend() routine takes care of 447 * it by skipping the usb_port_suspend() call for a quiesce. And for 448 * USB interfaces there's no difference at all. 449 */ 450 451 static int usb_dev_prepare(struct device *dev) 452 { 453 return 0; /* Implement eventually? */ 454 } 455 456 static void usb_dev_complete(struct device *dev) 457 { 458 /* Currently used only for rebinding interfaces */ 459 usb_resume_complete(dev); 460 } 461 462 static int usb_dev_suspend(struct device *dev) 463 { 464 return usb_suspend(dev, PMSG_SUSPEND); 465 } 466 467 static int usb_dev_resume(struct device *dev) 468 { 469 return usb_resume(dev, PMSG_RESUME); 470 } 471 472 static int usb_dev_freeze(struct device *dev) 473 { 474 return usb_suspend(dev, PMSG_FREEZE); 475 } 476 477 static int usb_dev_thaw(struct device *dev) 478 { 479 return usb_resume(dev, PMSG_THAW); 480 } 481 482 static int usb_dev_poweroff(struct device *dev) 483 { 484 return usb_suspend(dev, PMSG_HIBERNATE); 485 } 486 487 static int usb_dev_restore(struct device *dev) 488 { 489 return usb_resume(dev, PMSG_RESTORE); 490 } 491 492 static const struct dev_pm_ops usb_device_pm_ops = { 493 .prepare = usb_dev_prepare, 494 .complete = usb_dev_complete, 495 .suspend = usb_dev_suspend, 496 .resume = usb_dev_resume, 497 .freeze = usb_dev_freeze, 498 .thaw = usb_dev_thaw, 499 .poweroff = usb_dev_poweroff, 500 .restore = usb_dev_restore, 501 .runtime_suspend = usb_runtime_suspend, 502 .runtime_resume = usb_runtime_resume, 503 .runtime_idle = usb_runtime_idle, 504 }; 505 506 #endif /* CONFIG_PM */ 507 508 509 static char *usb_devnode(struct device *dev, 510 umode_t *mode, kuid_t *uid, kgid_t *gid) 511 { 512 struct usb_device *usb_dev; 513 514 usb_dev = to_usb_device(dev); 515 return kasprintf(GFP_KERNEL, "bus/usb/%03d/%03d", 516 usb_dev->bus->busnum, usb_dev->devnum); 517 } 518 519 struct device_type usb_device_type = { 520 .name = "usb_device", 521 .release = usb_release_dev, 522 .uevent = usb_dev_uevent, 523 .devnode = usb_devnode, 524 #ifdef CONFIG_PM 525 .pm = &usb_device_pm_ops, 526 #endif 527 }; 528 529 530 /* Returns 1 if @usb_bus is WUSB, 0 otherwise */ 531 static unsigned usb_bus_is_wusb(struct usb_bus *bus) 532 { 533 struct usb_hcd *hcd = bus_to_hcd(bus); 534 return hcd->wireless; 535 } 536 537 538 /** 539 * usb_alloc_dev - usb device constructor (usbcore-internal) 540 * @parent: hub to which device is connected; null to allocate a root hub 541 * @bus: bus used to access the device 542 * @port1: one-based index of port; ignored for root hubs 543 * Context: !in_interrupt() 544 * 545 * Only hub drivers (including virtual root hub drivers for host 546 * controllers) should ever call this. 547 * 548 * This call may not be used in a non-sleeping context. 549 * 550 * Return: On success, a pointer to the allocated usb device. %NULL on 551 * failure. 552 */ 553 struct usb_device *usb_alloc_dev(struct usb_device *parent, 554 struct usb_bus *bus, unsigned port1) 555 { 556 struct usb_device *dev; 557 struct usb_hcd *usb_hcd = bus_to_hcd(bus); 558 unsigned root_hub = 0; 559 unsigned raw_port = port1; 560 561 dev = kzalloc(sizeof(*dev), GFP_KERNEL); 562 if (!dev) 563 return NULL; 564 565 if (!usb_get_hcd(usb_hcd)) { 566 kfree(dev); 567 return NULL; 568 } 569 /* Root hubs aren't true devices, so don't allocate HCD resources */ 570 if (usb_hcd->driver->alloc_dev && parent && 571 !usb_hcd->driver->alloc_dev(usb_hcd, dev)) { 572 usb_put_hcd(bus_to_hcd(bus)); 573 kfree(dev); 574 return NULL; 575 } 576 577 device_initialize(&dev->dev); 578 dev->dev.bus = &usb_bus_type; 579 dev->dev.type = &usb_device_type; 580 dev->dev.groups = usb_device_groups; 581 /* 582 * Fake a dma_mask/offset for the USB device: 583 * We cannot really use the dma-mapping API (dma_alloc_* and 584 * dma_map_*) for USB devices but instead need to use 585 * usb_alloc_coherent and pass data in 'urb's, but some subsystems 586 * manually look into the mask/offset pair to determine whether 587 * they need bounce buffers. 588 * Note: calling dma_set_mask() on a USB device would set the 589 * mask for the entire HCD, so don't do that. 590 */ 591 dev->dev.dma_mask = bus->sysdev->dma_mask; 592 dev->dev.dma_pfn_offset = bus->sysdev->dma_pfn_offset; 593 set_dev_node(&dev->dev, dev_to_node(bus->sysdev)); 594 dev->state = USB_STATE_ATTACHED; 595 dev->lpm_disable_count = 1; 596 atomic_set(&dev->urbnum, 0); 597 598 INIT_LIST_HEAD(&dev->ep0.urb_list); 599 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; 600 dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT; 601 /* ep0 maxpacket comes later, from device descriptor */ 602 usb_enable_endpoint(dev, &dev->ep0, false); 603 dev->can_submit = 1; 604 605 /* Save readable and stable topology id, distinguishing devices 606 * by location for diagnostics, tools, driver model, etc. The 607 * string is a path along hub ports, from the root. Each device's 608 * dev->devpath will be stable until USB is re-cabled, and hubs 609 * are often labeled with these port numbers. The name isn't 610 * as stable: bus->busnum changes easily from modprobe order, 611 * cardbus or pci hotplugging, and so on. 612 */ 613 if (unlikely(!parent)) { 614 dev->devpath[0] = '0'; 615 dev->route = 0; 616 617 dev->dev.parent = bus->controller; 618 device_set_of_node_from_dev(&dev->dev, bus->sysdev); 619 dev_set_name(&dev->dev, "usb%d", bus->busnum); 620 root_hub = 1; 621 } else { 622 /* match any labeling on the hubs; it's one-based */ 623 if (parent->devpath[0] == '0') { 624 snprintf(dev->devpath, sizeof dev->devpath, 625 "%d", port1); 626 /* Root ports are not counted in route string */ 627 dev->route = 0; 628 } else { 629 snprintf(dev->devpath, sizeof dev->devpath, 630 "%s.%d", parent->devpath, port1); 631 /* Route string assumes hubs have less than 16 ports */ 632 if (port1 < 15) 633 dev->route = parent->route + 634 (port1 << ((parent->level - 1)*4)); 635 else 636 dev->route = parent->route + 637 (15 << ((parent->level - 1)*4)); 638 } 639 640 dev->dev.parent = &parent->dev; 641 dev_set_name(&dev->dev, "%d-%s", bus->busnum, dev->devpath); 642 643 if (!parent->parent) { 644 /* device under root hub's port */ 645 raw_port = usb_hcd_find_raw_port_number(usb_hcd, 646 port1); 647 } 648 dev->dev.of_node = usb_of_get_child_node(parent->dev.of_node, 649 raw_port); 650 651 /* hub driver sets up TT records */ 652 } 653 654 dev->portnum = port1; 655 dev->bus = bus; 656 dev->parent = parent; 657 INIT_LIST_HEAD(&dev->filelist); 658 659 #ifdef CONFIG_PM 660 pm_runtime_set_autosuspend_delay(&dev->dev, 661 usb_autosuspend_delay * 1000); 662 dev->connect_time = jiffies; 663 dev->active_duration = -jiffies; 664 #endif 665 if (root_hub) /* Root hub always ok [and always wired] */ 666 dev->authorized = 1; 667 else { 668 dev->authorized = !!HCD_DEV_AUTHORIZED(usb_hcd); 669 dev->wusb = usb_bus_is_wusb(bus) ? 1 : 0; 670 } 671 return dev; 672 } 673 EXPORT_SYMBOL_GPL(usb_alloc_dev); 674 675 /** 676 * usb_get_dev - increments the reference count of the usb device structure 677 * @dev: the device being referenced 678 * 679 * Each live reference to a device should be refcounted. 680 * 681 * Drivers for USB interfaces should normally record such references in 682 * their probe() methods, when they bind to an interface, and release 683 * them by calling usb_put_dev(), in their disconnect() methods. 684 * 685 * Return: A pointer to the device with the incremented reference counter. 686 */ 687 struct usb_device *usb_get_dev(struct usb_device *dev) 688 { 689 if (dev) 690 get_device(&dev->dev); 691 return dev; 692 } 693 EXPORT_SYMBOL_GPL(usb_get_dev); 694 695 /** 696 * usb_put_dev - release a use of the usb device structure 697 * @dev: device that's been disconnected 698 * 699 * Must be called when a user of a device is finished with it. When the last 700 * user of the device calls this function, the memory of the device is freed. 701 */ 702 void usb_put_dev(struct usb_device *dev) 703 { 704 if (dev) 705 put_device(&dev->dev); 706 } 707 EXPORT_SYMBOL_GPL(usb_put_dev); 708 709 /** 710 * usb_get_intf - increments the reference count of the usb interface structure 711 * @intf: the interface being referenced 712 * 713 * Each live reference to a interface must be refcounted. 714 * 715 * Drivers for USB interfaces should normally record such references in 716 * their probe() methods, when they bind to an interface, and release 717 * them by calling usb_put_intf(), in their disconnect() methods. 718 * 719 * Return: A pointer to the interface with the incremented reference counter. 720 */ 721 struct usb_interface *usb_get_intf(struct usb_interface *intf) 722 { 723 if (intf) 724 get_device(&intf->dev); 725 return intf; 726 } 727 EXPORT_SYMBOL_GPL(usb_get_intf); 728 729 /** 730 * usb_put_intf - release a use of the usb interface structure 731 * @intf: interface that's been decremented 732 * 733 * Must be called when a user of an interface is finished with it. When the 734 * last user of the interface calls this function, the memory of the interface 735 * is freed. 736 */ 737 void usb_put_intf(struct usb_interface *intf) 738 { 739 if (intf) 740 put_device(&intf->dev); 741 } 742 EXPORT_SYMBOL_GPL(usb_put_intf); 743 744 /* USB device locking 745 * 746 * USB devices and interfaces are locked using the semaphore in their 747 * embedded struct device. The hub driver guarantees that whenever a 748 * device is connected or disconnected, drivers are called with the 749 * USB device locked as well as their particular interface. 750 * 751 * Complications arise when several devices are to be locked at the same 752 * time. Only hub-aware drivers that are part of usbcore ever have to 753 * do this; nobody else needs to worry about it. The rule for locking 754 * is simple: 755 * 756 * When locking both a device and its parent, always lock the 757 * the parent first. 758 */ 759 760 /** 761 * usb_lock_device_for_reset - cautiously acquire the lock for a usb device structure 762 * @udev: device that's being locked 763 * @iface: interface bound to the driver making the request (optional) 764 * 765 * Attempts to acquire the device lock, but fails if the device is 766 * NOTATTACHED or SUSPENDED, or if iface is specified and the interface 767 * is neither BINDING nor BOUND. Rather than sleeping to wait for the 768 * lock, the routine polls repeatedly. This is to prevent deadlock with 769 * disconnect; in some drivers (such as usb-storage) the disconnect() 770 * or suspend() method will block waiting for a device reset to complete. 771 * 772 * Return: A negative error code for failure, otherwise 0. 773 */ 774 int usb_lock_device_for_reset(struct usb_device *udev, 775 const struct usb_interface *iface) 776 { 777 unsigned long jiffies_expire = jiffies + HZ; 778 779 if (udev->state == USB_STATE_NOTATTACHED) 780 return -ENODEV; 781 if (udev->state == USB_STATE_SUSPENDED) 782 return -EHOSTUNREACH; 783 if (iface && (iface->condition == USB_INTERFACE_UNBINDING || 784 iface->condition == USB_INTERFACE_UNBOUND)) 785 return -EINTR; 786 787 while (!usb_trylock_device(udev)) { 788 789 /* If we can't acquire the lock after waiting one second, 790 * we're probably deadlocked */ 791 if (time_after(jiffies, jiffies_expire)) 792 return -EBUSY; 793 794 msleep(15); 795 if (udev->state == USB_STATE_NOTATTACHED) 796 return -ENODEV; 797 if (udev->state == USB_STATE_SUSPENDED) 798 return -EHOSTUNREACH; 799 if (iface && (iface->condition == USB_INTERFACE_UNBINDING || 800 iface->condition == USB_INTERFACE_UNBOUND)) 801 return -EINTR; 802 } 803 return 0; 804 } 805 EXPORT_SYMBOL_GPL(usb_lock_device_for_reset); 806 807 /** 808 * usb_get_current_frame_number - return current bus frame number 809 * @dev: the device whose bus is being queried 810 * 811 * Return: The current frame number for the USB host controller used 812 * with the given USB device. This can be used when scheduling 813 * isochronous requests. 814 * 815 * Note: Different kinds of host controller have different "scheduling 816 * horizons". While one type might support scheduling only 32 frames 817 * into the future, others could support scheduling up to 1024 frames 818 * into the future. 819 * 820 */ 821 int usb_get_current_frame_number(struct usb_device *dev) 822 { 823 return usb_hcd_get_frame_number(dev); 824 } 825 EXPORT_SYMBOL_GPL(usb_get_current_frame_number); 826 827 /*-------------------------------------------------------------------*/ 828 /* 829 * __usb_get_extra_descriptor() finds a descriptor of specific type in the 830 * extra field of the interface and endpoint descriptor structs. 831 */ 832 833 int __usb_get_extra_descriptor(char *buffer, unsigned size, 834 unsigned char type, void **ptr) 835 { 836 struct usb_descriptor_header *header; 837 838 while (size >= sizeof(struct usb_descriptor_header)) { 839 header = (struct usb_descriptor_header *)buffer; 840 841 if (header->bLength < 2) { 842 printk(KERN_ERR 843 "%s: bogus descriptor, type %d length %d\n", 844 usbcore_name, 845 header->bDescriptorType, 846 header->bLength); 847 return -1; 848 } 849 850 if (header->bDescriptorType == type) { 851 *ptr = header; 852 return 0; 853 } 854 855 buffer += header->bLength; 856 size -= header->bLength; 857 } 858 return -1; 859 } 860 EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor); 861 862 /** 863 * usb_alloc_coherent - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP 864 * @dev: device the buffer will be used with 865 * @size: requested buffer size 866 * @mem_flags: affect whether allocation may block 867 * @dma: used to return DMA address of buffer 868 * 869 * Return: Either null (indicating no buffer could be allocated), or the 870 * cpu-space pointer to a buffer that may be used to perform DMA to the 871 * specified device. Such cpu-space buffers are returned along with the DMA 872 * address (through the pointer provided). 873 * 874 * Note: 875 * These buffers are used with URB_NO_xxx_DMA_MAP set in urb->transfer_flags 876 * to avoid behaviors like using "DMA bounce buffers", or thrashing IOMMU 877 * hardware during URB completion/resubmit. The implementation varies between 878 * platforms, depending on details of how DMA will work to this device. 879 * Using these buffers also eliminates cacheline sharing problems on 880 * architectures where CPU caches are not DMA-coherent. On systems without 881 * bus-snooping caches, these buffers are uncached. 882 * 883 * When the buffer is no longer used, free it with usb_free_coherent(). 884 */ 885 void *usb_alloc_coherent(struct usb_device *dev, size_t size, gfp_t mem_flags, 886 dma_addr_t *dma) 887 { 888 if (!dev || !dev->bus) 889 return NULL; 890 return hcd_buffer_alloc(dev->bus, size, mem_flags, dma); 891 } 892 EXPORT_SYMBOL_GPL(usb_alloc_coherent); 893 894 /** 895 * usb_free_coherent - free memory allocated with usb_alloc_coherent() 896 * @dev: device the buffer was used with 897 * @size: requested buffer size 898 * @addr: CPU address of buffer 899 * @dma: DMA address of buffer 900 * 901 * This reclaims an I/O buffer, letting it be reused. The memory must have 902 * been allocated using usb_alloc_coherent(), and the parameters must match 903 * those provided in that allocation request. 904 */ 905 void usb_free_coherent(struct usb_device *dev, size_t size, void *addr, 906 dma_addr_t dma) 907 { 908 if (!dev || !dev->bus) 909 return; 910 if (!addr) 911 return; 912 hcd_buffer_free(dev->bus, size, addr, dma); 913 } 914 EXPORT_SYMBOL_GPL(usb_free_coherent); 915 916 /** 917 * usb_buffer_map - create DMA mapping(s) for an urb 918 * @urb: urb whose transfer_buffer/setup_packet will be mapped 919 * 920 * URB_NO_TRANSFER_DMA_MAP is added to urb->transfer_flags if the operation 921 * succeeds. If the device is connected to this system through a non-DMA 922 * controller, this operation always succeeds. 923 * 924 * This call would normally be used for an urb which is reused, perhaps 925 * as the target of a large periodic transfer, with usb_buffer_dmasync() 926 * calls to synchronize memory and dma state. 927 * 928 * Reverse the effect of this call with usb_buffer_unmap(). 929 * 930 * Return: Either %NULL (indicating no buffer could be mapped), or @urb. 931 * 932 */ 933 #if 0 934 struct urb *usb_buffer_map(struct urb *urb) 935 { 936 struct usb_bus *bus; 937 struct device *controller; 938 939 if (!urb 940 || !urb->dev 941 || !(bus = urb->dev->bus) 942 || !(controller = bus->sysdev)) 943 return NULL; 944 945 if (controller->dma_mask) { 946 urb->transfer_dma = dma_map_single(controller, 947 urb->transfer_buffer, urb->transfer_buffer_length, 948 usb_pipein(urb->pipe) 949 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 950 /* FIXME generic api broken like pci, can't report errors */ 951 /* if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; */ 952 } else 953 urb->transfer_dma = ~0; 954 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 955 return urb; 956 } 957 EXPORT_SYMBOL_GPL(usb_buffer_map); 958 #endif /* 0 */ 959 960 /* XXX DISABLED, no users currently. If you wish to re-enable this 961 * XXX please determine whether the sync is to transfer ownership of 962 * XXX the buffer from device to cpu or vice verse, and thusly use the 963 * XXX appropriate _for_{cpu,device}() method. -DaveM 964 */ 965 #if 0 966 967 /** 968 * usb_buffer_dmasync - synchronize DMA and CPU view of buffer(s) 969 * @urb: urb whose transfer_buffer/setup_packet will be synchronized 970 */ 971 void usb_buffer_dmasync(struct urb *urb) 972 { 973 struct usb_bus *bus; 974 struct device *controller; 975 976 if (!urb 977 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 978 || !urb->dev 979 || !(bus = urb->dev->bus) 980 || !(controller = bus->sysdev)) 981 return; 982 983 if (controller->dma_mask) { 984 dma_sync_single_for_cpu(controller, 985 urb->transfer_dma, urb->transfer_buffer_length, 986 usb_pipein(urb->pipe) 987 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 988 if (usb_pipecontrol(urb->pipe)) 989 dma_sync_single_for_cpu(controller, 990 urb->setup_dma, 991 sizeof(struct usb_ctrlrequest), 992 DMA_TO_DEVICE); 993 } 994 } 995 EXPORT_SYMBOL_GPL(usb_buffer_dmasync); 996 #endif 997 998 /** 999 * usb_buffer_unmap - free DMA mapping(s) for an urb 1000 * @urb: urb whose transfer_buffer will be unmapped 1001 * 1002 * Reverses the effect of usb_buffer_map(). 1003 */ 1004 #if 0 1005 void usb_buffer_unmap(struct urb *urb) 1006 { 1007 struct usb_bus *bus; 1008 struct device *controller; 1009 1010 if (!urb 1011 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 1012 || !urb->dev 1013 || !(bus = urb->dev->bus) 1014 || !(controller = bus->sysdev)) 1015 return; 1016 1017 if (controller->dma_mask) { 1018 dma_unmap_single(controller, 1019 urb->transfer_dma, urb->transfer_buffer_length, 1020 usb_pipein(urb->pipe) 1021 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1022 } 1023 urb->transfer_flags &= ~URB_NO_TRANSFER_DMA_MAP; 1024 } 1025 EXPORT_SYMBOL_GPL(usb_buffer_unmap); 1026 #endif /* 0 */ 1027 1028 #if 0 1029 /** 1030 * usb_buffer_map_sg - create scatterlist DMA mapping(s) for an endpoint 1031 * @dev: device to which the scatterlist will be mapped 1032 * @is_in: mapping transfer direction 1033 * @sg: the scatterlist to map 1034 * @nents: the number of entries in the scatterlist 1035 * 1036 * Return: Either < 0 (indicating no buffers could be mapped), or the 1037 * number of DMA mapping array entries in the scatterlist. 1038 * 1039 * Note: 1040 * The caller is responsible for placing the resulting DMA addresses from 1041 * the scatterlist into URB transfer buffer pointers, and for setting the 1042 * URB_NO_TRANSFER_DMA_MAP transfer flag in each of those URBs. 1043 * 1044 * Top I/O rates come from queuing URBs, instead of waiting for each one 1045 * to complete before starting the next I/O. This is particularly easy 1046 * to do with scatterlists. Just allocate and submit one URB for each DMA 1047 * mapping entry returned, stopping on the first error or when all succeed. 1048 * Better yet, use the usb_sg_*() calls, which do that (and more) for you. 1049 * 1050 * This call would normally be used when translating scatterlist requests, 1051 * rather than usb_buffer_map(), since on some hardware (with IOMMUs) it 1052 * may be able to coalesce mappings for improved I/O efficiency. 1053 * 1054 * Reverse the effect of this call with usb_buffer_unmap_sg(). 1055 */ 1056 int usb_buffer_map_sg(const struct usb_device *dev, int is_in, 1057 struct scatterlist *sg, int nents) 1058 { 1059 struct usb_bus *bus; 1060 struct device *controller; 1061 1062 if (!dev 1063 || !(bus = dev->bus) 1064 || !(controller = bus->sysdev) 1065 || !controller->dma_mask) 1066 return -EINVAL; 1067 1068 /* FIXME generic api broken like pci, can't report errors */ 1069 return dma_map_sg(controller, sg, nents, 1070 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE) ? : -ENOMEM; 1071 } 1072 EXPORT_SYMBOL_GPL(usb_buffer_map_sg); 1073 #endif 1074 1075 /* XXX DISABLED, no users currently. If you wish to re-enable this 1076 * XXX please determine whether the sync is to transfer ownership of 1077 * XXX the buffer from device to cpu or vice verse, and thusly use the 1078 * XXX appropriate _for_{cpu,device}() method. -DaveM 1079 */ 1080 #if 0 1081 1082 /** 1083 * usb_buffer_dmasync_sg - synchronize DMA and CPU view of scatterlist buffer(s) 1084 * @dev: device to which the scatterlist will be mapped 1085 * @is_in: mapping transfer direction 1086 * @sg: the scatterlist to synchronize 1087 * @n_hw_ents: the positive return value from usb_buffer_map_sg 1088 * 1089 * Use this when you are re-using a scatterlist's data buffers for 1090 * another USB request. 1091 */ 1092 void usb_buffer_dmasync_sg(const struct usb_device *dev, int is_in, 1093 struct scatterlist *sg, int n_hw_ents) 1094 { 1095 struct usb_bus *bus; 1096 struct device *controller; 1097 1098 if (!dev 1099 || !(bus = dev->bus) 1100 || !(controller = bus->sysdev) 1101 || !controller->dma_mask) 1102 return; 1103 1104 dma_sync_sg_for_cpu(controller, sg, n_hw_ents, 1105 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1106 } 1107 EXPORT_SYMBOL_GPL(usb_buffer_dmasync_sg); 1108 #endif 1109 1110 #if 0 1111 /** 1112 * usb_buffer_unmap_sg - free DMA mapping(s) for a scatterlist 1113 * @dev: device to which the scatterlist will be mapped 1114 * @is_in: mapping transfer direction 1115 * @sg: the scatterlist to unmap 1116 * @n_hw_ents: the positive return value from usb_buffer_map_sg 1117 * 1118 * Reverses the effect of usb_buffer_map_sg(). 1119 */ 1120 void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, 1121 struct scatterlist *sg, int n_hw_ents) 1122 { 1123 struct usb_bus *bus; 1124 struct device *controller; 1125 1126 if (!dev 1127 || !(bus = dev->bus) 1128 || !(controller = bus->sysdev) 1129 || !controller->dma_mask) 1130 return; 1131 1132 dma_unmap_sg(controller, sg, n_hw_ents, 1133 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1134 } 1135 EXPORT_SYMBOL_GPL(usb_buffer_unmap_sg); 1136 #endif 1137 1138 /* 1139 * Notifications of device and interface registration 1140 */ 1141 static int usb_bus_notify(struct notifier_block *nb, unsigned long action, 1142 void *data) 1143 { 1144 struct device *dev = data; 1145 1146 switch (action) { 1147 case BUS_NOTIFY_ADD_DEVICE: 1148 if (dev->type == &usb_device_type) 1149 (void) usb_create_sysfs_dev_files(to_usb_device(dev)); 1150 else if (dev->type == &usb_if_device_type) 1151 usb_create_sysfs_intf_files(to_usb_interface(dev)); 1152 break; 1153 1154 case BUS_NOTIFY_DEL_DEVICE: 1155 if (dev->type == &usb_device_type) 1156 usb_remove_sysfs_dev_files(to_usb_device(dev)); 1157 else if (dev->type == &usb_if_device_type) 1158 usb_remove_sysfs_intf_files(to_usb_interface(dev)); 1159 break; 1160 } 1161 return 0; 1162 } 1163 1164 static struct notifier_block usb_bus_nb = { 1165 .notifier_call = usb_bus_notify, 1166 }; 1167 1168 struct dentry *usb_debug_root; 1169 EXPORT_SYMBOL_GPL(usb_debug_root); 1170 1171 static struct dentry *usb_debug_devices; 1172 1173 static int usb_debugfs_init(void) 1174 { 1175 usb_debug_root = debugfs_create_dir("usb", NULL); 1176 if (!usb_debug_root) 1177 return -ENOENT; 1178 1179 usb_debug_devices = debugfs_create_file("devices", 0444, 1180 usb_debug_root, NULL, 1181 &usbfs_devices_fops); 1182 if (!usb_debug_devices) { 1183 debugfs_remove(usb_debug_root); 1184 usb_debug_root = NULL; 1185 return -ENOENT; 1186 } 1187 1188 return 0; 1189 } 1190 1191 static void usb_debugfs_cleanup(void) 1192 { 1193 debugfs_remove(usb_debug_devices); 1194 debugfs_remove(usb_debug_root); 1195 } 1196 1197 /* 1198 * Init 1199 */ 1200 static int __init usb_init(void) 1201 { 1202 int retval; 1203 if (usb_disabled()) { 1204 pr_info("%s: USB support disabled\n", usbcore_name); 1205 return 0; 1206 } 1207 usb_init_pool_max(); 1208 1209 retval = usb_debugfs_init(); 1210 if (retval) 1211 goto out; 1212 1213 usb_acpi_register(); 1214 retval = bus_register(&usb_bus_type); 1215 if (retval) 1216 goto bus_register_failed; 1217 retval = bus_register_notifier(&usb_bus_type, &usb_bus_nb); 1218 if (retval) 1219 goto bus_notifier_failed; 1220 retval = usb_major_init(); 1221 if (retval) 1222 goto major_init_failed; 1223 retval = usb_register(&usbfs_driver); 1224 if (retval) 1225 goto driver_register_failed; 1226 retval = usb_devio_init(); 1227 if (retval) 1228 goto usb_devio_init_failed; 1229 retval = usb_hub_init(); 1230 if (retval) 1231 goto hub_init_failed; 1232 retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE); 1233 if (!retval) 1234 goto out; 1235 1236 usb_hub_cleanup(); 1237 hub_init_failed: 1238 usb_devio_cleanup(); 1239 usb_devio_init_failed: 1240 usb_deregister(&usbfs_driver); 1241 driver_register_failed: 1242 usb_major_cleanup(); 1243 major_init_failed: 1244 bus_unregister_notifier(&usb_bus_type, &usb_bus_nb); 1245 bus_notifier_failed: 1246 bus_unregister(&usb_bus_type); 1247 bus_register_failed: 1248 usb_acpi_unregister(); 1249 usb_debugfs_cleanup(); 1250 out: 1251 return retval; 1252 } 1253 1254 /* 1255 * Cleanup 1256 */ 1257 static void __exit usb_exit(void) 1258 { 1259 /* This will matter if shutdown/reboot does exitcalls. */ 1260 if (usb_disabled()) 1261 return; 1262 1263 usb_deregister_device_driver(&usb_generic_driver); 1264 usb_major_cleanup(); 1265 usb_deregister(&usbfs_driver); 1266 usb_devio_cleanup(); 1267 usb_hub_cleanup(); 1268 bus_unregister_notifier(&usb_bus_type, &usb_bus_nb); 1269 bus_unregister(&usb_bus_type); 1270 usb_acpi_unregister(); 1271 usb_debugfs_cleanup(); 1272 idr_destroy(&usb_bus_idr); 1273 } 1274 1275 subsys_initcall(usb_init); 1276 module_exit(usb_exit); 1277 MODULE_LICENSE("GPL"); 1278