driver.c 55.2 KB
Newer Older
1
// SPDX-License-Identifier: GPL-2.0
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
/*
 * drivers/usb/driver.c - most of the driver model stuff for usb
 *
 * (C) Copyright 2005 Greg Kroah-Hartman <gregkh@suse.de>
 *
 * based on drivers/usb/usb.c which had the following copyrights:
 *	(C) Copyright Linus Torvalds 1999
 *	(C) Copyright Johannes Erdfelt 1999-2001
 *	(C) Copyright Andreas Gal 1999
 *	(C) Copyright Gregory P. Smith 1999
 *	(C) Copyright Deti Fliegl 1999 (new USB architecture)
 *	(C) Copyright Randy Dunlap 2000
 *	(C) Copyright David Brownell 2000-2004
 *	(C) Copyright Yggdrasil Computing, Inc. 2000
 *		(usb_device_id matching changes by Adam J. Richter)
 *	(C) Copyright Greg Kroah-Hartman 2002-2003
 *
19 20
 * Released under the GPLv2 only.
 *
21 22
 * NOTE! This is not actually a driver at all, rather this is
 * just a collection of helper routines that implement the
23 24
 * matching, probing, releasing, suspending and resuming for
 * real drivers.
25 26 27 28
 *
 */

#include <linux/device.h>
29
#include <linux/slab.h>
30
#include <linux/export.h>
31
#include <linux/usb.h>
A
Alan Stern 已提交
32
#include <linux/usb/quirks.h>
33 34
#include <linux/usb/hcd.h>

35 36
#include "usb.h"

A
Alan Stern 已提交
37

38 39 40 41
/*
 * Adds a new dynamic USBdevice ID to this driver,
 * and cause the driver to probe for all devices again.
 */
42
ssize_t usb_store_new_id(struct usb_dynids *dynids,
43
			 const struct usb_device_id *id_table,
44 45
			 struct device_driver *driver,
			 const char *buf, size_t count)
46 47 48 49
{
	struct usb_dynid *dynid;
	u32 idVendor = 0;
	u32 idProduct = 0;
50
	unsigned int bInterfaceClass = 0;
51
	u32 refVendor, refProduct;
52
	int fields = 0;
53
	int retval = 0;
54

55 56
	fields = sscanf(buf, "%x %x %x %x %x", &idVendor, &idProduct,
			&bInterfaceClass, &refVendor, &refProduct);
57 58 59 60 61 62 63 64 65 66 67
	if (fields < 2)
		return -EINVAL;

	dynid = kzalloc(sizeof(*dynid), GFP_KERNEL);
	if (!dynid)
		return -ENOMEM;

	INIT_LIST_HEAD(&dynid->node);
	dynid->id.idVendor = idVendor;
	dynid->id.idProduct = idProduct;
	dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE;
68
	if (fields > 2 && bInterfaceClass) {
69 70 71 72
		if (bInterfaceClass > 255) {
			retval = -EINVAL;
			goto fail;
		}
73

74 75 76
		dynid->id.bInterfaceClass = (u8)bInterfaceClass;
		dynid->id.match_flags |= USB_DEVICE_ID_MATCH_INT_CLASS;
	}
77

78 79 80
	if (fields > 4) {
		const struct usb_device_id *id = id_table;

81 82 83 84
		if (!id) {
			retval = -ENODEV;
			goto fail;
		}
85

86
		for (; id->match_flags; id++)
87
			if (id->idVendor == refVendor && id->idProduct == refProduct)
88
				break;
89

90
		if (id->match_flags) {
91
			dynid->id.driver_info = id->driver_info;
92 93 94 95
		} else {
			retval = -ENODEV;
			goto fail;
		}
96 97
	}

98
	spin_lock(&dynids->lock);
99
	list_add_tail(&dynid->node, &dynids->list);
100
	spin_unlock(&dynids->lock);
101

102
	retval = driver_attach(driver);
103

104 105
	if (retval)
		return retval;
106
	return count;
107 108 109 110

fail:
	kfree(dynid);
	return retval;
111
}
112 113
EXPORT_SYMBOL_GPL(usb_store_new_id);

114
ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf)
115 116 117 118
{
	struct usb_dynid *dynid;
	size_t count = 0;

119
	list_for_each_entry(dynid, &dynids->list, node)
120 121 122 123 124 125 126 127 128
		if (dynid->id.bInterfaceClass != 0)
			count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x %02x\n",
					   dynid->id.idVendor, dynid->id.idProduct,
					   dynid->id.bInterfaceClass);
		else
			count += scnprintf(&buf[count], PAGE_SIZE - count, "%04x %04x\n",
					   dynid->id.idVendor, dynid->id.idProduct);
	return count;
}
129 130
EXPORT_SYMBOL_GPL(usb_show_dynids);

131
static ssize_t new_id_show(struct device_driver *driver, char *buf)
132 133 134 135 136
{
	struct usb_driver *usb_drv = to_usb_driver(driver);

	return usb_show_dynids(&usb_drv->dynids, buf);
}
137

138
static ssize_t new_id_store(struct device_driver *driver,
139 140 141 142
			    const char *buf, size_t count)
{
	struct usb_driver *usb_drv = to_usb_driver(driver);

143
	return usb_store_new_id(&usb_drv->dynids, usb_drv->id_table, driver, buf, count);
144
}
145
static DRIVER_ATTR_RW(new_id);
146

147 148
/*
 * Remove a USB device ID from this driver
149
 */
150 151
static ssize_t remove_id_store(struct device_driver *driver, const char *buf,
			       size_t count)
152 153 154
{
	struct usb_dynid *dynid, *n;
	struct usb_driver *usb_driver = to_usb_driver(driver);
A
Alan Cox 已提交
155 156 157
	u32 idVendor;
	u32 idProduct;
	int fields;
158 159 160 161 162 163 164 165

	fields = sscanf(buf, "%x %x", &idVendor, &idProduct);
	if (fields < 2)
		return -EINVAL;

	spin_lock(&usb_driver->dynids.lock);
	list_for_each_entry_safe(dynid, n, &usb_driver->dynids.list, node) {
		struct usb_device_id *id = &dynid->id;
K
Kris Borer 已提交
166

167 168 169 170 171 172 173 174 175 176
		if ((id->idVendor == idVendor) &&
		    (id->idProduct == idProduct)) {
			list_del(&dynid->node);
			kfree(dynid);
			break;
		}
	}
	spin_unlock(&usb_driver->dynids.lock);
	return count;
}
177 178 179 180 181 182

static ssize_t remove_id_show(struct device_driver *driver, char *buf)
{
	return new_id_show(driver, buf);
}
static DRIVER_ATTR_RW(remove_id);
183

184
static int usb_create_newid_files(struct usb_driver *usb_drv)
185 186 187
{
	int error = 0;

188 189 190
	if (usb_drv->no_dynamic_id)
		goto exit;

191
	if (usb_drv->probe != NULL) {
192 193
		error = driver_create_file(&usb_drv->drvwrap.driver,
					   &driver_attr_new_id);
194 195 196 197 198 199 200 201
		if (error == 0) {
			error = driver_create_file(&usb_drv->drvwrap.driver,
					&driver_attr_remove_id);
			if (error)
				driver_remove_file(&usb_drv->drvwrap.driver,
						&driver_attr_new_id);
		}
	}
202
exit:
203 204 205
	return error;
}

206
static void usb_remove_newid_files(struct usb_driver *usb_drv)
207 208 209 210
{
	if (usb_drv->no_dynamic_id)
		return;

211
	if (usb_drv->probe != NULL) {
212
		driver_remove_file(&usb_drv->drvwrap.driver,
213
				&driver_attr_remove_id);
214 215 216
		driver_remove_file(&usb_drv->drvwrap.driver,
				   &driver_attr_new_id);
	}
217 218
}

219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247
static void usb_free_dynids(struct usb_driver *usb_drv)
{
	struct usb_dynid *dynid, *n;

	spin_lock(&usb_drv->dynids.lock);
	list_for_each_entry_safe(dynid, n, &usb_drv->dynids.list, node) {
		list_del(&dynid->node);
		kfree(dynid);
	}
	spin_unlock(&usb_drv->dynids.lock);
}

static const struct usb_device_id *usb_match_dynamic_id(struct usb_interface *intf,
							struct usb_driver *drv)
{
	struct usb_dynid *dynid;

	spin_lock(&drv->dynids.lock);
	list_for_each_entry(dynid, &drv->dynids.list, node) {
		if (usb_match_one_id(intf, &dynid->id)) {
			spin_unlock(&drv->dynids.lock);
			return &dynid->id;
		}
	}
	spin_unlock(&drv->dynids.lock);
	return NULL;
}


