1 /* 2 * drivers/usb/driver.c - most of the driver model stuff for usb 3 * 4 * (C) Copyright 2005 Greg Kroah-Hartman <gregkh@suse.de> 5 * 6 * based on drivers/usb/usb.c which had the following copyrights: 7 * (C) Copyright Linus Torvalds 1999 8 * (C) Copyright Johannes Erdfelt 1999-2001 9 * (C) Copyright Andreas Gal 1999 10 * (C) Copyright Gregory P. Smith 1999 11 * (C) Copyright Deti Fliegl 1999 (new USB architecture) 12 * (C) Copyright Randy Dunlap 2000 13 * (C) Copyright David Brownell 2000-2004 14 * (C) Copyright Yggdrasil Computing, Inc. 2000 15 * (usb_device_id matching changes by Adam J. Richter) 16 * (C) Copyright Greg Kroah-Hartman 2002-2003 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 * matching, probing, releasing, suspending and resuming for 21 * real drivers. 22 * 23 */ 24 25 #include <linux/device.h> 26 #include <linux/usb.h> 27 #include <linux/usb/quirks.h> 28 #include <linux/workqueue.h> 29 #include "hcd.h" 30 #include "usb.h" 31 32 #define VERBOSE_DEBUG 0 33 34 #if VERBOSE_DEBUG 35 #define dev_vdbg dev_dbg 36 #else 37 #define dev_vdbg(dev, fmt, args...) do { } while (0) 38 #endif 39 40 #ifdef CONFIG_HOTPLUG 41 42 /* 43 * Adds a new dynamic USBdevice ID to this driver, 44 * and cause the driver to probe for all devices again. 45 */ 46 ssize_t usb_store_new_id(struct usb_dynids *dynids, 47 struct device_driver *driver, 48 const char *buf, size_t count) 49 { 50 struct usb_dynid *dynid; 51 u32 idVendor = 0; 52 u32 idProduct = 0; 53 int fields = 0; 54 int retval = 0; 55 56 fields = sscanf(buf, "%x %x", &idVendor, &idProduct); 57 if (fields < 2) 58 return -EINVAL; 59 60 dynid = kzalloc(sizeof(*dynid), GFP_KERNEL); 61 if (!dynid) 62 return -ENOMEM; 63 64 INIT_LIST_HEAD(&dynid->node); 65 dynid->id.idVendor = idVendor; 66 dynid->id.idProduct = idProduct; 67 dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE; 68 69 spin_lock(&dynids->lock); 70 list_add_tail(&dynids->list, &dynid->node); 71 spin_unlock(&dynids->lock); 72 73 if (get_driver(driver)) { 74 retval = driver_attach(driver); 75 put_driver(driver); 76 } 77 78 if (retval) 79 return retval; 80 return count; 81 } 82 EXPORT_SYMBOL_GPL(usb_store_new_id); 83 84 static ssize_t store_new_id(struct device_driver *driver, 85 const char *buf, size_t count) 86 { 87 struct usb_driver *usb_drv = to_usb_driver(driver); 88 89 return usb_store_new_id(&usb_drv->dynids, driver, buf, count); 90 } 91 static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); 92 93 static int usb_create_newid_file(struct usb_driver *usb_drv) 94 { 95 int error = 0; 96 97 if (usb_drv->no_dynamic_id) 98 goto exit; 99 100 if (usb_drv->probe != NULL) 101 error = sysfs_create_file(&usb_drv->drvwrap.driver.kobj, 102 &driver_attr_new_id.attr); 103 exit: 104 return error; 105 } 106 107 static void usb_remove_newid_file(struct usb_driver *usb_drv) 108 { 109 if (usb_drv->no_dynamic_id) 110 return; 111 112 if (usb_drv->probe != NULL) 113 sysfs_remove_file(&usb_drv->drvwrap.driver.kobj, 114 &driver_attr_new_id.attr); 115 } 116 117 static void usb_free_dynids(struct usb_driver *usb_drv) 118 { 119 struct usb_dynid *dynid, *n; 120 121 spin_lock(&usb_drv->dynids.lock); 122 list_for_each_entry_safe(dynid, n, &usb_drv->dynids.list, node) { 123 list_del(&dynid->node); 124 kfree(dynid); 125 } 126 spin_unlock(&usb_drv->dynids.lock); 127 } 128 #else 129 static inline int usb_create_newid_file(struct usb_driver *usb_drv) 130 { 131 return 0; 132 } 133 134 static void usb_remove_newid_file(struct usb_driver *usb_drv) 135 { 136 } 137 138 static inline void usb_free_dynids(struct usb_driver *usb_drv) 139 { 140 } 141 #endif 142 143 static const struct usb_device_id *usb_match_dynamic_id(struct usb_interface *intf, 144 struct usb_driver *drv) 145 { 146 struct usb_dynid *dynid; 147 148 spin_lock(&drv->dynids.lock); 149 list_for_each_entry(dynid, &drv->dynids.list, node) { 150 if (usb_match_one_id(intf, &dynid->id)) { 151 spin_unlock(&drv->dynids.lock); 152 return &dynid->id; 153 } 154 } 155 spin_unlock(&drv->dynids.lock); 156 return NULL; 157 } 158 159 160 /* called from driver core with dev locked */ 161 static int usb_probe_device(struct device *dev) 162 { 163 struct usb_device_driver *udriver = to_usb_device_driver(dev->driver); 164 struct usb_device *udev; 165 int error = -ENODEV; 166 167 dev_dbg(dev, "%s\n", __FUNCTION__); 168 169 if (!is_usb_device(dev)) /* Sanity check */ 170 return error; 171 172 udev = to_usb_device(dev); 173 174 /* TODO: Add real matching code */ 175 176 /* The device should always appear to be in use 177 * unless the driver suports autosuspend. 178 */ 179 udev->pm_usage_cnt = !(udriver->supports_autosuspend); 180 181 error = udriver->probe(udev); 182 return error; 183 } 184 185 /* called from driver core with dev locked */ 186 static int usb_unbind_device(struct device *dev) 187 { 188 struct usb_device_driver *udriver = to_usb_device_driver(dev->driver); 189 190 udriver->disconnect(to_usb_device(dev)); 191 return 0; 192 } 193 194 195 /* called from driver core with dev locked */ 196 static int usb_probe_interface(struct device *dev) 197 { 198 struct usb_driver *driver = to_usb_driver(dev->driver); 199 struct usb_interface *intf; 200 struct usb_device *udev; 201 const struct usb_device_id *id; 202 int error = -ENODEV; 203 204 dev_dbg(dev, "%s\n", __FUNCTION__); 205 206 if (is_usb_device(dev)) /* Sanity check */ 207 return error; 208 209 intf = to_usb_interface(dev); 210 udev = interface_to_usbdev(intf); 211 212 id = usb_match_id(intf, driver->id_table); 213 if (!id) 214 id = usb_match_dynamic_id(intf, driver); 215 if (id) { 216 dev_dbg(dev, "%s - got id\n", __FUNCTION__); 217 218 error = usb_autoresume_device(udev); 219 if (error) 220 return error; 221 222 /* Interface "power state" doesn't correspond to any hardware 223 * state whatsoever. We use it to record when it's bound to 224 * a driver that may start I/0: it's not frozen/quiesced. 225 */ 226 mark_active(intf); 227 intf->condition = USB_INTERFACE_BINDING; 228 229 /* The interface should always appear to be in use 230 * unless the driver suports autosuspend. 231 */ 232 intf->pm_usage_cnt = !(driver->supports_autosuspend); 233 234 error = driver->probe(intf, id); 235 if (error) { 236 mark_quiesced(intf); 237 intf->needs_remote_wakeup = 0; 238 intf->condition = USB_INTERFACE_UNBOUND; 239 } else 240 intf->condition = USB_INTERFACE_BOUND; 241 242 usb_autosuspend_device(udev); 243 } 244 245 return error; 246 } 247 248 /* called from driver core with dev locked */ 249 static int usb_unbind_interface(struct device *dev) 250 { 251 struct usb_driver *driver = to_usb_driver(dev->driver); 252 struct usb_interface *intf = to_usb_interface(dev); 253 struct usb_device *udev; 254 int error; 255 256 intf->condition = USB_INTERFACE_UNBINDING; 257 258 /* Autoresume for set_interface call below */ 259 udev = interface_to_usbdev(intf); 260 error = usb_autoresume_device(udev); 261 262 /* release all urbs for this interface */ 263 usb_disable_interface(interface_to_usbdev(intf), intf); 264 265 driver->disconnect(intf); 266 267 /* reset other interface state */ 268 usb_set_interface(interface_to_usbdev(intf), 269 intf->altsetting[0].desc.bInterfaceNumber, 270 0); 271 usb_set_intfdata(intf, NULL); 272 273 intf->condition = USB_INTERFACE_UNBOUND; 274 mark_quiesced(intf); 275 intf->needs_remote_wakeup = 0; 276 277 if (!error) 278 usb_autosuspend_device(udev); 279 280 return 0; 281 } 282 283 /** 284 * usb_driver_claim_interface - bind a driver to an interface 285 * @driver: the driver to be bound 286 * @iface: the interface to which it will be bound; must be in the 287 * usb device's active configuration 288 * @priv: driver data associated with that interface 289 * 290 * This is used by usb device drivers that need to claim more than one 291 * interface on a device when probing (audio and acm are current examples). 292 * No device driver should directly modify internal usb_interface or 293 * usb_device structure members. 294 * 295 * Few drivers should need to use this routine, since the most natural 296 * way to bind to an interface is to return the private data from 297 * the driver's probe() method. 298 * 299 * Callers must own the device lock, so driver probe() entries don't need 300 * extra locking, but other call contexts may need to explicitly claim that 301 * lock. 302 */ 303 int usb_driver_claim_interface(struct usb_driver *driver, 304 struct usb_interface *iface, void* priv) 305 { 306 struct device *dev = &iface->dev; 307 struct usb_device *udev = interface_to_usbdev(iface); 308 int retval = 0; 309 310 if (dev->driver) 311 return -EBUSY; 312 313 dev->driver = &driver->drvwrap.driver; 314 usb_set_intfdata(iface, priv); 315 316 usb_pm_lock(udev); 317 iface->condition = USB_INTERFACE_BOUND; 318 mark_active(iface); 319 iface->pm_usage_cnt = !(driver->supports_autosuspend); 320 usb_pm_unlock(udev); 321 322 /* if interface was already added, bind now; else let 323 * the future device_add() bind it, bypassing probe() 324 */ 325 if (device_is_registered(dev)) 326 retval = device_bind_driver(dev); 327 328 return retval; 329 } 330 EXPORT_SYMBOL(usb_driver_claim_interface); 331 332 /** 333 * usb_driver_release_interface - unbind a driver from an interface 334 * @driver: the driver to be unbound 335 * @iface: the interface from which it will be unbound 336 * 337 * This can be used by drivers to release an interface without waiting 338 * for their disconnect() methods to be called. In typical cases this 339 * also causes the driver disconnect() method to be called. 340 * 341 * This call is synchronous, and may not be used in an interrupt context. 342 * Callers must own the device lock, so driver disconnect() entries don't 343 * need extra locking, but other call contexts may need to explicitly claim 344 * that lock. 345 */ 346 void usb_driver_release_interface(struct usb_driver *driver, 347 struct usb_interface *iface) 348 { 349 struct device *dev = &iface->dev; 350 struct usb_device *udev = interface_to_usbdev(iface); 351 352 /* this should never happen, don't release something that's not ours */ 353 if (!dev->driver || dev->driver != &driver->drvwrap.driver) 354 return; 355 356 /* don't release from within disconnect() */ 357 if (iface->condition != USB_INTERFACE_BOUND) 358 return; 359 360 /* don't release if the interface hasn't been added yet */ 361 if (device_is_registered(dev)) { 362 iface->condition = USB_INTERFACE_UNBINDING; 363 device_release_driver(dev); 364 } 365 366 dev->driver = NULL; 367 usb_set_intfdata(iface, NULL); 368 369 usb_pm_lock(udev); 370 iface->condition = USB_INTERFACE_UNBOUND; 371 mark_quiesced(iface); 372 iface->needs_remote_wakeup = 0; 373 usb_pm_unlock(udev); 374 } 375 EXPORT_SYMBOL(usb_driver_release_interface); 376 377 /* returns 0 if no match, 1 if match */ 378 int usb_match_device(struct usb_device *dev, const struct usb_device_id *id) 379 { 380 if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && 381 id->idVendor != le16_to_cpu(dev->descriptor.idVendor)) 382 return 0; 383 384 if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) && 385 id->idProduct != le16_to_cpu(dev->descriptor.idProduct)) 386 return 0; 387 388 /* No need to test id->bcdDevice_lo != 0, since 0 is never 389 greater than any unsigned number. */ 390 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) && 391 (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice))) 392 return 0; 393 394 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) && 395 (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice))) 396 return 0; 397 398 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) && 399 (id->bDeviceClass != dev->descriptor.bDeviceClass)) 400 return 0; 401 402 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) && 403 (id->bDeviceSubClass!= dev->descriptor.bDeviceSubClass)) 404 return 0; 405 406 if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) && 407 (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol)) 408 return 0; 409 410 return 1; 411 } 412 413 /* returns 0 if no match, 1 if match */ 414 int usb_match_one_id(struct usb_interface *interface, 415 const struct usb_device_id *id) 416 { 417 struct usb_host_interface *intf; 418 struct usb_device *dev; 419 420 /* proc_connectinfo in devio.c may call us with id == NULL. */ 421 if (id == NULL) 422 return 0; 423 424 intf = interface->cur_altsetting; 425 dev = interface_to_usbdev(interface); 426 427 if (!usb_match_device(dev, id)) 428 return 0; 429 430 /* The interface class, subclass, and protocol should never be 431 * checked for a match if the device class is Vendor Specific, 432 * unless the match record specifies the Vendor ID. */ 433 if (dev->descriptor.bDeviceClass == USB_CLASS_VENDOR_SPEC && 434 !(id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) && 435 (id->match_flags & (USB_DEVICE_ID_MATCH_INT_CLASS | 436 USB_DEVICE_ID_MATCH_INT_SUBCLASS | 437 USB_DEVICE_ID_MATCH_INT_PROTOCOL))) 438 return 0; 439 440 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_CLASS) && 441 (id->bInterfaceClass != intf->desc.bInterfaceClass)) 442 return 0; 443 444 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_SUBCLASS) && 445 (id->bInterfaceSubClass != intf->desc.bInterfaceSubClass)) 446 return 0; 447 448 if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_PROTOCOL) && 449 (id->bInterfaceProtocol != intf->desc.bInterfaceProtocol)) 450 return 0; 451 452 return 1; 453 } 454 EXPORT_SYMBOL_GPL(usb_match_one_id); 455 456 /** 457 * usb_match_id - find first usb_device_id matching device or interface 458 * @interface: the interface of interest 459 * @id: array of usb_device_id structures, terminated by zero entry 460 * 461 * usb_match_id searches an array of usb_device_id's and returns 462 * the first one matching the device or interface, or null. 463 * This is used when binding (or rebinding) a driver to an interface. 464 * Most USB device drivers will use this indirectly, through the usb core, 465 * but some layered driver frameworks use it directly. 466 * These device tables are exported with MODULE_DEVICE_TABLE, through 467 * modutils, to support the driver loading functionality of USB hotplugging. 468 * 469 * What Matches: 470 * 471 * The "match_flags" element in a usb_device_id controls which 472 * members are used. If the corresponding bit is set, the 473 * value in the device_id must match its corresponding member 474 * in the device or interface descriptor, or else the device_id 475 * does not match. 476 * 477 * "driver_info" is normally used only by device drivers, 478 * but you can create a wildcard "matches anything" usb_device_id 479 * as a driver's "modules.usbmap" entry if you provide an id with 480 * only a nonzero "driver_info" field. If you do this, the USB device 481 * driver's probe() routine should use additional intelligence to 482 * decide whether to bind to the specified interface. 483 * 484 * What Makes Good usb_device_id Tables: 485 * 486 * The match algorithm is very simple, so that intelligence in 487 * driver selection must come from smart driver id records. 488 * Unless you have good reasons to use another selection policy, 489 * provide match elements only in related groups, and order match 490 * specifiers from specific to general. Use the macros provided 491 * for that purpose if you can. 492 * 493 * The most specific match specifiers use device descriptor 494 * data. These are commonly used with product-specific matches; 495 * the USB_DEVICE macro lets you provide vendor and product IDs, 496 * and you can also match against ranges of product revisions. 497 * These are widely used for devices with application or vendor 498 * specific bDeviceClass values. 499 * 500 * Matches based on device class/subclass/protocol specifications 501 * are slightly more general; use the USB_DEVICE_INFO macro, or 502 * its siblings. These are used with single-function devices 503 * where bDeviceClass doesn't specify that each interface has 504 * its own class. 505 * 506 * Matches based on interface class/subclass/protocol are the 507 * most general; they let drivers bind to any interface on a 508 * multiple-function device. Use the USB_INTERFACE_INFO 509 * macro, or its siblings, to match class-per-interface style 510 * devices (as recorded in bInterfaceClass). 511 * 512 * Note that an entry created by USB_INTERFACE_INFO won't match 513 * any interface if the device class is set to Vendor-Specific. 514 * This is deliberate; according to the USB spec the meanings of 515 * the interface class/subclass/protocol for these devices are also 516 * vendor-specific, and hence matching against a standard product 517 * class wouldn't work anyway. If you really want to use an 518 * interface-based match for such a device, create a match record 519 * that also specifies the vendor ID. (Unforunately there isn't a 520 * standard macro for creating records like this.) 521 * 522 * Within those groups, remember that not all combinations are 523 * meaningful. For example, don't give a product version range 524 * without vendor and product IDs; or specify a protocol without 525 * its associated class and subclass. 526 */ 527 const struct usb_device_id *usb_match_id(struct usb_interface *interface, 528 const struct usb_device_id *id) 529 { 530 /* proc_connectinfo in devio.c may call us with id == NULL. */ 531 if (id == NULL) 532 return NULL; 533 534 /* It is important to check that id->driver_info is nonzero, 535 since an entry that is all zeroes except for a nonzero 536 id->driver_info is the way to create an entry that 537 indicates that the driver want to examine every 538 device and interface. */ 539 for (; id->idVendor || id->bDeviceClass || id->bInterfaceClass || 540 id->driver_info; id++) { 541 if (usb_match_one_id(interface, id)) 542 return id; 543 } 544 545 return NULL; 546 } 547 EXPORT_SYMBOL_GPL_FUTURE(usb_match_id); 548 549 static int usb_device_match(struct device *dev, struct device_driver *drv) 550 { 551 /* devices and interfaces are handled separately */ 552 if (is_usb_device(dev)) { 553 554 /* interface drivers never match devices */ 555 if (!is_usb_device_driver(drv)) 556 return 0; 557 558 /* TODO: Add real matching code */ 559 return 1; 560 561 } else { 562 struct usb_interface *intf; 563 struct usb_driver *usb_drv; 564 const struct usb_device_id *id; 565 566 /* device drivers never match interfaces */ 567 if (is_usb_device_driver(drv)) 568 return 0; 569 570 intf = to_usb_interface(dev); 571 usb_drv = to_usb_driver(drv); 572 573 id = usb_match_id(intf, usb_drv->id_table); 574 if (id) 575 return 1; 576 577 id = usb_match_dynamic_id(intf, usb_drv); 578 if (id) 579 return 1; 580 } 581 582 return 0; 583 } 584 585 #ifdef CONFIG_HOTPLUG 586 static int usb_uevent(struct device *dev, char **envp, int num_envp, 587 char *buffer, int buffer_size) 588 { 589 struct usb_device *usb_dev; 590 int i = 0; 591 int length = 0; 592 593 if (!dev) 594 return -ENODEV; 595 596 /* driver is often null here; dev_dbg() would oops */ 597 pr_debug ("usb %s: uevent\n", dev->bus_id); 598 599 if (is_usb_device(dev)) 600 usb_dev = to_usb_device(dev); 601 else { 602 struct usb_interface *intf = to_usb_interface(dev); 603 usb_dev = interface_to_usbdev(intf); 604 } 605 606 if (usb_dev->devnum < 0) { 607 pr_debug ("usb %s: already deleted?\n", dev->bus_id); 608 return -ENODEV; 609 } 610 if (!usb_dev->bus) { 611 pr_debug ("usb %s: bus removed?\n", dev->bus_id); 612 return -ENODEV; 613 } 614 615 #ifdef CONFIG_USB_DEVICEFS 616 /* If this is available, userspace programs can directly read 617 * all the device descriptors we don't tell them about. Or 618 * act as usermode drivers. 619 */ 620 if (add_uevent_var(envp, num_envp, &i, 621 buffer, buffer_size, &length, 622 "DEVICE=/proc/bus/usb/%03d/%03d", 623 usb_dev->bus->busnum, usb_dev->devnum)) 624 return -ENOMEM; 625 #endif 626 627 /* per-device configurations are common */ 628 if (add_uevent_var(envp, num_envp, &i, 629 buffer, buffer_size, &length, 630 "PRODUCT=%x/%x/%x", 631 le16_to_cpu(usb_dev->descriptor.idVendor), 632 le16_to_cpu(usb_dev->descriptor.idProduct), 633 le16_to_cpu(usb_dev->descriptor.bcdDevice))) 634 return -ENOMEM; 635 636 /* class-based driver binding models */ 637 if (add_uevent_var(envp, num_envp, &i, 638 buffer, buffer_size, &length, 639 "TYPE=%d/%d/%d", 640 usb_dev->descriptor.bDeviceClass, 641 usb_dev->descriptor.bDeviceSubClass, 642 usb_dev->descriptor.bDeviceProtocol)) 643 return -ENOMEM; 644 645 if (add_uevent_var(envp, num_envp, &i, 646 buffer, buffer_size, &length, 647 "BUSNUM=%03d", 648 usb_dev->bus->busnum)) 649 return -ENOMEM; 650 651 if (add_uevent_var(envp, num_envp, &i, 652 buffer, buffer_size, &length, 653 "DEVNUM=%03d", 654 usb_dev->devnum)) 655 return -ENOMEM; 656 657 envp[i] = NULL; 658 return 0; 659 } 660 661 #else 662 663 static int usb_uevent(struct device *dev, char **envp, 664 int num_envp, char *buffer, int buffer_size) 665 { 666 return -ENODEV; 667 } 668 #endif /* CONFIG_HOTPLUG */ 669 670 /** 671 * usb_register_device_driver - register a USB device (not interface) driver 672 * @new_udriver: USB operations for the device driver 673 * @owner: module owner of this driver. 674 * 675 * Registers a USB device driver with the USB core. The list of 676 * unattached devices will be rescanned whenever a new driver is 677 * added, allowing the new driver to attach to any recognized devices. 678 * Returns a negative error code on failure and 0 on success. 679 */ 680 int usb_register_device_driver(struct usb_device_driver *new_udriver, 681 struct module *owner) 682 { 683 int retval = 0; 684 685 if (usb_disabled()) 686 return -ENODEV; 687 688 new_udriver->drvwrap.for_devices = 1; 689 new_udriver->drvwrap.driver.name = (char *) new_udriver->name; 690 new_udriver->drvwrap.driver.bus = &usb_bus_type; 691 new_udriver->drvwrap.driver.probe = usb_probe_device; 692 new_udriver->drvwrap.driver.remove = usb_unbind_device; 693 new_udriver->drvwrap.driver.owner = owner; 694 695 retval = driver_register(&new_udriver->drvwrap.driver); 696 697 if (!retval) { 698 pr_info("%s: registered new device driver %s\n", 699 usbcore_name, new_udriver->name); 700 usbfs_update_special(); 701 } else { 702 printk(KERN_ERR "%s: error %d registering device " 703 " driver %s\n", 704 usbcore_name, retval, new_udriver->name); 705 } 706 707 return retval; 708 } 709 EXPORT_SYMBOL_GPL(usb_register_device_driver); 710 711 /** 712 * usb_deregister_device_driver - unregister a USB device (not interface) driver 713 * @udriver: USB operations of the device driver to unregister 714 * Context: must be able to sleep 715 * 716 * Unlinks the specified driver from the internal USB driver list. 717 */ 718 void usb_deregister_device_driver(struct usb_device_driver *udriver) 719 { 720 pr_info("%s: deregistering device driver %s\n", 721 usbcore_name, udriver->name); 722 723 driver_unregister(&udriver->drvwrap.driver); 724 usbfs_update_special(); 725 } 726 EXPORT_SYMBOL_GPL(usb_deregister_device_driver); 727 728 /** 729 * usb_register_driver - register a USB interface driver 730 * @new_driver: USB operations for the interface driver 731 * @owner: module owner of this driver. 732 * @mod_name: module name string 733 * 734 * Registers a USB interface driver with the USB core. The list of 735 * unattached interfaces will be rescanned whenever a new driver is 736 * added, allowing the new driver to attach to any recognized interfaces. 737 * Returns a negative error code on failure and 0 on success. 738 * 739 * NOTE: if you want your driver to use the USB major number, you must call 740 * usb_register_dev() to enable that functionality. This function no longer 741 * takes care of that. 742 */ 743 int usb_register_driver(struct usb_driver *new_driver, struct module *owner, 744 const char *mod_name) 745 { 746 int retval = 0; 747 748 if (usb_disabled()) 749 return -ENODEV; 750 751 new_driver->drvwrap.for_devices = 0; 752 new_driver->drvwrap.driver.name = (char *) new_driver->name; 753 new_driver->drvwrap.driver.bus = &usb_bus_type; 754 new_driver->drvwrap.driver.probe = usb_probe_interface; 755 new_driver->drvwrap.driver.remove = usb_unbind_interface; 756 new_driver->drvwrap.driver.owner = owner; 757 new_driver->drvwrap.driver.mod_name = mod_name; 758 spin_lock_init(&new_driver->dynids.lock); 759 INIT_LIST_HEAD(&new_driver->dynids.list); 760 761 retval = driver_register(&new_driver->drvwrap.driver); 762 763 if (!retval) { 764 pr_info("%s: registered new interface driver %s\n", 765 usbcore_name, new_driver->name); 766 usbfs_update_special(); 767 usb_create_newid_file(new_driver); 768 } else { 769 printk(KERN_ERR "%s: error %d registering interface " 770 " driver %s\n", 771 usbcore_name, retval, new_driver->name); 772 } 773 774 return retval; 775 } 776 EXPORT_SYMBOL_GPL_FUTURE(usb_register_driver); 777 778 /** 779 * usb_deregister - unregister a USB interface driver 780 * @driver: USB operations of the interface driver to unregister 781 * Context: must be able to sleep 782 * 783 * Unlinks the specified driver from the internal USB driver list. 784 * 785 * NOTE: If you called usb_register_dev(), you still need to call 786 * usb_deregister_dev() to clean up your driver's allocated minor numbers, 787 * this * call will no longer do it for you. 788 */ 789 void usb_deregister(struct usb_driver *driver) 790 { 791 pr_info("%s: deregistering interface driver %s\n", 792 usbcore_name, driver->name); 793 794 usb_remove_newid_file(driver); 795 usb_free_dynids(driver); 796 driver_unregister(&driver->drvwrap.driver); 797 798 usbfs_update_special(); 799 } 800 EXPORT_SYMBOL_GPL_FUTURE(usb_deregister); 801 802 #ifdef CONFIG_PM 803 804 /* Caller has locked udev's pm_mutex */ 805 static int usb_suspend_device(struct usb_device *udev, pm_message_t msg) 806 { 807 struct usb_device_driver *udriver; 808 int status = 0; 809 810 if (udev->state == USB_STATE_NOTATTACHED || 811 udev->state == USB_STATE_SUSPENDED) 812 goto done; 813 814 /* For devices that don't have a driver, we do a generic suspend. */ 815 if (udev->dev.driver) 816 udriver = to_usb_device_driver(udev->dev.driver); 817 else { 818 udev->do_remote_wakeup = 0; 819 udriver = &usb_generic_driver; 820 } 821 status = udriver->suspend(udev, msg); 822 823 done: 824 dev_vdbg(&udev->dev, "%s: status %d\n", __FUNCTION__, status); 825 if (status == 0) 826 udev->dev.power.power_state.event = msg.event; 827 return status; 828 } 829 830 /* Caller has locked udev's pm_mutex */ 831 static int usb_resume_device(struct usb_device *udev) 832 { 833 struct usb_device_driver *udriver; 834 int status = 0; 835 836 if (udev->state == USB_STATE_NOTATTACHED) 837 goto done; 838 if (udev->state != USB_STATE_SUSPENDED && !udev->reset_resume) 839 goto done; 840 841 /* Can't resume it if it doesn't have a driver. */ 842 if (udev->dev.driver == NULL) { 843 status = -ENOTCONN; 844 goto done; 845 } 846 847 if (udev->quirks & USB_QUIRK_RESET_RESUME) 848 udev->reset_resume = 1; 849 850 udriver = to_usb_device_driver(udev->dev.driver); 851 status = udriver->resume(udev); 852 853 done: 854 dev_vdbg(&udev->dev, "%s: status %d\n", __FUNCTION__, status); 855 if (status == 0) { 856 udev->autoresume_disabled = 0; 857 udev->dev.power.power_state.event = PM_EVENT_ON; 858 } 859 return status; 860 } 861 862 /* Caller has locked intf's usb_device's pm mutex */ 863 static int usb_suspend_interface(struct usb_interface *intf, pm_message_t msg) 864 { 865 struct usb_driver *driver; 866 int status = 0; 867 868 /* with no hardware, USB interfaces only use FREEZE and ON states */ 869 if (interface_to_usbdev(intf)->state == USB_STATE_NOTATTACHED || 870 !is_active(intf)) 871 goto done; 872 873 if (intf->condition == USB_INTERFACE_UNBOUND) /* This can't happen */ 874 goto done; 875 driver = to_usb_driver(intf->dev.driver); 876 877 if (driver->suspend && driver->resume) { 878 status = driver->suspend(intf, msg); 879 if (status == 0) 880 mark_quiesced(intf); 881 else if (!interface_to_usbdev(intf)->auto_pm) 882 dev_err(&intf->dev, "%s error %d\n", 883 "suspend", status); 884 } else { 885 // FIXME else if there's no suspend method, disconnect... 886 // Not possible if auto_pm is set... 887 dev_warn(&intf->dev, "no suspend for driver %s?\n", 888 driver->name); 889 mark_quiesced(intf); 890 } 891 892 done: 893 dev_vdbg(&intf->dev, "%s: status %d\n", __FUNCTION__, status); 894 return status; 895 } 896 897 /* Caller has locked intf's usb_device's pm_mutex */ 898 static int usb_resume_interface(struct usb_interface *intf, int reset_resume) 899 { 900 struct usb_driver *driver; 901 int status = 0; 902 903 if (interface_to_usbdev(intf)->state == USB_STATE_NOTATTACHED || 904 is_active(intf)) 905 goto done; 906 907 /* Don't let autoresume interfere with unbinding */ 908 if (intf->condition == USB_INTERFACE_UNBINDING) 909 goto done; 910 911 /* Can't resume it if it doesn't have a driver. */ 912 if (intf->condition == USB_INTERFACE_UNBOUND) { 913 status = -ENOTCONN; 914 goto done; 915 } 916 driver = to_usb_driver(intf->dev.driver); 917 918 if (reset_resume) { 919 if (driver->reset_resume) { 920 status = driver->reset_resume(intf); 921 if (status) 922 dev_err(&intf->dev, "%s error %d\n", 923 "reset_resume", status); 924 } else { 925 // status = -EOPNOTSUPP; 926 dev_warn(&intf->dev, "no %s for driver %s?\n", 927 "reset_resume", driver->name); 928 } 929 } else { 930 if (driver->resume) { 931 status = driver->resume(intf); 932 if (status) 933 dev_err(&intf->dev, "%s error %d\n", 934 "resume", status); 935 } else { 936 // status = -EOPNOTSUPP; 937 dev_warn(&intf->dev, "no %s for driver %s?\n", 938 "resume", driver->name); 939 } 940 } 941 942 done: 943 dev_vdbg(&intf->dev, "%s: status %d\n", __FUNCTION__, status); 944 if (status == 0) 945 mark_active(intf); 946 947 /* FIXME: Unbind the driver and reprobe if the resume failed 948 * (not possible if auto_pm is set) */ 949 return status; 950 } 951 952 #ifdef CONFIG_USB_SUSPEND 953 954 /* Internal routine to check whether we may autosuspend a device. */ 955 static int autosuspend_check(struct usb_device *udev) 956 { 957 int i; 958 struct usb_interface *intf; 959 unsigned long suspend_time; 960 961 /* For autosuspend, fail fast if anything is in use or autosuspend 962 * is disabled. Also fail if any interfaces require remote wakeup 963 * but it isn't available. 964 */ 965 udev->do_remote_wakeup = device_may_wakeup(&udev->dev); 966 if (udev->pm_usage_cnt > 0) 967 return -EBUSY; 968 if (udev->autosuspend_delay < 0 || udev->autosuspend_disabled) 969 return -EPERM; 970 971 suspend_time = udev->last_busy + udev->autosuspend_delay; 972 if (udev->actconfig) { 973 for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) { 974 intf = udev->actconfig->interface[i]; 975 if (!is_active(intf)) 976 continue; 977 if (intf->pm_usage_cnt > 0) 978 return -EBUSY; 979 if (intf->needs_remote_wakeup && 980 !udev->do_remote_wakeup) { 981 dev_dbg(&udev->dev, "remote wakeup needed " 982 "for autosuspend\n"); 983 return -EOPNOTSUPP; 984 } 985 986 /* Don't allow autosuspend if the device will need 987 * a reset-resume and any of its interface drivers 988 * doesn't include support. 989 */ 990 if (udev->quirks & USB_QUIRK_RESET_RESUME) { 991 struct usb_driver *driver; 992 993 driver = to_usb_driver(intf->dev.driver); 994 if (!driver->reset_resume) 995 return -EOPNOTSUPP; 996 } 997 } 998 } 999 1000 /* If everything is okay but the device hasn't been idle for long 1001 * enough, queue a delayed autosuspend request. 1002 */ 1003 if (time_after(suspend_time, jiffies)) { 1004 if (!timer_pending(&udev->autosuspend.timer)) { 1005 1006 /* The value of jiffies may change between the 1007 * time_after() comparison above and the subtraction 1008 * below. That's okay; the system behaves sanely 1009 * when a timer is registered for the present moment 1010 * or for the past. 1011 */ 1012 queue_delayed_work(ksuspend_usb_wq, &udev->autosuspend, 1013 round_jiffies_relative(suspend_time - jiffies)); 1014 } 1015 return -EAGAIN; 1016 } 1017 return 0; 1018 } 1019 1020 #else 1021 1022 static inline int autosuspend_check(struct usb_device *udev) 1023 { 1024 return 0; 1025 } 1026 1027 #endif /* CONFIG_USB_SUSPEND */ 1028 1029 /** 1030 * usb_suspend_both - suspend a USB device and its interfaces 1031 * @udev: the usb_device to suspend 1032 * @msg: Power Management message describing this state transition 1033 * 1034 * This is the central routine for suspending USB devices. It calls the 1035 * suspend methods for all the interface drivers in @udev and then calls 1036 * the suspend method for @udev itself. If an error occurs at any stage, 1037 * all the interfaces which were suspended are resumed so that they remain 1038 * in the same state as the device. 1039 * 1040 * If an autosuspend is in progress (@udev->auto_pm is set), the routine 1041 * checks first to make sure that neither the device itself or any of its 1042 * active interfaces is in use (pm_usage_cnt is greater than 0). If they 1043 * are, the autosuspend fails. 1044 * 1045 * If the suspend succeeds, the routine recursively queues an autosuspend 1046 * request for @udev's parent device, thereby propagating the change up 1047 * the device tree. If all of the parent's children are now suspended, 1048 * the parent will autosuspend in turn. 1049 * 1050 * The suspend method calls are subject to mutual exclusion under control 1051 * of @udev's pm_mutex. Many of these calls are also under the protection 1052 * of @udev's device lock (including all requests originating outside the 1053 * USB subsystem), but autosuspend requests generated by a child device or 1054 * interface driver may not be. Usbcore will insure that the method calls 1055 * do not arrive during bind, unbind, or reset operations. However, drivers 1056 * must be prepared to handle suspend calls arriving at unpredictable times. 1057 * The only way to block such calls is to do an autoresume (preventing 1058 * autosuspends) while holding @udev's device lock (preventing outside 1059 * suspends). 1060 * 1061 * The caller must hold @udev->pm_mutex. 1062 * 1063 * This routine can run only in process context. 1064 */ 1065 static int usb_suspend_both(struct usb_device *udev, pm_message_t msg) 1066 { 1067 int status = 0; 1068 int i = 0; 1069 struct usb_interface *intf; 1070 struct usb_device *parent = udev->parent; 1071 1072 if (udev->state == USB_STATE_NOTATTACHED || 1073 udev->state == USB_STATE_SUSPENDED) 1074 goto done; 1075 1076 udev->do_remote_wakeup = device_may_wakeup(&udev->dev); 1077 1078 if (udev->auto_pm) { 1079 status = autosuspend_check(udev); 1080 if (status < 0) 1081 goto done; 1082 } 1083 1084 /* Suspend all the interfaces and then udev itself */ 1085 if (udev->actconfig) { 1086 for (; i < udev->actconfig->desc.bNumInterfaces; i++) { 1087 intf = udev->actconfig->interface[i]; 1088 status = usb_suspend_interface(intf, msg); 1089 if (status != 0) 1090 break; 1091 } 1092 } 1093 if (status == 0) { 1094 1095 /* Non-root devices don't need to do anything for FREEZE 1096 * or PRETHAW. */ 1097 if (udev->parent && (msg.event == PM_EVENT_FREEZE || 1098 msg.event == PM_EVENT_PRETHAW)) 1099 goto done; 1100 status = usb_suspend_device(udev, msg); 1101 } 1102 1103 /* If the suspend failed, resume interfaces that did get suspended */ 1104 if (status != 0) { 1105 while (--i >= 0) { 1106 intf = udev->actconfig->interface[i]; 1107 usb_resume_interface(intf, 0); 1108 } 1109 1110 /* Try another autosuspend when the interfaces aren't busy */ 1111 if (udev->auto_pm) 1112 autosuspend_check(udev); 1113 1114 /* If the suspend succeeded, propagate it up the tree */ 1115 } else { 1116 cancel_delayed_work(&udev->autosuspend); 1117 if (parent) 1118 usb_autosuspend_device(parent); 1119 } 1120 1121 done: 1122 dev_vdbg(&udev->dev, "%s: status %d\n", __FUNCTION__, status); 1123 return status; 1124 } 1125 1126 /** 1127 * usb_resume_both - resume a USB device and its interfaces 1128 * @udev: the usb_device to resume 1129 * 1130 * This is the central routine for resuming USB devices. It calls the 1131 * the resume method for @udev and then calls the resume methods for all 1132 * the interface drivers in @udev. 1133 * 1134 * Before starting the resume, the routine calls itself recursively for 1135 * the parent device of @udev, thereby propagating the change up the device 1136 * tree and assuring that @udev will be able to resume. If the parent is 1137 * unable to resume successfully, the routine fails. 1138 * 1139 * The resume method calls are subject to mutual exclusion under control 1140 * of @udev's pm_mutex. Many of these calls are also under the protection 1141 * of @udev's device lock (including all requests originating outside the 1142 * USB subsystem), but autoresume requests generated by a child device or 1143 * interface driver may not be. Usbcore will insure that the method calls 1144 * do not arrive during bind, unbind, or reset operations. However, drivers 1145 * must be prepared to handle resume calls arriving at unpredictable times. 1146 * The only way to block such calls is to do an autoresume (preventing 1147 * other autoresumes) while holding @udev's device lock (preventing outside 1148 * resumes). 1149 * 1150 * The caller must hold @udev->pm_mutex. 1151 * 1152 * This routine can run only in process context. 1153 */ 1154 static int usb_resume_both(struct usb_device *udev) 1155 { 1156 int status = 0; 1157 int i; 1158 struct usb_interface *intf; 1159 struct usb_device *parent = udev->parent; 1160 1161 cancel_delayed_work(&udev->autosuspend); 1162 if (udev->state == USB_STATE_NOTATTACHED) { 1163 status = -ENODEV; 1164 goto done; 1165 } 1166 1167 /* Propagate the resume up the tree, if necessary */ 1168 if (udev->state == USB_STATE_SUSPENDED) { 1169 if (udev->auto_pm && udev->autoresume_disabled) { 1170 status = -EPERM; 1171 goto done; 1172 } 1173 if (parent) { 1174 status = usb_autoresume_device(parent); 1175 if (status == 0) { 1176 status = usb_resume_device(udev); 1177 if (status || udev->state == 1178 USB_STATE_NOTATTACHED) { 1179 usb_autosuspend_device(parent); 1180 1181 /* It's possible usb_resume_device() 1182 * failed after the port was 1183 * unsuspended, causing udev to be 1184 * logically disconnected. We don't 1185 * want usb_disconnect() to autosuspend 1186 * the parent again, so tell it that 1187 * udev disconnected while still 1188 * suspended. */ 1189 if (udev->state == 1190 USB_STATE_NOTATTACHED) 1191 udev->discon_suspended = 1; 1192 } 1193 } 1194 } else { 1195 1196 /* We can't progagate beyond the USB subsystem, 1197 * so if a root hub's controller is suspended 1198 * then we're stuck. */ 1199 status = usb_resume_device(udev); 1200 } 1201 } else { 1202 1203 /* Needed for setting udev->dev.power.power_state.event, 1204 * for possible debugging message, and for reset_resume. */ 1205 status = usb_resume_device(udev); 1206 } 1207 1208 if (status == 0 && udev->actconfig) { 1209 for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) { 1210 intf = udev->actconfig->interface[i]; 1211 usb_resume_interface(intf, udev->reset_resume); 1212 } 1213 } 1214 1215 done: 1216 dev_vdbg(&udev->dev, "%s: status %d\n", __FUNCTION__, status); 1217 udev->reset_resume = 0; 1218 return status; 1219 } 1220 1221 #ifdef CONFIG_USB_SUSPEND 1222 1223 /* Internal routine to adjust a device's usage counter and change 1224 * its autosuspend state. 1225 */ 1226 static int usb_autopm_do_device(struct usb_device *udev, int inc_usage_cnt) 1227 { 1228 int status = 0; 1229 1230 usb_pm_lock(udev); 1231 udev->auto_pm = 1; 1232 udev->pm_usage_cnt += inc_usage_cnt; 1233 WARN_ON(udev->pm_usage_cnt < 0); 1234 if (inc_usage_cnt >= 0 && udev->pm_usage_cnt > 0) { 1235 if (udev->state == USB_STATE_SUSPENDED) 1236 status = usb_resume_both(udev); 1237 if (status != 0) 1238 udev->pm_usage_cnt -= inc_usage_cnt; 1239 else if (inc_usage_cnt) 1240 udev->last_busy = jiffies; 1241 } else if (inc_usage_cnt <= 0 && udev->pm_usage_cnt <= 0) { 1242 if (inc_usage_cnt) 1243 udev->last_busy = jiffies; 1244 status = usb_suspend_both(udev, PMSG_SUSPEND); 1245 } 1246 usb_pm_unlock(udev); 1247 return status; 1248 } 1249 1250 /* usb_autosuspend_work - callback routine to autosuspend a USB device */ 1251 void usb_autosuspend_work(struct work_struct *work) 1252 { 1253 struct usb_device *udev = 1254 container_of(work, struct usb_device, autosuspend.work); 1255 1256 usb_autopm_do_device(udev, 0); 1257 } 1258 1259 /** 1260 * usb_autosuspend_device - delayed autosuspend of a USB device and its interfaces 1261 * @udev: the usb_device to autosuspend 1262 * 1263 * This routine should be called when a core subsystem is finished using 1264 * @udev and wants to allow it to autosuspend. Examples would be when 1265 * @udev's device file in usbfs is closed or after a configuration change. 1266 * 1267 * @udev's usage counter is decremented. If it or any of the usage counters 1268 * for an active interface is greater than 0, no autosuspend request will be 1269 * queued. (If an interface driver does not support autosuspend then its 1270 * usage counter is permanently positive.) Furthermore, if an interface 1271 * driver requires remote-wakeup capability during autosuspend but remote 1272 * wakeup is disabled, the autosuspend will fail. 1273 * 1274 * Often the caller will hold @udev's device lock, but this is not 1275 * necessary. 1276 * 1277 * This routine can run only in process context. 1278 */ 1279 void usb_autosuspend_device(struct usb_device *udev) 1280 { 1281 int status; 1282 1283 status = usb_autopm_do_device(udev, -1); 1284 dev_vdbg(&udev->dev, "%s: cnt %d\n", 1285 __FUNCTION__, udev->pm_usage_cnt); 1286 } 1287 1288 /** 1289 * usb_try_autosuspend_device - attempt an autosuspend of a USB device and its interfaces 1290 * @udev: the usb_device to autosuspend 1291 * 1292 * This routine should be called when a core subsystem thinks @udev may 1293 * be ready to autosuspend. 1294 * 1295 * @udev's usage counter left unchanged. If it or any of the usage counters 1296 * for an active interface is greater than 0, or autosuspend is not allowed 1297 * for any other reason, no autosuspend request will be queued. 1298 * 1299 * This routine can run only in process context. 1300 */ 1301 void usb_try_autosuspend_device(struct usb_device *udev) 1302 { 1303 usb_autopm_do_device(udev, 0); 1304 dev_vdbg(&udev->dev, "%s: cnt %d\n", 1305 __FUNCTION__, udev->pm_usage_cnt); 1306 } 1307 1308 /** 1309 * usb_autoresume_device - immediately autoresume a USB device and its interfaces 1310 * @udev: the usb_device to autoresume 1311 * 1312 * This routine should be called when a core subsystem wants to use @udev 1313 * and needs to guarantee that it is not suspended. No autosuspend will 1314 * occur until usb_autosuspend_device is called. (Note that this will not 1315 * prevent suspend events originating in the PM core.) Examples would be 1316 * when @udev's device file in usbfs is opened or when a remote-wakeup 1317 * request is received. 1318 * 1319 * @udev's usage counter is incremented to prevent subsequent autosuspends. 1320 * However if the autoresume fails then the usage counter is re-decremented. 1321 * 1322 * Often the caller will hold @udev's device lock, but this is not 1323 * necessary (and attempting it might cause deadlock). 1324 * 1325 * This routine can run only in process context. 1326 */ 1327 int usb_autoresume_device(struct usb_device *udev) 1328 { 1329 int status; 1330 1331 status = usb_autopm_do_device(udev, 1); 1332 dev_vdbg(&udev->dev, "%s: status %d cnt %d\n", 1333 __FUNCTION__, status, udev->pm_usage_cnt); 1334 return status; 1335 } 1336 1337 /* Internal routine to adjust an interface's usage counter and change 1338 * its device's autosuspend state. 1339 */ 1340 static int usb_autopm_do_interface(struct usb_interface *intf, 1341 int inc_usage_cnt) 1342 { 1343 struct usb_device *udev = interface_to_usbdev(intf); 1344 int status = 0; 1345 1346 usb_pm_lock(udev); 1347 if (intf->condition == USB_INTERFACE_UNBOUND) 1348 status = -ENODEV; 1349 else { 1350 udev->auto_pm = 1; 1351 intf->pm_usage_cnt += inc_usage_cnt; 1352 if (inc_usage_cnt >= 0 && intf->pm_usage_cnt > 0) { 1353 if (udev->state == USB_STATE_SUSPENDED) 1354 status = usb_resume_both(udev); 1355 if (status != 0) 1356 intf->pm_usage_cnt -= inc_usage_cnt; 1357 else if (inc_usage_cnt) 1358 udev->last_busy = jiffies; 1359 } else if (inc_usage_cnt <= 0 && intf->pm_usage_cnt <= 0) { 1360 if (inc_usage_cnt) 1361 udev->last_busy = jiffies; 1362 status = usb_suspend_both(udev, PMSG_SUSPEND); 1363 } 1364 } 1365 usb_pm_unlock(udev); 1366 return status; 1367 } 1368 1369 /** 1370 * usb_autopm_put_interface - decrement a USB interface's PM-usage counter 1371 * @intf: the usb_interface whose counter should be decremented 1372 * 1373 * This routine should be called by an interface driver when it is 1374 * finished using @intf and wants to allow it to autosuspend. A typical 1375 * example would be a character-device driver when its device file is 1376 * closed. 1377 * 1378 * The routine decrements @intf's usage counter. When the counter reaches 1379 * 0, a delayed autosuspend request for @intf's device is queued. When 1380 * the delay expires, if @intf->pm_usage_cnt is still <= 0 along with all 1381 * the other usage counters for the sibling interfaces and @intf's 1382 * usb_device, the device and all its interfaces will be autosuspended. 1383 * 1384 * Note that @intf->pm_usage_cnt is owned by the interface driver. The 1385 * core will not change its value other than the increment and decrement 1386 * in usb_autopm_get_interface and usb_autopm_put_interface. The driver 1387 * may use this simple counter-oriented discipline or may set the value 1388 * any way it likes. 1389 * 1390 * If the driver has set @intf->needs_remote_wakeup then autosuspend will 1391 * take place only if the device's remote-wakeup facility is enabled. 1392 * 1393 * Suspend method calls queued by this routine can arrive at any time 1394 * while @intf is resumed and its usage counter is equal to 0. They are 1395 * not protected by the usb_device's lock but only by its pm_mutex. 1396 * Drivers must provide their own synchronization. 1397 * 1398 * This routine can run only in process context. 1399 */ 1400 void usb_autopm_put_interface(struct usb_interface *intf) 1401 { 1402 int status; 1403 1404 status = usb_autopm_do_interface(intf, -1); 1405 dev_vdbg(&intf->dev, "%s: status %d cnt %d\n", 1406 __FUNCTION__, status, intf->pm_usage_cnt); 1407 } 1408 EXPORT_SYMBOL_GPL(usb_autopm_put_interface); 1409 1410 /** 1411 * usb_autopm_get_interface - increment a USB interface's PM-usage counter 1412 * @intf: the usb_interface whose counter should be incremented 1413 * 1414 * This routine should be called by an interface driver when it wants to 1415 * use @intf and needs to guarantee that it is not suspended. In addition, 1416 * the routine prevents @intf from being autosuspended subsequently. (Note 1417 * that this will not prevent suspend events originating in the PM core.) 1418 * This prevention will persist until usb_autopm_put_interface() is called 1419 * or @intf is unbound. A typical example would be a character-device 1420 * driver when its device file is opened. 1421 * 1422 * 1423 * The routine increments @intf's usage counter. (However if the 1424 * autoresume fails then the counter is re-decremented.) So long as the 1425 * counter is greater than 0, autosuspend will not be allowed for @intf 1426 * or its usb_device. When the driver is finished using @intf it should 1427 * call usb_autopm_put_interface() to decrement the usage counter and 1428 * queue a delayed autosuspend request (if the counter is <= 0). 1429 * 1430 * 1431 * Note that @intf->pm_usage_cnt is owned by the interface driver. The 1432 * core will not change its value other than the increment and decrement 1433 * in usb_autopm_get_interface and usb_autopm_put_interface. The driver 1434 * may use this simple counter-oriented discipline or may set the value 1435 * any way it likes. 1436 * 1437 * Resume method calls generated by this routine can arrive at any time 1438 * while @intf is suspended. They are not protected by the usb_device's 1439 * lock but only by its pm_mutex. Drivers must provide their own 1440 * synchronization. 1441 * 1442 * This routine can run only in process context. 1443 */ 1444 int usb_autopm_get_interface(struct usb_interface *intf) 1445 { 1446 int status; 1447 1448 status = usb_autopm_do_interface(intf, 1); 1449 dev_vdbg(&intf->dev, "%s: status %d cnt %d\n", 1450 __FUNCTION__, status, intf->pm_usage_cnt); 1451 return status; 1452 } 1453 EXPORT_SYMBOL_GPL(usb_autopm_get_interface); 1454 1455 /** 1456 * usb_autopm_set_interface - set a USB interface's autosuspend state 1457 * @intf: the usb_interface whose state should be set 1458 * 1459 * This routine sets the autosuspend state of @intf's device according 1460 * to @intf's usage counter, which the caller must have set previously. 1461 * If the counter is <= 0, the device is autosuspended (if it isn't 1462 * already suspended and if nothing else prevents the autosuspend). If 1463 * the counter is > 0, the device is autoresumed (if it isn't already 1464 * awake). 1465 */ 1466 int usb_autopm_set_interface(struct usb_interface *intf) 1467 { 1468 int status; 1469 1470 status = usb_autopm_do_interface(intf, 0); 1471 dev_vdbg(&intf->dev, "%s: status %d cnt %d\n", 1472 __FUNCTION__, status, intf->pm_usage_cnt); 1473 return status; 1474 } 1475 EXPORT_SYMBOL_GPL(usb_autopm_set_interface); 1476 1477 #else 1478 1479 void usb_autosuspend_work(struct work_struct *work) 1480 {} 1481 1482 #endif /* CONFIG_USB_SUSPEND */ 1483 1484 /** 1485 * usb_external_suspend_device - external suspend of a USB device and its interfaces 1486 * @udev: the usb_device to suspend 1487 * @msg: Power Management message describing this state transition 1488 * 1489 * This routine handles external suspend requests: ones not generated 1490 * internally by a USB driver (autosuspend) but rather coming from the user 1491 * (via sysfs) or the PM core (system sleep). The suspend will be carried 1492 * out regardless of @udev's usage counter or those of its interfaces, 1493 * and regardless of whether or not remote wakeup is enabled. Of course, 1494 * interface drivers still have the option of failing the suspend (if 1495 * there are unsuspended children, for example). 1496 * 1497 * The caller must hold @udev's device lock. 1498 */ 1499 int usb_external_suspend_device(struct usb_device *udev, pm_message_t msg) 1500 { 1501 int status; 1502 1503 usb_pm_lock(udev); 1504 udev->auto_pm = 0; 1505 status = usb_suspend_both(udev, msg); 1506 usb_pm_unlock(udev); 1507 return status; 1508 } 1509 1510 /** 1511 * usb_external_resume_device - external resume of a USB device and its interfaces 1512 * @udev: the usb_device to resume 1513 * 1514 * This routine handles external resume requests: ones not generated 1515 * internally by a USB driver (autoresume) but rather coming from the user 1516 * (via sysfs), the PM core (system resume), or the device itself (remote 1517 * wakeup). @udev's usage counter is unaffected. 1518 * 1519 * The caller must hold @udev's device lock. 1520 */ 1521 int usb_external_resume_device(struct usb_device *udev) 1522 { 1523 int status; 1524 1525 usb_pm_lock(udev); 1526 udev->auto_pm = 0; 1527 status = usb_resume_both(udev); 1528 udev->last_busy = jiffies; 1529 usb_pm_unlock(udev); 1530 1531 /* Now that the device is awake, we can start trying to autosuspend 1532 * it again. */ 1533 if (status == 0) 1534 usb_try_autosuspend_device(udev); 1535 return status; 1536 } 1537 1538 static int usb_suspend(struct device *dev, pm_message_t message) 1539 { 1540 if (!is_usb_device(dev)) /* Ignore PM for interfaces */ 1541 return 0; 1542 return usb_external_suspend_device(to_usb_device(dev), message); 1543 } 1544 1545 static int usb_resume(struct device *dev) 1546 { 1547 struct usb_device *udev; 1548 1549 if (!is_usb_device(dev)) /* Ignore PM for interfaces */ 1550 return 0; 1551 udev = to_usb_device(dev); 1552 1553 /* If autoresume is disabled then we also want to prevent resume 1554 * during system wakeup. However, a "persistent-device" reset-resume 1555 * after power loss counts as a wakeup event. So allow a 1556 * reset-resume to occur if remote wakeup is enabled. */ 1557 if (udev->autoresume_disabled) { 1558 if (!(udev->reset_resume && udev->do_remote_wakeup)) 1559 return -EPERM; 1560 } 1561 return usb_external_resume_device(udev); 1562 } 1563 1564 #else 1565 1566 #define usb_suspend NULL 1567 #define usb_resume NULL 1568 1569 #endif /* CONFIG_PM */ 1570 1571 struct bus_type usb_bus_type = { 1572 .name = "usb", 1573 .match = usb_device_match, 1574 .uevent = usb_uevent, 1575 .suspend = usb_suspend, 1576 .resume = usb_resume, 1577 }; 1578