1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * drivers/usb/core/usb.c 4 * 5 * (C) Copyright Linus Torvalds 1999 6 * (C) Copyright Johannes Erdfelt 1999-2001 7 * (C) Copyright Andreas Gal 1999 8 * (C) Copyright Gregory P. Smith 1999 9 * (C) Copyright Deti Fliegl 1999 (new USB architecture) 10 * (C) Copyright Randy Dunlap 2000 11 * (C) Copyright David Brownell 2000-2004 12 * (C) Copyright Yggdrasil Computing, Inc. 2000 13 * (usb_device_id matching changes by Adam J. Richter) 14 * (C) Copyright Greg Kroah-Hartman 2002-2003 15 * 16 * Released under the GPLv2 only. 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_device_node(parent, raw_port); 649 650 /* hub driver sets up TT records */ 651 } 652 653 dev->portnum = port1; 654 dev->bus = bus; 655 dev->parent = parent; 656 INIT_LIST_HEAD(&dev->filelist); 657 658 #ifdef CONFIG_PM 659 pm_runtime_set_autosuspend_delay(&dev->dev, 660 usb_autosuspend_delay * 1000); 661 dev->connect_time = jiffies; 662 dev->active_duration = -jiffies; 663 #endif 664 if (root_hub) /* Root hub always ok [and always wired] */ 665 dev->authorized = 1; 666 else { 667 dev->authorized = !!HCD_DEV_AUTHORIZED(usb_hcd); 668 dev->wusb = usb_bus_is_wusb(bus) ? 1 : 0; 669 } 670 return dev; 671 } 672 EXPORT_SYMBOL_GPL(usb_alloc_dev); 673 674 /** 675 * usb_get_dev - increments the reference count of the usb device structure 676 * @dev: the device being referenced 677 * 678 * Each live reference to a device should be refcounted. 679 * 680 * Drivers for USB interfaces should normally record such references in 681 * their probe() methods, when they bind to an interface, and release 682 * them by calling usb_put_dev(), in their disconnect() methods. 683 * 684 * Return: A pointer to the device with the incremented reference counter. 685 */ 686 struct usb_device *usb_get_dev(struct usb_device *dev) 687 { 688 if (dev) 689 get_device(&dev->dev); 690 return dev; 691 } 692 EXPORT_SYMBOL_GPL(usb_get_dev); 693 694 /** 695 * usb_put_dev - release a use of the usb device structure 696 * @dev: device that's been disconnected 697 * 698 * Must be called when a user of a device is finished with it. When the last 699 * user of the device calls this function, the memory of the device is freed. 700 */ 701 void usb_put_dev(struct usb_device *dev) 702 { 703 if (dev) 704 put_device(&dev->dev); 705 } 706 EXPORT_SYMBOL_GPL(usb_put_dev); 707 708 /** 709 * usb_get_intf - increments the reference count of the usb interface structure 710 * @intf: the interface being referenced 711 * 712 * Each live reference to a interface must be refcounted. 713 * 714 * Drivers for USB interfaces should normally record such references in 715 * their probe() methods, when they bind to an interface, and release 716 * them by calling usb_put_intf(), in their disconnect() methods. 717 * 718 * Return: A pointer to the interface with the incremented reference counter. 719 */ 720 struct usb_interface *usb_get_intf(struct usb_interface *intf) 721 { 722 if (intf) 723 get_device(&intf->dev); 724 return intf; 725 } 726 EXPORT_SYMBOL_GPL(usb_get_intf); 727 728 /** 729 * usb_put_intf - release a use of the usb interface structure 730 * @intf: interface that's been decremented 731 * 732 * Must be called when a user of an interface is finished with it. When the 733 * last user of the interface calls this function, the memory of the interface 734 * is freed. 735 */ 736 void usb_put_intf(struct usb_interface *intf) 737 { 738 if (intf) 739 put_device(&intf->dev); 740 } 741 EXPORT_SYMBOL_GPL(usb_put_intf); 742 743 /* USB device locking 744 * 745 * USB devices and interfaces are locked using the semaphore in their 746 * embedded struct device. The hub driver guarantees that whenever a 747 * device is connected or disconnected, drivers are called with the 748 * USB device locked as well as their particular interface. 749 * 750 * Complications arise when several devices are to be locked at the same 751 * time. Only hub-aware drivers that are part of usbcore ever have to 752 * do this; nobody else needs to worry about it. The rule for locking 753 * is simple: 754 * 755 * When locking both a device and its parent, always lock the 756 * the parent first. 757 */ 758 759 /** 760 * usb_lock_device_for_reset - cautiously acquire the lock for a usb device structure 761 * @udev: device that's being locked 762 * @iface: interface bound to the driver making the request (optional) 763 * 764 * Attempts to acquire the device lock, but fails if the device is 765 * NOTATTACHED or SUSPENDED, or if iface is specified and the interface 766 * is neither BINDING nor BOUND. Rather than sleeping to wait for the 767 * lock, the routine polls repeatedly. This is to prevent deadlock with 768 * disconnect; in some drivers (such as usb-storage) the disconnect() 769 * or suspend() method will block waiting for a device reset to complete. 770 * 771 * Return: A negative error code for failure, otherwise 0. 772 */ 773 int usb_lock_device_for_reset(struct usb_device *udev, 774 const struct usb_interface *iface) 775 { 776 unsigned long jiffies_expire = jiffies + HZ; 777 778 if (udev->state == USB_STATE_NOTATTACHED) 779 return -ENODEV; 780 if (udev->state == USB_STATE_SUSPENDED) 781 return -EHOSTUNREACH; 782 if (iface && (iface->condition == USB_INTERFACE_UNBINDING || 783 iface->condition == USB_INTERFACE_UNBOUND)) 784 return -EINTR; 785 786 while (!usb_trylock_device(udev)) { 787 788 /* If we can't acquire the lock after waiting one second, 789 * we're probably deadlocked */ 790 if (time_after(jiffies, jiffies_expire)) 791 return -EBUSY; 792 793 msleep(15); 794 if (udev->state == USB_STATE_NOTATTACHED) 795 return -ENODEV; 796 if (udev->state == USB_STATE_SUSPENDED) 797 return -EHOSTUNREACH; 798 if (iface && (iface->condition == USB_INTERFACE_UNBINDING || 799 iface->condition == USB_INTERFACE_UNBOUND)) 800 return -EINTR; 801 } 802 return 0; 803 } 804 EXPORT_SYMBOL_GPL(usb_lock_device_for_reset); 805 806 /** 807 * usb_get_current_frame_number - return current bus frame number 808 * @dev: the device whose bus is being queried 809 * 810 * Return: The current frame number for the USB host controller used 811 * with the given USB device. This can be used when scheduling 812 * isochronous requests. 813 * 814 * Note: Different kinds of host controller have different "scheduling 815 * horizons". While one type might support scheduling only 32 frames 816 * into the future, others could support scheduling up to 1024 frames 817 * into the future. 818 * 819 */ 820 int usb_get_current_frame_number(struct usb_device *dev) 821 { 822 return usb_hcd_get_frame_number(dev); 823 } 824 EXPORT_SYMBOL_GPL(usb_get_current_frame_number); 825 826 /*-------------------------------------------------------------------*/ 827 /* 828 * __usb_get_extra_descriptor() finds a descriptor of specific type in the 829 * extra field of the interface and endpoint descriptor structs. 830 */ 831 832 int __usb_get_extra_descriptor(char *buffer, unsigned size, 833 unsigned char type, void **ptr) 834 { 835 struct usb_descriptor_header *header; 836 837 while (size >= sizeof(struct usb_descriptor_header)) { 838 header = (struct usb_descriptor_header *)buffer; 839 840 if (header->bLength < 2) { 841 printk(KERN_ERR 842 "%s: bogus descriptor, type %d length %d\n", 843 usbcore_name, 844 header->bDescriptorType, 845 header->bLength); 846 return -1; 847 } 848 849 if (header->bDescriptorType == type) { 850 *ptr = header; 851 return 0; 852 } 853 854 buffer += header->bLength; 855 size -= header->bLength; 856 } 857 return -1; 858 } 859 EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor); 860 861 /** 862 * usb_alloc_coherent - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP 863 * @dev: device the buffer will be used with 864 * @size: requested buffer size 865 * @mem_flags: affect whether allocation may block 866 * @dma: used to return DMA address of buffer 867 * 868 * Return: Either null (indicating no buffer could be allocated), or the 869 * cpu-space pointer to a buffer that may be used to perform DMA to the 870 * specified device. Such cpu-space buffers are returned along with the DMA 871 * address (through the pointer provided). 872 * 873 * Note: 874 * These buffers are used with URB_NO_xxx_DMA_MAP set in urb->transfer_flags 875 * to avoid behaviors like using "DMA bounce buffers", or thrashing IOMMU 876 * hardware during URB completion/resubmit. The implementation varies between 877 * platforms, depending on details of how DMA will work to this device. 878 * Using these buffers also eliminates cacheline sharing problems on 879 * architectures where CPU caches are not DMA-coherent. On systems without 880 * bus-snooping caches, these buffers are uncached. 881 * 882 * When the buffer is no longer used, free it with usb_free_coherent(). 883 */ 884 void *usb_alloc_coherent(struct usb_device *dev, size_t size, gfp_t mem_flags, 885 dma_addr_t *dma) 886 { 887 if (!dev || !dev->bus) 888 return NULL; 889 return hcd_buffer_alloc(dev->bus, size, mem_flags, dma); 890 } 891 EXPORT_SYMBOL_GPL(usb_alloc_coherent); 892 893 /** 894 * usb_free_coherent - free memory allocated with usb_alloc_coherent() 895 * @dev: device the buffer was used with 896 * @size: requested buffer size 897 * @addr: CPU address of buffer 898 * @dma: DMA address of buffer 899 * 900 * This reclaims an I/O buffer, letting it be reused. The memory must have 901 * been allocated using usb_alloc_coherent(), and the parameters must match 902 * those provided in that allocation request. 903 */ 904 void usb_free_coherent(struct usb_device *dev, size_t size, void *addr, 905 dma_addr_t dma) 906 { 907 if (!dev || !dev->bus) 908 return; 909 if (!addr) 910 return; 911 hcd_buffer_free(dev->bus, size, addr, dma); 912 } 913 EXPORT_SYMBOL_GPL(usb_free_coherent); 914 915 /** 916 * usb_buffer_map - create DMA mapping(s) for an urb 917 * @urb: urb whose transfer_buffer/setup_packet will be mapped 918 * 919 * URB_NO_TRANSFER_DMA_MAP is added to urb->transfer_flags if the operation 920 * succeeds. If the device is connected to this system through a non-DMA 921 * controller, this operation always succeeds. 922 * 923 * This call would normally be used for an urb which is reused, perhaps 924 * as the target of a large periodic transfer, with usb_buffer_dmasync() 925 * calls to synchronize memory and dma state. 926 * 927 * Reverse the effect of this call with usb_buffer_unmap(). 928 * 929 * Return: Either %NULL (indicating no buffer could be mapped), or @urb. 930 * 931 */ 932 #if 0 933 struct urb *usb_buffer_map(struct urb *urb) 934 { 935 struct usb_bus *bus; 936 struct device *controller; 937 938 if (!urb 939 || !urb->dev 940 || !(bus = urb->dev->bus) 941 || !(controller = bus->sysdev)) 942 return NULL; 943 944 if (controller->dma_mask) { 945 urb->transfer_dma = dma_map_single(controller, 946 urb->transfer_buffer, urb->transfer_buffer_length, 947 usb_pipein(urb->pipe) 948 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 949 /* FIXME generic api broken like pci, can't report errors */ 950 /* if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; */ 951 } else 952 urb->transfer_dma = ~0; 953 urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; 954 return urb; 955 } 956 EXPORT_SYMBOL_GPL(usb_buffer_map); 957 #endif /* 0 */ 958 959 /* XXX DISABLED, no users currently. If you wish to re-enable this 960 * XXX please determine whether the sync is to transfer ownership of 961 * XXX the buffer from device to cpu or vice verse, and thusly use the 962 * XXX appropriate _for_{cpu,device}() method. -DaveM 963 */ 964 #if 0 965 966 /** 967 * usb_buffer_dmasync - synchronize DMA and CPU view of buffer(s) 968 * @urb: urb whose transfer_buffer/setup_packet will be synchronized 969 */ 970 void usb_buffer_dmasync(struct urb *urb) 971 { 972 struct usb_bus *bus; 973 struct device *controller; 974 975 if (!urb 976 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 977 || !urb->dev 978 || !(bus = urb->dev->bus) 979 || !(controller = bus->sysdev)) 980 return; 981 982 if (controller->dma_mask) { 983 dma_sync_single_for_cpu(controller, 984 urb->transfer_dma, urb->transfer_buffer_length, 985 usb_pipein(urb->pipe) 986 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 987 if (usb_pipecontrol(urb->pipe)) 988 dma_sync_single_for_cpu(controller, 989 urb->setup_dma, 990 sizeof(struct usb_ctrlrequest), 991 DMA_TO_DEVICE); 992 } 993 } 994 EXPORT_SYMBOL_GPL(usb_buffer_dmasync); 995 #endif 996 997 /** 998 * usb_buffer_unmap - free DMA mapping(s) for an urb 999 * @urb: urb whose transfer_buffer will be unmapped 1000 * 1001 * Reverses the effect of usb_buffer_map(). 1002 */ 1003 #if 0 1004 void usb_buffer_unmap(struct urb *urb) 1005 { 1006 struct usb_bus *bus; 1007 struct device *controller; 1008 1009 if (!urb 1010 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 1011 || !urb->dev 1012 || !(bus = urb->dev->bus) 1013 || !(controller = bus->sysdev)) 1014 return; 1015 1016 if (controller->dma_mask) { 1017 dma_unmap_single(controller, 1018 urb->transfer_dma, urb->transfer_buffer_length, 1019 usb_pipein(urb->pipe) 1020 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1021 } 1022 urb->transfer_flags &= ~URB_NO_TRANSFER_DMA_MAP; 1023 } 1024 EXPORT_SYMBOL_GPL(usb_buffer_unmap); 1025 #endif /* 0 */ 1026 1027 #if 0 1028 /** 1029 * usb_buffer_map_sg - create scatterlist DMA mapping(s) for an endpoint 1030 * @dev: device to which the scatterlist will be mapped 1031 * @is_in: mapping transfer direction 1032 * @sg: the scatterlist to map 1033 * @nents: the number of entries in the scatterlist 1034 * 1035 * Return: Either < 0 (indicating no buffers could be mapped), or the 1036 * number of DMA mapping array entries in the scatterlist. 1037 * 1038 * Note: 1039 * The caller is responsible for placing the resulting DMA addresses from 1040 * the scatterlist into URB transfer buffer pointers, and for setting the 1041 * URB_NO_TRANSFER_DMA_MAP transfer flag in each of those URBs. 1042 * 1043 * Top I/O rates come from queuing URBs, instead of waiting for each one 1044 * to complete before starting the next I/O. This is particularly easy 1045 * to do with scatterlists. Just allocate and submit one URB for each DMA 1046 * mapping entry returned, stopping on the first error or when all succeed. 1047 * Better yet, use the usb_sg_*() calls, which do that (and more) for you. 1048 * 1049 * This call would normally be used when translating scatterlist requests, 1050 * rather than usb_buffer_map(), since on some hardware (with IOMMUs) it 1051 * may be able to coalesce mappings for improved I/O efficiency. 1052 * 1053 * Reverse the effect of this call with usb_buffer_unmap_sg(). 1054 */ 1055 int usb_buffer_map_sg(const struct usb_device *dev, int is_in, 1056 struct scatterlist *sg, int nents) 1057 { 1058 struct usb_bus *bus; 1059 struct device *controller; 1060 1061 if (!dev 1062 || !(bus = dev->bus) 1063 || !(controller = bus->sysdev) 1064 || !controller->dma_mask) 1065 return -EINVAL; 1066 1067 /* FIXME generic api broken like pci, can't report errors */ 1068 return dma_map_sg(controller, sg, nents, 1069 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE) ? : -ENOMEM; 1070 } 1071 EXPORT_SYMBOL_GPL(usb_buffer_map_sg); 1072 #endif 1073 1074 /* XXX DISABLED, no users currently. If you wish to re-enable this 1075 * XXX please determine whether the sync is to transfer ownership of 1076 * XXX the buffer from device to cpu or vice verse, and thusly use the 1077 * XXX appropriate _for_{cpu,device}() method. -DaveM 1078 */ 1079 #if 0 1080 1081 /** 1082 * usb_buffer_dmasync_sg - synchronize DMA and CPU view of scatterlist buffer(s) 1083 * @dev: device to which the scatterlist will be mapped 1084 * @is_in: mapping transfer direction 1085 * @sg: the scatterlist to synchronize 1086 * @n_hw_ents: the positive return value from usb_buffer_map_sg 1087 * 1088 * Use this when you are re-using a scatterlist's data buffers for 1089 * another USB request. 1090 */ 1091 void usb_buffer_dmasync_sg(const struct usb_device *dev, int is_in, 1092 struct scatterlist *sg, int n_hw_ents) 1093 { 1094 struct usb_bus *bus; 1095 struct device *controller; 1096 1097 if (!dev 1098 || !(bus = dev->bus) 1099 || !(controller = bus->sysdev) 1100 || !controller->dma_mask) 1101 return; 1102 1103 dma_sync_sg_for_cpu(controller, sg, n_hw_ents, 1104 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1105 } 1106 EXPORT_SYMBOL_GPL(usb_buffer_dmasync_sg); 1107 #endif 1108 1109 #if 0 1110 /** 1111 * usb_buffer_unmap_sg - free DMA mapping(s) for a scatterlist 1112 * @dev: device to which the scatterlist will be mapped 1113 * @is_in: mapping transfer direction 1114 * @sg: the scatterlist to unmap 1115 * @n_hw_ents: the positive return value from usb_buffer_map_sg 1116 * 1117 * Reverses the effect of usb_buffer_map_sg(). 1118 */ 1119 void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in, 1120 struct scatterlist *sg, int n_hw_ents) 1121 { 1122 struct usb_bus *bus; 1123 struct device *controller; 1124 1125 if (!dev 1126 || !(bus = dev->bus) 1127 || !(controller = bus->sysdev) 1128 || !controller->dma_mask) 1129 return; 1130 1131 dma_unmap_sg(controller, sg, n_hw_ents, 1132 is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 1133 } 1134 EXPORT_SYMBOL_GPL(usb_buffer_unmap_sg); 1135 #endif 1136 1137 /* 1138 * Notifications of device and interface registration 1139 */ 1140 static int usb_bus_notify(struct notifier_block *nb, unsigned long action, 1141 void *data) 1142 { 1143 struct device *dev = data; 1144 1145 switch (action) { 1146 case BUS_NOTIFY_ADD_DEVICE: 1147 if (dev->type == &usb_device_type) 1148 (void) usb_create_sysfs_dev_files(to_usb_device(dev)); 1149 else if (dev->type == &usb_if_device_type) 1150 usb_create_sysfs_intf_files(to_usb_interface(dev)); 1151 break; 1152 1153 case BUS_NOTIFY_DEL_DEVICE: 1154 if (dev->type == &usb_device_type) 1155 usb_remove_sysfs_dev_files(to_usb_device(dev)); 1156 else if (dev->type == &usb_if_device_type) 1157 usb_remove_sysfs_intf_files(to_usb_interface(dev)); 1158 break; 1159 } 1160 return 0; 1161 } 1162 1163 static struct notifier_block usb_bus_nb = { 1164 .notifier_call = usb_bus_notify, 1165 }; 1166 1167 struct dentry *usb_debug_root; 1168 EXPORT_SYMBOL_GPL(usb_debug_root); 1169 1170 static struct dentry *usb_debug_devices; 1171 1172 static int usb_debugfs_init(void) 1173 { 1174 usb_debug_root = debugfs_create_dir("usb", NULL); 1175 if (!usb_debug_root) 1176 return -ENOENT; 1177 1178 usb_debug_devices = debugfs_create_file("devices", 0444, 1179 usb_debug_root, NULL, 1180 &usbfs_devices_fops); 1181 if (!usb_debug_devices) { 1182 debugfs_remove(usb_debug_root); 1183 usb_debug_root = NULL; 1184 return -ENOENT; 1185 } 1186 1187 return 0; 1188 } 1189 1190 static void usb_debugfs_cleanup(void) 1191 { 1192 debugfs_remove(usb_debug_devices); 1193 debugfs_remove(usb_debug_root); 1194 } 1195 1196 /* 1197 * Init 1198 */ 1199 static int __init usb_init(void) 1200 { 1201 int retval; 1202 if (usb_disabled()) { 1203 pr_info("%s: USB support disabled\n", usbcore_name); 1204 return 0; 1205 } 1206 usb_init_pool_max(); 1207 1208 retval = usb_debugfs_init(); 1209 if (retval) 1210 goto out; 1211 1212 usb_acpi_register(); 1213 retval = bus_register(&usb_bus_type); 1214 if (retval) 1215 goto bus_register_failed; 1216 retval = bus_register_notifier(&usb_bus_type, &usb_bus_nb); 1217 if (retval) 1218 goto bus_notifier_failed; 1219 retval = usb_major_init(); 1220 if (retval) 1221 goto major_init_failed; 1222 retval = usb_register(&usbfs_driver); 1223 if (retval) 1224 goto driver_register_failed; 1225 retval = usb_devio_init(); 1226 if (retval) 1227 goto usb_devio_init_failed; 1228 retval = usb_hub_init(); 1229 if (retval) 1230 goto hub_init_failed; 1231 retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE); 1232 if (!retval) 1233 goto out; 1234 1235 usb_hub_cleanup(); 1236 hub_init_failed: 1237 usb_devio_cleanup(); 1238 usb_devio_init_failed: 1239 usb_deregister(&usbfs_driver); 1240 driver_register_failed: 1241 usb_major_cleanup(); 1242 major_init_failed: 1243 bus_unregister_notifier(&usb_bus_type, &usb_bus_nb); 1244 bus_notifier_failed: 1245 bus_unregister(&usb_bus_type); 1246 bus_register_failed: 1247 usb_acpi_unregister(); 1248 usb_debugfs_cleanup(); 1249 out: 1250 return retval; 1251 } 1252 1253 /* 1254 * Cleanup 1255 */ 1256 static void __exit usb_exit(void) 1257 { 1258 /* This will matter if shutdown/reboot does exitcalls. */ 1259 if (usb_disabled()) 1260 return; 1261 1262 usb_deregister_device_driver(&usb_generic_driver); 1263 usb_major_cleanup(); 1264 usb_deregister(&usbfs_driver); 1265 usb_devio_cleanup(); 1266 usb_hub_cleanup(); 1267 bus_unregister_notifier(&usb_bus_type, &usb_bus_nb); 1268 bus_unregister(&usb_bus_type); 1269 usb_acpi_unregister(); 1270 usb_debugfs_cleanup(); 1271 idr_destroy(&usb_bus_idr); 1272 } 1273 1274 subsys_initcall(usb_init); 1275 module_exit(usb_exit); 1276 MODULE_LICENSE("GPL"); 1277