248 249 250 251
/* called from driver core with dev locked */
static int usb_probe_device(struct device *dev)
{
	struct usb_device_driver *udriver = to_usb_device_driver(dev->driver);
252
	struct usb_device *udev = to_usb_device(dev);
253
	int error = 0;
254

255
	dev_dbg(dev, "%s\n", __func__);
256 257 258

	/* TODO: Add real matching code */

259
	/* The device should always appear to be in use
260
	 * unless the driver supports autosuspend.
261
	 */
262 263
	if (!udriver->supports_autosuspend)
		error = usb_autoresume_device(udev);
264

265 266
	if (!error)
		error = udriver->probe(udev);
267 268 269 270 271 272
	return error;
}

/* called from driver core with dev locked */
static int usb_unbind_device(struct device *dev)
{
273
	struct usb_device *udev = to_usb_device(dev);
274 275
	struct usb_device_driver *udriver = to_usb_device_driver(dev->driver);

276 277 278
	udriver->disconnect(udev);
	if (!udriver->supports_autosuspend)
		usb_autosuspend_device(udev);
279 280 281 282
	return 0;
}

/* called from driver core with dev locked */
283 284
static int usb_probe_interface(struct device *dev)
{
285
	struct usb_driver *driver = to_usb_driver(dev->driver);
286 287
	struct usb_interface *intf = to_usb_interface(dev);
	struct usb_device *udev = interface_to_usbdev(intf);
288 289
	const struct usb_device_id *id;
	int error = -ENODEV;
290
	int lpm_disable_error = -ENODEV;
291

292
	dev_dbg(dev, "%s\n", __func__);
293

294
	intf->needs_binding = 0;
295

296
	if (usb_device_is_owned(udev))
297
		return error;
298

299 300
	if (udev->authorized == 0) {
		dev_err(&intf->dev, "Device is not authorized for usage\n");
301
		return error;
302 303 304 305
	} else if (intf->authorized == 0) {
		dev_err(&intf->dev, "Interface %d is not authorized for usage\n",
				intf->altsetting->desc.bInterfaceNumber);
		return error;
306
	}
307

308
	id = usb_match_dynamic_id(intf, driver);
309
	if (!id)
310
		id = usb_match_id(intf, driver->id_table);
311 312
	if (!id)
		return error;
313

314 315 316 317 318 319 320
	dev_dbg(dev, "%s - got id\n", __func__);

	error = usb_autoresume_device(udev);
	if (error)
		return error;

	intf->condition = USB_INTERFACE_BINDING;
321

322
	/* Probed interfaces are initially active.  They are
323 324
	 * runtime-PM-enabled only if the driver has autosuspend support.
	 * They are sensitive to their children's power states.
325
	 */
326 327 328 329
	pm_runtime_set_active(dev);
	pm_suspend_ignore_children(dev, false);
	if (driver->supports_autosuspend)
		pm_runtime_enable(dev);
330

331 332 333 334 335 336 337 338 339 340 341
	/* If the new driver doesn't allow hub-initiated LPM, and we can't
	 * disable hub-initiated LPM, then fail the probe.
	 *
	 * Otherwise, leaving LPM enabled should be harmless, because the
	 * endpoint intervals should remain the same, and the U1/U2 timeouts
	 * should remain the same.
	 *
	 * If we need to install alt setting 0 before probe, or another alt
	 * setting during probe, that should also be fine.  usb_set_interface()
	 * will attempt to disable LPM, and fail if it can't disable it.
	 */
342 343 344
	if (driver->disable_hub_initiated_lpm) {
		lpm_disable_error = usb_unlocked_disable_lpm(udev);
		if (lpm_disable_error) {
345 346
			dev_err(&intf->dev, "%s Failed to disable LPM for driver %s\n",
				__func__, driver->name);
347 348 349
			error = lpm_disable_error;
			goto err;
		}
350 351
	}

352 353 354 355 356 357 358
	/* Carry out a deferred switch to altsetting 0 */
	if (intf->needs_altsetting0) {
		error = usb_set_interface(udev, intf->altsetting[0].
				desc.bInterfaceNumber, 0);
		if (error < 0)
			goto err;
		intf->needs_altsetting0 = 0;
359 360
	}

361 362 363 364 365
	error = driver->probe(intf, id);
	if (error)
		goto err;

	intf->condition = USB_INTERFACE_BOUND;
366 367 368 369 370

	/* If the LPM disable succeeded, balance the ref counts. */
	if (!lpm_disable_error)
		usb_unlocked_enable_lpm(udev);

371
	usb_autosuspend_device(udev);
372
	return error;
373

374
 err:
375
	usb_set_intfdata(intf, NULL);
376 377
	intf->needs_remote_wakeup = 0;
	intf->condition = USB_INTERFACE_UNBOUND;
378

379 380 381 382
	/* If the LPM disable succeeded, balance the ref counts. */
	if (!lpm_disable_error)
		usb_unlocked_enable_lpm(udev);

383
	/* Unbound interfaces are always runtime-PM-disabled and -suspended */
384 385
	if (driver->supports_autosuspend)
		pm_runtime_disable(dev);
386 387
	pm_runtime_set_suspended(dev);

388 389
	usb_autosuspend_device(udev);
	return error;
390 391
}

392
/* called from driver core with dev locked */
393 394
static int usb_unbind_interface(struct device *dev)
{
395
	struct usb_driver *driver = to_usb_driver(dev->driver);
396
	struct usb_interface *intf = to_usb_interface(dev);
397
	struct usb_host_endpoint *ep, **eps = NULL;
398
	struct usb_device *udev;
399 400
	int i, j, error, r;
	int lpm_disable_error = -ENODEV;
401 402 403

	intf->condition = USB_INTERFACE_UNBINDING;

404 405
	/* Autoresume for set_interface call below */
	udev = interface_to_usbdev(intf);
406
	error = usb_autoresume_device(udev);
407

408
	/* If hub-initiated LPM policy may change, attempt to disable LPM until
409 410 411 412
	 * the driver is unbound.  If LPM isn't disabled, that's fine because it
	 * wouldn't be enabled unless all the bound interfaces supported
	 * hub-initiated LPM.
	 */
413 414
	if (driver->disable_hub_initiated_lpm)
		lpm_disable_error = usb_unlocked_disable_lpm(udev);
415

416 417 418
	/*
	 * Terminate all URBs for this interface unless the driver
	 * supports "soft" unbinding and the device is still present.
A
Alan Stern 已提交
419
	 */
420
	if (!driver->soft_unbind || udev->state == USB_STATE_NOTATTACHED)
421
		usb_disable_interface(udev, intf, false);
422

423
	driver->disconnect(intf);
424

425 426 427 428 429 430
	/* Free streams */
	for (i = 0, j = 0; i < intf->cur_altsetting->desc.bNumEndpoints; i++) {
		ep = &intf->cur_altsetting->endpoint[i];
		if (ep->streams == 0)
			continue;
		if (j == 0) {
431
			eps = kmalloc_array(USB_MAXENDPOINTS, sizeof(void *),
432
				      GFP_KERNEL);
433
			if (!eps)
434 435 436 437 438 439 440 441 442
				break;
		}
		eps[j++] = ep;
	}
	if (j) {
		usb_free_streams(intf, eps, j, GFP_KERNEL);
		kfree(eps);
	}

443 444 445 446 447 448
	/* Reset other interface state.
	 * We cannot do a Set-Interface if the device is suspended or
	 * if it is prepared for a system sleep (since installing a new
	 * altsetting means creating new endpoint device entries).
	 * When either of these happens, defer the Set-Interface.
	 */
449 450 451 452 453
	if (intf->cur_altsetting->desc.bAlternateSetting == 0) {
		/* Already in altsetting 0 so skip Set-Interface.
		 * Just re-enable it without affecting the endpoint toggles.
		 */
		usb_enable_interface(udev, intf, false);
454
	} else if (!error && !intf->dev.power.is_prepared) {
455
		r = usb_set_interface(udev, intf->altsetting[0].
456
				desc.bInterfaceNumber, 0);
457 458 459
		if (r < 0)
			intf->needs_altsetting0 = 1;
	} else {
460
		intf->needs_altsetting0 = 1;
461
	}
462
	usb_set_intfdata(intf, NULL);
463

464
	intf->condition = USB_INTERFACE_UNBOUND;
465 466
	intf->needs_remote_wakeup = 0;

467 468 469 470
	/* Attempt to re-enable USB3 LPM, if the disable succeeded. */
	if (!lpm_disable_error)
		usb_unlocked_enable_lpm(udev);

471
	/* Unbound interfaces are always runtime-PM-disabled and -suspended */
472 473
	if (driver->supports_autosuspend)
		pm_runtime_disable(dev);
474 475 476 477 478 479 480
	pm_runtime_set_suspended(dev);

	/* Undo any residual pm_autopm_get_interface_* calls */
	for (r = atomic_read(&intf->pm_usage_cnt); r > 0; --r)
		usb_autopm_put_interface_no_suspend(intf);
	atomic_set(&intf->pm_usage_cnt, 0);

481
	if (!error)
482
		usb_autosuspend_device(udev);
483 484 485 486

	return 0;
}

487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502
/**
 * usb_driver_claim_interface - bind a driver to an interface
 * @driver: the driver to be bound
 * @iface: the interface to which it will be bound; must be in the
 *	usb device's active configuration
 * @priv: driver data associated with that interface
 *
 * This is used by usb device drivers that need to claim more than one
 * interface on a device when probing (audio and acm are current examples).
 * No device driver should directly modify internal usb_interface or
 * usb_device structure members.
 *
 * Few drivers should need to use this routine, since the most natural
 * way to bind to an interface is to return the private data from
 * the driver's probe() method.
 *
503 504 505
 * Callers must own the device lock, so driver probe() entries don't need
 * extra locking, but other call contexts may need to explicitly claim that
 * lock.
506 507
 *
 * Return: 0 on success.
508 509
 */
int usb_driver_claim_interface(struct usb_driver *driver,
510
				struct usb_interface *iface, void *priv)
511
{
512
	struct device *dev;
513
	struct usb_device *udev;
514
	int retval = 0;
515

516 517 518 519
	if (!iface)
		return -ENODEV;

	dev = &iface->dev;
520 521 522
	if (dev->driver)
		return -EBUSY;

523 524 525 526
	/* reject claim if interface is not authorized */
	if (!iface->authorized)
		return -ENODEV;

527 528
	udev = interface_to_usbdev(iface);

529
	dev->driver = &driver->drvwrap.driver;
530
	usb_set_intfdata(iface, priv);
531
	iface->needs_binding = 0;
532

533
	iface->condition = USB_INTERFACE_BOUND;
534

535 536 537 538 539
	/* Claimed interfaces are initially inactive (suspended) and
	 * runtime-PM-enabled, but only if the driver has autosuspend
	 * support.  Otherwise they are marked active, to prevent the
	 * device from being autosuspended, but left disabled.  In either
	 * case they are sensitive to their children's power states.
540 541 542 543
	 */
	pm_suspend_ignore_children(dev, false);
	if (driver->supports_autosuspend)
		pm_runtime_enable(dev);
544 545
	else
		pm_runtime_set_active(dev);
546 547 548 549 550

	/* if interface was already added, bind now; else let
	 * the future device_add() bind it, bypassing probe()
	 */
	if (device_is_registered(dev))
551
		retval = device_bind_driver(dev);
552

553 554 555 556 557 558 559 560 561 562 563 564 565 566 567
	if (retval) {
		dev->driver = NULL;
		usb_set_intfdata(iface, NULL);
		iface->needs_remote_wakeup = 0;
		iface->condition = USB_INTERFACE_UNBOUND;

		/*
		 * Unbound interfaces are always runtime-PM-disabled
		 * and runtime-PM-suspended
		 */
		if (driver->supports_autosuspend)
			pm_runtime_disable(dev);
		pm_runtime_set_suspended(dev);
	}

568
	return retval;
569
}
570
EXPORT_SYMBOL_GPL(usb_driver_claim_interface);
571 572 573 574 575 576 577 578 579 580 581

/**
 * usb_driver_release_interface - unbind a driver from an interface
 * @driver: the driver to be unbound
 * @iface: the interface from which it will be unbound
 *
 * This can be used by drivers to release an interface without waiting
 * for their disconnect() methods to be called.  In typical cases this
 * also causes the driver disconnect() method to be called.
 *
 * This call is synchronous, and may not be used in an interrupt context.
582 583 584
 * Callers must own the device lock, so driver disconnect() entries don't
 * need extra locking, but other call contexts may need to explicitly claim
 * that lock.
585 586 587 588 589 590 591
 */
void usb_driver_release_interface(struct usb_driver *driver,
					struct usb_interface *iface)
{
	struct device *dev = &iface->dev;

	/* this should never happen, don't release something that's not ours */
592
	if (!dev->driver || dev->driver != &driver->drvwrap.driver)
593 594 595 596 597
		return;

	/* don't release from within disconnect() */
	if (iface->condition != USB_INTERFACE_BOUND)
		return;
598
	iface->condition = USB_INTERFACE_UNBINDING;
599

600 601 602
	/* Release via the driver core only if the interface
	 * has already been registered
	 */
603 604
	if (device_is_registered(dev)) {
		device_release_driver(dev);
605
	} else {
606
		device_lock(dev);
607 608
		usb_unbind_interface(dev);
		dev->driver = NULL;
609
		device_unlock(dev);
610 611
	}
}
612
EXPORT_SYMBOL_GPL(usb_driver_release_interface);
613

614
/* returns 0 if no match, 1 if match */
615
int usb_match_device(struct usb_device *dev, const struct usb_device_id *id)
616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639
{
	if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
	    id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
	    id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
		return 0;

	/* No need to test id->bcdDevice_lo != 0, since 0 is never
	   greater than any unsigned number. */
	if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
	    (id->bcdDevice_lo > le16_to_cpu(dev->descriptor.bcdDevice)))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
	    (id->bcdDevice_hi < le16_to_cpu(dev->descriptor.bcdDevice)))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
	    (id->bDeviceClass != dev->descriptor.bDeviceClass))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
640
	    (id->bDeviceSubClass != dev->descriptor.bDeviceSubClass))
641 642 643 644 645 646
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
	    (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
		return 0;

647 648 649 650
	return 1;
}

/* returns 0 if no match, 1 if match */
651 652 653
int usb_match_one_id_intf(struct usb_device *dev,
			  struct usb_host_interface *intf,
			  const struct usb_device_id *id)
654
{
655
	/* The interface class, subclass, protocol and number should never be
656 657 658 659 660 661
	 * checked for a match if the device class is Vendor Specific,
	 * unless the match record specifies the Vendor ID. */
	if (dev->descriptor.bDeviceClass == USB_CLASS_VENDOR_SPEC &&
			!(id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
			(id->match_flags & (USB_DEVICE_ID_MATCH_INT_CLASS |
				USB_DEVICE_ID_MATCH_INT_SUBCLASS |
662 663
				USB_DEVICE_ID_MATCH_INT_PROTOCOL |
				USB_DEVICE_ID_MATCH_INT_NUMBER)))
664 665
		return 0;

666 667 668 669 670 671 672 673 674 675 676 677
	if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_CLASS) &&
	    (id->bInterfaceClass != intf->desc.bInterfaceClass))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_SUBCLASS) &&
	    (id->bInterfaceSubClass != intf->desc.bInterfaceSubClass))
		return 0;

	if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_PROTOCOL) &&
	    (id->bInterfaceProtocol != intf->desc.bInterfaceProtocol))
		return 0;

678 679 680 681
	if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_NUMBER) &&
	    (id->bInterfaceNumber != intf->desc.bInterfaceNumber))
		return 0;

682 683
	return 1;
}
684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703

/* returns 0 if no match, 1 if match */
int usb_match_one_id(struct usb_interface *interface,
		     const struct usb_device_id *id)
{
	struct usb_host_interface *intf;
	struct usb_device *dev;

	/* proc_connectinfo in devio.c may call us with id == NULL. */
	if (id == NULL)
		return 0;

	intf = interface->cur_altsetting;
	dev = interface_to_usbdev(interface);

	if (!usb_match_device(dev, id))
		return 0;

	return usb_match_one_id_intf(dev, intf, id);
}
704 705
EXPORT_SYMBOL_GPL(usb_match_one_id);

706 707 708 709 710 711 712 713 714 715 716 717 718
/**
 * usb_match_id - find first usb_device_id matching device or interface
 * @interface: the interface of interest
 * @id: array of usb_device_id structures, terminated by zero entry
 *
 * usb_match_id searches an array of usb_device_id's and returns
 * the first one matching the device or interface, or null.
 * This is used when binding (or rebinding) a driver to an interface.
 * Most USB device drivers will use this indirectly, through the usb core,
 * but some layered driver frameworks use it directly.
 * These device tables are exported with MODULE_DEVICE_TABLE, through
 * modutils, to support the driver loading functionality of USB hotplugging.
 *
719 720
 * Return: The first matching usb_device_id, or %NULL.
 *
721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761
 * What Matches:
 *
 * The "match_flags" element in a usb_device_id controls which
 * members are used.  If the corresponding bit is set, the
 * value in the device_id must match its corresponding member
 * in the device or interface descriptor, or else the device_id
 * does not match.
 *
 * "driver_info" is normally used only by device drivers,
 * but you can create a wildcard "matches anything" usb_device_id
 * as a driver's "modules.usbmap" entry if you provide an id with
 * only a nonzero "driver_info" field.  If you do this, the USB device
 * driver's probe() routine should use additional intelligence to
 * decide whether to bind to the specified interface.
 *
 * What Makes Good usb_device_id Tables:
 *
 * The match algorithm is very simple, so that intelligence in
 * driver selection must come from smart driver id records.
 * Unless you have good reasons to use another selection policy,
 * provide match elements only in related groups, and order match
 * specifiers from specific to general.  Use the macros provided
 * for that purpose if you can.
 *
 * The most specific match specifiers use device descriptor
 * data.  These are commonly used with product-specific matches;
 * the USB_DEVICE macro lets you provide vendor and product IDs,
 * and you can also match against ranges of product revisions.
 * These are widely used for devices with application or vendor
 * specific bDeviceClass values.
 *
 * Matches based on device class/subclass/protocol specifications
 * are slightly more general; use the USB_DEVICE_INFO macro, or
 * its siblings.  These are used with single-function devices
 * where bDeviceClass doesn't specify that each interface has
 * its own class.
 *
 * Matches based on interface class/subclass/protocol are the
 * most general; they let drivers bind to any interface on a
 * multiple-function device.  Use the USB_INTERFACE_INFO
 * macro, or its siblings, to match class-per-interface style
762 763 764 765 766 767 768 769 770 771 772
 * devices (as recorded in bInterfaceClass).
 *
 * Note that an entry created by USB_INTERFACE_INFO won't match
 * any interface if the device class is set to Vendor-Specific.
 * This is deliberate; according to the USB spec the meanings of
 * the interface class/subclass/protocol for these devices are also
 * vendor-specific, and hence matching against a standard product
 * class wouldn't work anyway.  If you really want to use an
 * interface-based match for such a device, create a match record
 * that also specifies the vendor ID.  (Unforunately there isn't a
 * standard macro for creating records like this.)
773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790
 *
 * Within those groups, remember that not all combinations are
 * meaningful.  For example, don't give a product version range
 * without vendor and product IDs; or specify a protocol without
 * its associated class and subclass.
 */
const struct usb_device_id *usb_match_id(struct usb_interface *interface,
					 const struct usb_device_id *id)
{
	/* proc_connectinfo in devio.c may call us with id == NULL. */
	if (id == NULL)
		return NULL;

	/* It is important to check that id->driver_info is nonzero,
	   since an entry that is all zeroes except for a nonzero
	   id->driver_info is the way to create an entry that
	   indicates that the driver want to examine every
	   device and interface. */
791 792
	for (; id->idVendor || id->idProduct || id->bDeviceClass ||
	       id->bInterfaceClass || id->driver_info; id++) {
793 794
		if (usb_match_one_id(interface, id))
			return id;
795 796 797 798
	}

	return NULL;
}
799
EXPORT_SYMBOL_GPL(usb_match_id);
800

801
static int usb_device_match(struct device *dev, struct device_driver *drv)
802
{
803 804
	/* devices and interfaces are handled separately */
	if (is_usb_device(dev)) {
805

806 807 808
		/* interface drivers never match devices */
		if (!is_usb_device_driver(drv))
			return 0;
809

810
		/* TODO: Add real matching code */
811 812
		return 1;

813
	} else if (is_usb_interface(dev)) {
814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833
		struct usb_interface *intf;
		struct usb_driver *usb_drv;
		const struct usb_device_id *id;

		/* device drivers never match interfaces */
		if (is_usb_device_driver(drv))
			return 0;

		intf = to_usb_interface(dev);
		usb_drv = to_usb_driver(drv);

		id = usb_match_id(intf, usb_drv->id_table);
		if (id)
			return 1;

		id = usb_match_dynamic_id(intf, usb_drv);
		if (id)
			return 1;
	}

834 835 836
	return 0;
}

837
static int usb_uevent(struct device *dev, struct kobj_uevent_env *env)
838 839 840
{
	struct usb_device *usb_dev;

841
	if (is_usb_device(dev)) {
842
		usb_dev = to_usb_device(dev);
843
	} else if (is_usb_interface(dev)) {
844
		struct usb_interface *intf = to_usb_interface(dev);
845

846
		usb_dev = interface_to_usbdev(intf);
847 848
	} else {
		return 0;
849
	}
850 851

	if (usb_dev->devnum < 0) {
852
		/* driver is often null here; dev_dbg() would oops */
853
		pr_debug("usb %s: already deleted?\n", dev_name(dev));
854 855 856
		return -ENODEV;
	}
	if (!usb_dev->bus) {
857
		pr_debug("usb %s: bus removed?\n", dev_name(dev));
858 859 860 861
		return -ENODEV;
	}

	/* per-device configurations are common */
862
	if (add_uevent_var(env, "PRODUCT=%x/%x/%x",
863 864 865 866 867 868
			   le16_to_cpu(usb_dev->descriptor.idVendor),
			   le16_to_cpu(usb_dev->descriptor.idProduct),
			   le16_to_cpu(usb_dev->descriptor.bcdDevice)))
		return -ENOMEM;

	/* class-based driver binding models */
869
	if (add_uevent_var(env, "TYPE=%d/%d/%d",
870 871 872 873 874 875 876 877
			   usb_dev->descriptor.bDeviceClass,
			   usb_dev->descriptor.bDeviceSubClass,
			   usb_dev->descriptor.bDeviceProtocol))
		return -ENOMEM;

	return 0;
}

878
/**
879 880
 * usb_register_device_driver - register a USB device (not interface) driver
 * @new_udriver: USB operations for the device driver
881
 * @owner: module owner of this driver.
882
 *
883 884 885
 * Registers a USB device driver with the USB core.  The list of
 * unattached devices will be rescanned whenever a new driver is
 * added, allowing the new driver to attach to any recognized devices.
886 887
 *
 * Return: A negative error code on failure and 0 on success.
888 889 890 891 892 893 894 895 896 897
 */
int usb_register_device_driver(struct usb_device_driver *new_udriver,
		struct module *owner)
{
	int retval = 0;

	if (usb_disabled())
		return -ENODEV;

	new_udriver->drvwrap.for_devices = 1;
898
	new_udriver->drvwrap.driver.name = new_udriver->name;
899 900 901 902 903 904 905
	new_udriver->drvwrap.driver.bus = &usb_bus_type;
	new_udriver->drvwrap.driver.probe = usb_probe_device;
	new_udriver->drvwrap.driver.remove = usb_unbind_device;
	new_udriver->drvwrap.driver.owner = owner;

	retval = driver_register(&new_udriver->drvwrap.driver);

906
	if (!retval)
907 908
		pr_info("%s: registered new device driver %s\n",
			usbcore_name, new_udriver->name);
909
	else
910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937
		printk(KERN_ERR "%s: error %d registering device "
			"	driver %s\n",
			usbcore_name, retval, new_udriver->name);

	return retval;
}
EXPORT_SYMBOL_GPL(usb_register_device_driver);

/**
 * usb_deregister_device_driver - unregister a USB device (not interface) driver
 * @udriver: USB operations of the device driver to unregister
 * Context: must be able to sleep
 *
 * Unlinks the specified driver from the internal USB driver list.
 */
void usb_deregister_device_driver(struct usb_device_driver *udriver)
{
	pr_info("%s: deregistering device driver %s\n",
			usbcore_name, udriver->name);

	driver_unregister(&udriver->drvwrap.driver);
}
EXPORT_SYMBOL_GPL(usb_deregister_device_driver);

/**
 * usb_register_driver - register a USB interface driver
 * @new_driver: USB operations for the interface driver
 * @owner: module owner of this driver.
R
Randy Dunlap 已提交
938
 * @mod_name: module name string
939 940 941 942
 *
 * Registers a USB interface driver with the USB core.  The list of
 * unattached interfaces will be rescanned whenever a new driver is
 * added, allowing the new driver to attach to any recognized interfaces.
943 944
 *
 * Return: A negative error code on failure and 0 on success.
945 946 947 948 949
 *
 * NOTE: if you want your driver to use the USB major number, you must call
 * usb_register_dev() to enable that functionality.  This function no longer
 * takes care of that.
 */
950 951
int usb_register_driver(struct usb_driver *new_driver, struct module *owner,
			const char *mod_name)
952 953 954 955 956 957
{
	int retval = 0;

	if (usb_disabled())
		return -ENODEV;

958
	new_driver->drvwrap.for_devices = 0;
959
	new_driver->drvwrap.driver.name = new_driver->name;
960 961 962 963
	new_driver->drvwrap.driver.bus = &usb_bus_type;
	new_driver->drvwrap.driver.probe = usb_probe_interface;
	new_driver->drvwrap.driver.remove = usb_unbind_interface;
	new_driver->drvwrap.driver.owner = owner;
964
	new_driver->drvwrap.driver.mod_name = mod_name;
965 966
	spin_lock_init(&new_driver->dynids.lock);
	INIT_LIST_HEAD(&new_driver->dynids.list);
967

968
	retval = driver_register(&new_driver->drvwrap.driver);
969 970
	if (retval)
		goto out;
971

972
	retval = usb_create_newid_files(new_driver);
973 974 975 976
	if (retval)
		goto out_newid;

	pr_info("%s: registered new interface driver %s\n",
977 978
			usbcore_name, new_driver->name);

979
out:
980
	return retval;
981 982 983 984 985 986 987 988

out_newid:
	driver_unregister(&new_driver->drvwrap.driver);

	printk(KERN_ERR "%s: error %d registering interface "
			"	driver %s\n",
			usbcore_name, retval, new_driver->name);
	goto out;
989
}
990
EXPORT_SYMBOL_GPL(usb_register_driver);
991 992

/**
993 994
 * usb_deregister - unregister a USB interface driver
 * @driver: USB operations of the interface driver to unregister
995 996 997 998 999 1000 1001 1002 1003 1004
 * Context: must be able to sleep
 *
 * Unlinks the specified driver from the internal USB driver list.
 *
 * NOTE: If you called usb_register_dev(), you still need to call
 * usb_deregister_dev() to clean up your driver's allocated minor numbers,
 * this * call will no longer do it for you.
 */
void usb_deregister(struct usb_driver *driver)
{
1005 1006
	pr_info("%s: deregistering interface driver %s\n",
			usbcore_name, driver->name);
1007

1008
	usb_remove_newid_files(driver);
1009
	driver_unregister(&driver->drvwrap.driver);
1010
	usb_free_dynids(driver);
1011
}
1012
EXPORT_SYMBOL_GPL(usb_deregister);
1013

1014 1015 1016 1017
/* Forced unbinding of a USB interface driver, either because
 * it doesn't support pre_reset/post_reset/reset_resume or
 * because it doesn't support suspend/resume.
 *
1018
 * The caller must hold @intf's device's lock, but not @intf's lock.
1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030
 */
void usb_forced_unbind_intf(struct usb_interface *intf)
{
	struct usb_driver *driver = to_usb_driver(intf->dev.driver);

	dev_dbg(&intf->dev, "forced unbind\n");
	usb_driver_release_interface(driver, intf);

	/* Mark the interface for later rebinding */
	intf->needs_binding = 1;
}

1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052
/*
 * Unbind drivers for @udev's marked interfaces.  These interfaces have
 * the needs_binding flag set, for example by usb_resume_interface().
 *
 * The caller must hold @udev's device lock.
 */
static void unbind_marked_interfaces(struct usb_device *udev)
{
	struct usb_host_config	*config;
	int			i;
	struct usb_interface	*intf;

	config = udev->actconfig;
	if (config) {
		for (i = 0; i < config->desc.bNumInterfaces; ++i) {
			intf = config->interface[i];
			if (intf->dev.driver && intf->needs_binding)
				usb_forced_unbind_intf(intf);
		}
	}
}

1053 1054 1055
/* Delayed forced unbinding of a USB interface driver and scan
 * for rebinding.
 *
1056
 * The caller must hold @intf's device's lock, but not @intf's lock.
1057
 *
1058 1059
 * Note: Rebinds will be skipped if a system sleep transition is in
 * progress and the PM "complete" callback hasn't occurred yet.
1060
 */
1061
static void usb_rebind_intf(struct usb_interface *intf)
1062 1063 1064 1065
{
	int rc;

	/* Delayed unbind of an existing driver */
1066 1067
	if (intf->dev.driver)
		usb_forced_unbind_intf(intf);
1068 1069

	/* Try to rebind the interface */
1070
	if (!intf->dev.power.is_prepared) {
1071 1072
		intf->needs_binding = 0;
		rc = device_attach(&intf->dev);
1073
		if (rc < 0 && rc != -EPROBE_DEFER)
1074 1075
			dev_warn(&intf->dev, "rebind failed: %d\n", rc);
	}
1076 1077
}

1078 1079 1080
/*
 * Rebind drivers to @udev's marked interfaces.  These interfaces have
 * the needs_binding flag set.
1081 1082 1083
 *
 * The caller must hold @udev's device lock.
 */
1084
static void rebind_marked_interfaces(struct usb_device *udev)
1085 1086 1087 1088 1089 1090 1091 1092 1093
{
	struct usb_host_config	*config;
	int			i;
	struct usb_interface	*intf;

	config = udev->actconfig;
	if (config) {
		for (i = 0; i < config->desc.bNumInterfaces; ++i) {
			intf = config->interface[i];
1094 1095
			if (intf->needs_binding)
				usb_rebind_intf(intf);
1096 1097 1098 1099
		}
	}
}

1100 1101 1102 1103
/*
 * Unbind all of @udev's marked interfaces and then rebind all of them.
 * This ordering is necessary because some drivers claim several interfaces
 * when they are first probed.
1104 1105 1106
 *
 * The caller must hold @udev's device lock.
 */
1107
void usb_unbind_and_rebind_marked_interfaces(struct usb_device *udev)
1108
{
1109 1110
	unbind_marked_interfaces(udev);
	rebind_marked_interfaces(udev);
1111 1112
}

1113 1114 1115 1116 1117 1118 1119 1120 1121
#ifdef CONFIG_PM

/* Unbind drivers for @udev's interfaces that don't support suspend/resume
 * There is no check for reset_resume here because it can be determined
 * only during resume whether reset_resume is needed.
 *
 * The caller must hold @udev's device lock.
 */
static void unbind_no_pm_drivers_interfaces(struct usb_device *udev)
1122 1123 1124 1125
{
	struct usb_host_config	*config;
	int			i;
	struct usb_interface	*intf;
1126
	struct usb_driver	*drv;
1127 1128 1129 1130 1131

	config = udev->actconfig;
	if (config) {
		for (i = 0; i < config->desc.bNumInterfaces; ++i) {
			intf = config->interface[i];
1132 1133 1134 1135 1136 1137

			if (intf->dev.driver) {
				drv = to_usb_driver(intf->dev.driver);
				if (!drv->suspend || !drv->resume)
					usb_forced_unbind_intf(intf);
			}
1138 1139 1140 1141
		}
	}
}

1142
static int usb_suspend_device(struct usb_device *udev, pm_message_t msg)
1143
{
1144
	struct usb_device_driver	*udriver;
1145
	int				status = 0;
1146

1147 1148 1149 1150
	if (udev->state == USB_STATE_NOTATTACHED ||
			udev->state == USB_STATE_SUSPENDED)
		goto done;

1151 1152 1153 1154
	/* For devices that don't have a driver, we do a generic suspend. */
	if (udev->dev.driver)
		udriver = to_usb_device_driver(udev->dev.driver);
	else {
1155
		udev->do_remote_wakeup = 0;
1156
		udriver = &usb_generic_driver;
1157
	}
1158 1159
	status = udriver->suspend(udev, msg);

A
Alan Stern 已提交
1160
 done:
1161
	dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1162
	return status;
1163 1164
}

A
Alan Stern 已提交
1165
static int usb_resume_device(struct usb_device *udev, pm_message_t msg)
1166 1167
{
	struct usb_device_driver	*udriver;
1168
	int				status = 0;
1169

A
Alan Stern 已提交
1170 1171
	if (udev->state == USB_STATE_NOTATTACHED)
		goto done;
1172

1173 1174 1175
	/* Can't resume it if it doesn't have a driver. */
	if (udev->dev.driver == NULL) {
		status = -ENOTCONN;
1176
		goto done;
1177 1178
	}

1179 1180 1181
	/* Non-root devices on a full/low-speed bus must wait for their
	 * companion high-speed root hub, in case a handoff is needed.
	 */
1182
	if (!PMSG_IS_AUTO(msg) && udev->parent && udev->bus->hs_companion)
1183 1184 1185
		device_pm_wait_for_dev(&udev->dev,
				&udev->bus->hs_companion->root_hub->dev);

A
Alan Stern 已提交
1186 1187 1188
	if (udev->quirks & USB_QUIRK_RESET_RESUME)
		udev->reset_resume = 1;

1189
	udriver = to_usb_device_driver(udev->dev.driver);
A
Alan Stern 已提交
1190
	status = udriver->resume(udev, msg);
1191

A
Alan Stern 已提交
1192
 done:
1193
	dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1194
	return status;
1195 1196
}

1197 1198
static int usb_suspend_interface(struct usb_device *udev,
		struct usb_interface *intf, pm_message_t msg)
1199 1200
{
	struct usb_driver	*driver;
1201
	int			status = 0;
1202

1203 1204
	if (udev->state == USB_STATE_NOTATTACHED ||
			intf->condition == USB_INTERFACE_UNBOUND)
1205
		goto done;
1206
	driver = to_usb_driver(intf->dev.driver);
1207

1208 1209 1210 1211
	/* at this time we know the driver supports suspend */
	status = driver->suspend(intf, msg);
	if (status && !PMSG_IS_AUTO(msg))
		dev_err(&intf->dev, "suspend error %d\n", status);
1212

A
Alan Stern 已提交
1213
 done:
1214
	dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status);
1215 1216 1217
	return status;
}

1218
static int usb_resume_interface(struct usb_device *udev,
A
Alan Stern 已提交
1219
		struct usb_interface *intf, pm_message_t msg, int reset_resume)
1220
{
1221
	struct usb_driver	*driver;
1222
	int			status = 0;
1223

1224
	if (udev->state == USB_STATE_NOTATTACHED)
1225
		goto done;
1226

1227 1228 1229 1230
	/* Don't let autoresume interfere with unbinding */
	if (intf->condition == USB_INTERFACE_UNBINDING)
		goto done;

1231
	/* Can't resume it if it doesn't have a driver. */
1232 1233 1234
	if (intf->condition == USB_INTERFACE_UNBOUND) {

		/* Carry out a deferred switch to altsetting 0 */
1235
		if (intf->needs_altsetting0 && !intf->dev.power.is_prepared) {
1236 1237 1238 1239
			usb_set_interface(udev, intf->altsetting[0].
					desc.bInterfaceNumber, 0);
			intf->needs_altsetting0 = 0;
		}
1240
		goto done;
1241
	}
1242 1243 1244

	/* Don't resume if the interface is marked for rebinding */
	if (intf->needs_binding)
1245
		goto done;
1246
	driver = to_usb_driver(intf->dev.driver);
1247

A
Alan Stern 已提交
1248 1249 1250 1251 1252 1253 1254
	if (reset_resume) {
		if (driver->reset_resume) {
			status = driver->reset_resume(intf);
			if (status)
				dev_err(&intf->dev, "%s error %d\n",
						"reset_resume", status);
		} else {
1255
			intf->needs_binding = 1;
1256 1257
			dev_dbg(&intf->dev, "no reset_resume for driver %s?\n",
					driver->name);
A
Alan Stern 已提交
1258 1259
		}
	} else {
1260 1261 1262
		status = driver->resume(intf);
		if (status)
			dev_err(&intf->dev, "resume error %d\n", status);
A
Alan Stern 已提交
1263
	}
1264 1265

done:
1266
	dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status);
A
Alan Stern 已提交
1267

1268
	/* Later we will unbind the driver and/or reprobe, if necessary */
1269
	return status;
1270 1271
}

1272 1273 1274 1275 1276 1277 1278
/**
 * usb_suspend_both - suspend a USB device and its interfaces
 * @udev: the usb_device to suspend
 * @msg: Power Management message describing this state transition
 *
 * This is the central routine for suspending USB devices.  It calls the
 * suspend methods for all the interface drivers in @udev and then calls
M
Ming Lei 已提交
1279 1280 1281 1282 1283 1284 1285 1286
 * the suspend method for @udev itself.  When the routine is called in
 * autosuspend, if an error occurs at any stage, all the interfaces
 * which were suspended are resumed so that they remain in the same
 * state as the device, but when called from system sleep, all error
 * from suspend methods of interfaces and the non-root-hub device itself
 * are simply ignored, so all suspended interfaces are only resumed
 * to the device's state when @udev is root-hub and its suspend method
 * returns failure.
1287
 *
1288 1289 1290 1291 1292 1293
 * Autosuspend requests originating from a child device or an interface
 * driver may be made without the protection of @udev's device lock, but
 * all other suspend calls will hold the lock.  Usbcore will insure that
 * method calls do not arrive during bind, unbind, or reset operations.
 * However drivers must be prepared to handle suspend calls arriving at
 * unpredictable times.
1294 1295
 *
 * This routine can run only in process context.
1296 1297
 *
 * Return: 0 if the suspend succeeded.
1298
 */
A
Alan Stern 已提交
1299
static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
1300 1301
{
	int			status = 0;
1302
	int			i = 0, n = 0;
1303
	struct usb_interface	*intf;
1304

1305 1306 1307
	if (udev->state == USB_STATE_NOTATTACHED ||
			udev->state == USB_STATE_SUSPENDED)
		goto done;
1308

1309
	/* Suspend all the interfaces and then udev itself */
1310
	if (udev->actconfig) {
1311 1312
		n = udev->actconfig->desc.bNumInterfaces;
		for (i = n - 1; i >= 0; --i) {
1313
			intf = udev->actconfig->interface[i];
1314
			status = usb_suspend_interface(udev, intf, msg);
1315 1316

			/* Ignore errors during system sleep transitions */
1317
			if (!PMSG_IS_AUTO(msg))
1318
				status = 0;
1319 1320 1321 1322
			if (status != 0)
				break;
		}
	}
1323
	if (status == 0) {
1324
		status = usb_suspend_device(udev, msg);
1325

1326 1327 1328 1329 1330 1331 1332
		/*
		 * Ignore errors from non-root-hub devices during
		 * system sleep transitions.  For the most part,
		 * these devices should go to low power anyway when
		 * the entire bus is suspended.
		 */
		if (udev->parent && !PMSG_IS_AUTO(msg))
1333
			status = 0;
1334 1335 1336 1337 1338 1339 1340 1341 1342

		/*
		 * If the device is inaccessible, don't try to resume
		 * suspended interfaces and just return the error.
		 */
		if (status && status != -EBUSY) {
			int err;
			u16 devstat;

1343 1344
			err = usb_get_std_status(udev, USB_RECIP_DEVICE, 0,
						 &devstat);
1345 1346 1347 1348 1349 1350 1351
			if (err) {
				dev_err(&udev->dev,
					"Failed to suspend device, error %d\n",
					status);
				goto done;
			}
		}
1352 1353
	}

1354 1355
	/* If the suspend failed, resume interfaces that did get suspended */
	if (status != 0) {
1356 1357 1358 1359 1360 1361
		if (udev->actconfig) {
			msg.event ^= (PM_EVENT_SUSPEND | PM_EVENT_RESUME);
			while (++i < n) {
				intf = udev->actconfig->interface[i];
				usb_resume_interface(udev, intf, msg, 0);
			}
1362
		}
1363

1364 1365
	/* If the suspend succeeded then prevent any more URB submissions
	 * and flush any outstanding URBs.
1366
	 */
A
Alan Stern 已提交
1367
	} else {
1368 1369 1370 1371 1372
		udev->can_submit = 0;
		for (i = 0; i < 16; ++i) {
			usb_hcd_flush_endpoint(udev, udev->ep_out[i]);
			usb_hcd_flush_endpoint(udev, udev->ep_in[i]);
		}
A
Alan Stern 已提交
1373
	}
1374

1375
 done:
1376
	dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
1377 1378 1379
	return status;
}

1380 1381 1382
/**
 * usb_resume_both - resume a USB device and its interfaces
 * @udev: the usb_device to resume
A
Alan Stern 已提交
1383
 * @msg: Power Management message describing this state transition
1384 1385 1386 1387 1388
 *
 * This is the central routine for resuming USB devices.  It calls the
 * the resume method for @udev and then calls the resume methods for all
 * the interface drivers in @udev.
 *
1389 1390 1391 1392 1393 1394
 * Autoresume requests originating from a child device or an interface
 * driver may be made without the protection of @udev's device lock, but
 * all other resume calls will hold the lock.  Usbcore will insure that
 * method calls do not arrive during bind, unbind, or reset operations.
 * However drivers must be prepared to handle resume calls arriving at
 * unpredictable times.
1395 1396
 *
 * This routine can run only in process context.
1397 1398
 *
 * Return: 0 on success.
1399
 */
A
Alan Stern 已提交
1400
static int usb_resume_both(struct usb_device *udev, pm_message_t msg)
1401
{
1402
	int			status = 0;
1403 1404
	int			i;
	struct usb_interface	*intf;
1405

1406 1407 1408 1409
	if (udev->state == USB_STATE_NOTATTACHED) {
		status = -ENODEV;
		goto done;
	}
1410
	udev->can_submit = 1;
1411

1412 1413
	/* Resume the device */
	if (udev->state == USB_STATE_SUSPENDED || udev->reset_resume)
A
Alan Stern 已提交
1414
		status = usb_resume_device(udev, msg);
1415

1416
	/* Resume the interfaces */
1417 1418 1419
	if (status == 0 && udev->actconfig) {
		for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
			intf = udev->actconfig->interface[i];
A
Alan Stern 已提交
1420 1421
			usb_resume_interface(udev, intf, msg,
					udev->reset_resume);
1422 1423
		}
	}
1424
	usb_mark_last_busy(udev);
1425

1426
 done:
1427
	dev_vdbg(&udev->dev, "%s: status %d\n", __func__, status);
A
Alan Stern 已提交
1428 1429
	if (!status)
		udev->reset_resume = 0;
1430 1431 1432
	return status;
}

1433 1434
static void choose_wakeup(struct usb_device *udev, pm_message_t msg)
{
1435
	int	w;
1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446

	/* Remote wakeup is needed only when we actually go to sleep.
	 * For things like FREEZE and QUIESCE, if the device is already
	 * autosuspended then its current wakeup setting is okay.
	 */
	if (msg.event == PM_EVENT_FREEZE || msg.event == PM_EVENT_QUIESCE) {
		if (udev->state != USB_STATE_SUSPENDED)
			udev->do_remote_wakeup = 0;
		return;
	}

1447
	/* Enable remote wakeup if it is allowed, even if no interface drivers
1448 1449
	 * actually want it.
	 */
1450
	w = device_may_wakeup(&udev->dev);
1451 1452 1453 1454 1455 1456 1457 1458 1459

	/* If the device is autosuspended with the wrong wakeup setting,
	 * autoresume now so the setting can be changed.
	 */
	if (udev->state == USB_STATE_SUSPENDED && w != udev->do_remote_wakeup)
		pm_runtime_resume(&udev->dev);
	udev->do_remote_wakeup = w;
}

1460
/* The device lock is held by the PM core */
1461 1462
int usb_suspend(struct device *dev, pm_message_t msg)
{
1463
	struct usb_device	*udev = to_usb_device(dev);
1464
	int r;
1465

1466 1467 1468 1469 1470 1471
	unbind_no_pm_drivers_interfaces(udev);

	/* From now on we are sure all drivers support suspend/resume
	 * but not necessarily reset_resume()
	 * so we may still need to unbind and rebind upon resume
	 */
1472
	choose_wakeup(udev, msg);
1473 1474 1475 1476 1477 1478 1479 1480
	r = usb_suspend_both(udev, msg);
	if (r)
		return r;

	if (udev->quirks & USB_QUIRK_DISCONNECT_SUSPEND)
		usb_port_disable(udev);

	return 0;
1481 1482
}

1483
/* The device lock is held by the PM core */
1484
int usb_resume_complete(struct device *dev)
1485
{
1486
	struct usb_device *udev = to_usb_device(dev);
1487

1488 1489 1490
	/* For PM complete calls, all we do is rebind interfaces
	 * whose needs_binding flag is set
	 */
1491
	if (udev->state != USB_STATE_NOTATTACHED)
1492
		rebind_marked_interfaces(udev);
1493 1494
	return 0;
}
1495

1496
/* The device lock is held by the PM core */
1497 1498
int usb_resume(struct device *dev, pm_message_t msg)
{
1499
	struct usb_device	*udev = to_usb_device(dev);
1500 1501
	int			status;

1502
	/* For all calls, take the device back to full power and
1503
	 * tell the PM core in case it was autosuspended previously.
1504 1505 1506
	 * Unbind the interfaces that will need rebinding later,
	 * because they fail to support reset_resume.
	 * (This can't be done in usb_resume_interface()
1507
	 * above because it doesn't own the right set of locks.)
1508
	 */
1509 1510 1511 1512 1513
	status = usb_resume_both(udev, msg);
	if (status == 0) {
		pm_runtime_disable(dev);
		pm_runtime_set_active(dev);
		pm_runtime_enable(dev);
1514
		unbind_marked_interfaces(udev);
1515
	}
1516 1517 1518 1519

	/* Avoid PM error messages for devices disconnected while suspended
	 * as we'll display regular disconnect messages just a bit later.
	 */
1520
	if (status == -ENODEV || status == -ESHUTDOWN)
1521
		status = 0;
1522 1523 1524
	return status;
}

1525 1526 1527 1528 1529 1530 1531 1532 1533 1534
/**
 * usb_enable_autosuspend - allow a USB device to be autosuspended
 * @udev: the USB device which may be autosuspended
 *
 * This routine allows @udev to be autosuspended.  An autosuspend won't
 * take place until the autosuspend_delay has elapsed and all the other
 * necessary conditions are satisfied.
 *
 * The caller must hold @udev's device lock.
 */
1535
void usb_enable_autosuspend(struct usb_device *udev)
1536
{
1537
	pm_runtime_allow(&udev->dev);
1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549
}
EXPORT_SYMBOL_GPL(usb_enable_autosuspend);

/**
 * usb_disable_autosuspend - prevent a USB device from being autosuspended
 * @udev: the USB device which may not be autosuspended
 *
 * This routine prevents @udev from being autosuspended and wakes it up
 * if it is already autosuspended.
 *
 * The caller must hold @udev's device lock.
 */
1550
void usb_disable_autosuspend(struct usb_device *udev)
1551
{
1552
	pm_runtime_forbid(&udev->dev);
1553 1554 1555
}
EXPORT_SYMBOL_GPL(usb_disable_autosuspend);

1556 1557
/**
 * usb_autosuspend_device - delayed autosuspend of a USB device and its interfaces
1558
 * @udev: the usb_device to autosuspend
1559 1560 1561 1562 1563
 *
 * This routine should be called when a core subsystem is finished using
 * @udev and wants to allow it to autosuspend.  Examples would be when
 * @udev's device file in usbfs is closed or after a configuration change.
 *
1564 1565 1566
 * @udev's usage counter is decremented; if it drops to 0 and all the
 * interfaces are inactive then a delayed autosuspend will be attempted.
 * The attempt may fail (see autosuspend_check()).
1567
 *
1568
 * The caller must hold @udev's device lock.
1569 1570 1571
 *
 * This routine can run only in process context.
 */
1572
void usb_autosuspend_device(struct usb_device *udev)
1573
{
1574 1575
	int	status;

1576
	usb_mark_last_busy(udev);
1577
	status = pm_runtime_put_sync_autosuspend(&udev->dev);
1578 1579 1580
	dev_vdbg(&udev->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&udev->dev.power.usage_count),
			status);
1581 1582 1583 1584
}

/**
 * usb_autoresume_device - immediately autoresume a USB device and its interfaces
1585
 * @udev: the usb_device to autoresume
1586 1587
 *
 * This routine should be called when a core subsystem wants to use @udev
1588
 * and needs to guarantee that it is not suspended.  No autosuspend will
1589 1590 1591
 * occur until usb_autosuspend_device() is called.  (Note that this will
 * not prevent suspend events originating in the PM core.)  Examples would
 * be when @udev's device file in usbfs is opened or when a remote-wakeup
1592
 * request is received.
1593
 *
1594 1595
 * @udev's usage counter is incremented to prevent subsequent autosuspends.
 * However if the autoresume fails then the usage counter is re-decremented.
1596
 *
1597
 * The caller must hold @udev's device lock.
1598 1599
 *
 * This routine can run only in process context.
1600 1601
 *
 * Return: 0 on success. A negative error code otherwise.
1602
 */
1603
int usb_autoresume_device(struct usb_device *udev)
1604 1605 1606
{
	int	status;

1607 1608 1609 1610 1611 1612 1613 1614
	status = pm_runtime_get_sync(&udev->dev);
	if (status < 0)
		pm_runtime_put_sync(&udev->dev);
	dev_vdbg(&udev->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&udev->dev.power.usage_count),
			status);
	if (status > 0)
		status = 0;
A
Alan Stern 已提交
1615 1616 1617
	return status;
}

1618 1619
/**
 * usb_autopm_put_interface - decrement a USB interface's PM-usage counter
1620
 * @intf: the usb_interface whose counter should be decremented
1621 1622 1623 1624 1625 1626 1627
 *
 * This routine should be called by an interface driver when it is
 * finished using @intf and wants to allow it to autosuspend.  A typical
 * example would be a character-device driver when its device file is
 * closed.
 *
 * The routine decrements @intf's usage counter.  When the counter reaches
1628 1629
 * 0, a delayed autosuspend request for @intf's device is attempted.  The
 * attempt may fail (see autosuspend_check()).
1630 1631 1632 1633 1634
 *
 * This routine can run only in process context.
 */
void usb_autopm_put_interface(struct usb_interface *intf)
{
1635 1636
	struct usb_device	*udev = interface_to_usbdev(intf);
	int			status;
1637

1638
	usb_mark_last_busy(udev);
1639 1640 1641 1642 1643
	atomic_dec(&intf->pm_usage_cnt);
	status = pm_runtime_put_sync(&intf->dev);
	dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&intf->dev.power.usage_count),
			status);
1644 1645 1646
}
EXPORT_SYMBOL_GPL(usb_autopm_put_interface);

1647 1648 1649 1650
/**
 * usb_autopm_put_interface_async - decrement a USB interface's PM-usage counter
 * @intf: the usb_interface whose counter should be decremented
 *
1651 1652 1653 1654 1655
 * This routine does much the same thing as usb_autopm_put_interface():
 * It decrements @intf's usage counter and schedules a delayed
 * autosuspend request if the counter is <= 0.  The difference is that it
 * does not perform any synchronization; callers should hold a private
 * lock and handle all synchronization issues themselves.
1656 1657 1658 1659 1660 1661 1662 1663 1664
 *
 * Typically a driver would call this routine during an URB's completion
 * handler, if no more URBs were pending.
 *
 * This routine can run in atomic context.
 */
void usb_autopm_put_interface_async(struct usb_interface *intf)
{
	struct usb_device	*udev = interface_to_usbdev(intf);
1665
	int			status;
1666

1667
	usb_mark_last_busy(udev);
1668
	atomic_dec(&intf->pm_usage_cnt);
1669
	status = pm_runtime_put(&intf->dev);
1670 1671 1672
	dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&intf->dev.power.usage_count),
			status);
1673 1674 1675
}
EXPORT_SYMBOL_GPL(usb_autopm_put_interface_async);

1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688
/**
 * usb_autopm_put_interface_no_suspend - decrement a USB interface's PM-usage counter
 * @intf: the usb_interface whose counter should be decremented
 *
 * This routine decrements @intf's usage counter but does not carry out an
 * autosuspend.
 *
 * This routine can run in atomic context.
 */
void usb_autopm_put_interface_no_suspend(struct usb_interface *intf)
{
	struct usb_device	*udev = interface_to_usbdev(intf);

1689
	usb_mark_last_busy(udev);
1690 1691 1692 1693 1694
	atomic_dec(&intf->pm_usage_cnt);
	pm_runtime_put_noidle(&intf->dev);
}
EXPORT_SYMBOL_GPL(usb_autopm_put_interface_no_suspend);

1695 1696
/**
 * usb_autopm_get_interface - increment a USB interface's PM-usage counter
1697
 * @intf: the usb_interface whose counter should be incremented
1698 1699 1700 1701 1702 1703 1704 1705 1706
 *
 * This routine should be called by an interface driver when it wants to
 * use @intf and needs to guarantee that it is not suspended.  In addition,
 * the routine prevents @intf from being autosuspended subsequently.  (Note
 * that this will not prevent suspend events originating in the PM core.)
 * This prevention will persist until usb_autopm_put_interface() is called
 * or @intf is unbound.  A typical example would be a character-device
 * driver when its device file is opened.
 *
1707 1708
 * @intf's usage counter is incremented to prevent subsequent autosuspends.
 * However if the autoresume fails then the counter is re-decremented.
1709 1710
 *
 * This routine can run only in process context.
1711 1712
 *
 * Return: 0 on success.
1713 1714 1715
 */
int usb_autopm_get_interface(struct usb_interface *intf)
{
A
Alan Stern 已提交
1716
	int	status;
1717

1718 1719 1720 1721 1722 1723 1724 1725 1726 1727
	status = pm_runtime_get_sync(&intf->dev);
	if (status < 0)
		pm_runtime_put_sync(&intf->dev);
	else
		atomic_inc(&intf->pm_usage_cnt);
	dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&intf->dev.power.usage_count),
			status);
	if (status > 0)
		status = 0;
1728 1729
	return status;
}
1730 1731
EXPORT_SYMBOL_GPL(usb_autopm_get_interface);

1732 1733 1734 1735 1736
/**
 * usb_autopm_get_interface_async - increment a USB interface's PM-usage counter
 * @intf: the usb_interface whose counter should be incremented
 *
 * This routine does much the same thing as
1737 1738 1739 1740 1741 1742 1743
 * usb_autopm_get_interface(): It increments @intf's usage counter and
 * queues an autoresume request if the device is suspended.  The
 * differences are that it does not perform any synchronization (callers
 * should hold a private lock and handle all synchronization issues
 * themselves), and it does not autoresume the device directly (it only
 * queues a request).  After a successful call, the device may not yet be
 * resumed.
1744 1745
 *
 * This routine can run in atomic context.
1746 1747
 *
 * Return: 0 on success. A negative error code otherwise.
1748 1749 1750
 */
int usb_autopm_get_interface_async(struct usb_interface *intf)
{
1751
	int	status;
1752

1753
	status = pm_runtime_get(&intf->dev);
1754 1755 1756
	if (status < 0 && status != -EINPROGRESS)
		pm_runtime_put_noidle(&intf->dev);
	else
A
Alan Stern 已提交
1757
		atomic_inc(&intf->pm_usage_cnt);
1758 1759 1760
	dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
			__func__, atomic_read(&intf->dev.power.usage_count),
			status);
1761
	if (status > 0 || status == -EINPROGRESS)
1762
		status = 0;
1763 1764 1765 1766
	return status;
}
EXPORT_SYMBOL_GPL(usb_autopm_get_interface_async);

1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779
/**
 * usb_autopm_get_interface_no_resume - increment a USB interface's PM-usage counter
 * @intf: the usb_interface whose counter should be incremented
 *
 * This routine increments @intf's usage counter but does not carry out an
 * autoresume.
 *
 * This routine can run in atomic context.
 */
void usb_autopm_get_interface_no_resume(struct usb_interface *intf)
{
	struct usb_device	*udev = interface_to_usbdev(intf);

1780
	usb_mark_last_busy(udev);
1781 1782 1783 1784 1785 1786 1787 1788
	atomic_inc(&intf->pm_usage_cnt);
	pm_runtime_get_noresume(&intf->dev);
}
EXPORT_SYMBOL_GPL(usb_autopm_get_interface_no_resume);

/* Internal routine to check whether we may autosuspend a device. */
static int autosuspend_check(struct usb_device *udev)
{
1789
	int			w, i;
1790 1791
	struct usb_interface	*intf;

1792 1793 1794
	if (udev->state == USB_STATE_NOTATTACHED)
		return -ENODEV;

1795 1796 1797
	/* Fail if autosuspend is disabled, or any interfaces are in use, or
	 * any interface drivers require remote wakeup but it isn't available.
	 */
1798
	w = 0;
1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811
	if (udev->actconfig) {
		for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
			intf = udev->actconfig->interface[i];

			/* We don't need to check interfaces that are
			 * disabled for runtime PM.  Either they are unbound
			 * or else their drivers don't support autosuspend
			 * and so they are permanently active.
			 */
			if (intf->dev.power.disable_depth)
				continue;
			if (atomic_read(&intf->dev.power.usage_count) > 0)
				return -EBUSY;
1812
			w |= intf->needs_remote_wakeup;
1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827

			/* Don't allow autosuspend if the device will need
			 * a reset-resume and any of its interface drivers
			 * doesn't include support or needs remote wakeup.
			 */
			if (udev->quirks & USB_QUIRK_RESET_RESUME) {
				struct usb_driver *driver;

				driver = to_usb_driver(intf->dev.driver);
				if (!driver->reset_resume ||
						intf->needs_remote_wakeup)
					return -EOPNOTSUPP;
			}
		}
	}
1828 1829 1830 1831
	if (w && !device_can_wakeup(&udev->dev)) {
		dev_dbg(&udev->dev, "remote wakeup needed for autosuspend\n");
		return -EOPNOTSUPP;
	}
1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843

	/*
	 * If the device is a direct child of the root hub and the HCD
	 * doesn't handle wakeup requests, don't allow autosuspend when
	 * wakeup is needed.
	 */
	if (w && udev->parent == udev->bus->root_hub &&
			bus_to_hcd(udev->bus)->cant_recv_wakeups) {
		dev_dbg(&udev->dev, "HCD doesn't handle wakeup requests\n");
		return -EOPNOTSUPP;
	}

1844
	udev->do_remote_wakeup = w;
1845 1846 1847
	return 0;
}

1848
int usb_runtime_suspend(struct device *dev)
1849
{
1850 1851
	struct usb_device	*udev = to_usb_device(dev);
	int			status;
A
Alan Stern 已提交
1852

1853 1854 1855 1856
	/* A USB device can be suspended if it passes the various autosuspend
	 * checks.  Runtime suspend for a USB device means suspending all the
	 * interfaces and then the device itself.
	 */
1857 1858
	if (autosuspend_check(udev) != 0)
		return -EAGAIN;
1859

1860
	status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
1861 1862 1863 1864 1865

	/* Allow a retry if autosuspend failed temporarily */
	if (status == -EAGAIN || status == -EBUSY)
		usb_mark_last_busy(udev);

1866 1867 1868 1869 1870
	/*
	 * The PM core reacts badly unless the return code is 0,
	 * -EAGAIN, or -EBUSY, so always return -EBUSY on an error
	 * (except for root hubs, because they don't suspend through
	 * an upstream port like other USB devices).
1871
	 */
1872
	if (status != 0 && udev->parent)
1873
		return -EBUSY;
1874 1875 1876
	return status;
}

1877
int usb_runtime_resume(struct device *dev)
1878
{
1879 1880 1881
	struct usb_device	*udev = to_usb_device(dev);
	int			status;

1882 1883 1884
	/* Runtime resume for a USB device means resuming both the device
	 * and all its interfaces.
	 */
1885 1886
	status = usb_resume_both(udev, PMSG_AUTO_RESUME);
	return status;
1887 1888
}

1889
int usb_runtime_idle(struct device *dev)
1890
{
1891 1892
	struct usb_device	*udev = to_usb_device(dev);

1893
	/* An idle USB device can be suspended if it passes the various
1894
	 * autosuspend checks.
1895
	 */
1896
	if (autosuspend_check(udev) == 0)
1897
		pm_runtime_autosuspend(dev);
1898 1899
	/* Tell the core not to suspend it, though. */
	return -EBUSY;
1900 1901
}

A
Andiry Xu 已提交
1902 1903 1904 1905 1906
int usb_set_usb2_hardware_lpm(struct usb_device *udev, int enable)
{
	struct usb_hcd *hcd = bus_to_hcd(udev->bus);
	int ret = -EPERM;

1907 1908 1909
	if (enable && !udev->usb2_hw_lpm_allowed)
		return 0;

A
Andiry Xu 已提交
1910 1911 1912 1913 1914 1915 1916 1917 1918
	if (hcd->driver->set_usb2_hw_lpm) {
		ret = hcd->driver->set_usb2_hw_lpm(hcd, udev, enable);
		if (!ret)
			udev->usb2_hw_lpm_enabled = enable;
	}

	return ret;
}

1919
#endif /* CONFIG_PM */
1920

1921 1922 1923 1924
struct bus_type usb_bus_type = {
	.name =		"usb",
	.match =	usb_device_match,
	.uevent =	usb_uevent,
1925
	.need_parent_lock =	true,
1926
};