diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-09 12:09:47 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-09 12:09:47 -0800 | 
| commit | 55b81e6f2795484ea8edf5805c95c007cacfa736 (patch) | |
| tree | c3724975107857fcc03b5dd649c462e4f72397be /drivers/usb/core/driver.c | |
| parent | 5983faf942f260023e547f3c5f38c1033c35cc9b (diff) | |
| parent | 08e87d0d773dc9ca5faf4c3306e238ed0ea129b0 (diff) | |
| download | olio-linux-3.10-55b81e6f2795484ea8edf5805c95c007cacfa736.tar.xz olio-linux-3.10-55b81e6f2795484ea8edf5805c95c007cacfa736.zip  | |
Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
* 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (232 commits)
  USB: Add USB-ID for Multiplex RC serial adapter to cp210x.c
  xhci: Clean up 32-bit build warnings.
  USB: update documentation for usbmon
  usb: usb-storage doesn't support dynamic id currently, the patch disables the feature to fix an oops
  drivers/usb/class/cdc-acm.c: clear dangling pointer
  drivers/usb/dwc3/dwc3-pci.c: introduce missing kfree
  drivers/usb/host/isp1760-if.c: introduce missing kfree
  usb: option: add ZD Incorporated HSPA modem
  usb: ch9: fix up MaxStreams helper
  USB: usb-skeleton.c: cleanup open_count
  USB: usb-skeleton.c: fix open/disconnect race
  xhci: Properly handle COMP_2ND_BW_ERR
  USB: remove dead code from suspend/resume path
  USB: add quirk for another camera
  drivers: usb: wusbcore: Fix dependency for USB_WUSB
  xhci: Better debugging for critical host errors.
  xhci: Be less verbose during URB cancellation.
  xhci: Remove debugging about ring structure allocation.
  xhci: Remove debugging about toggling cycle bits.
  xhci: Remove debugging for individual transfers.
  ...
Diffstat (limited to 'drivers/usb/core/driver.c')
| -rw-r--r-- | drivers/usb/core/driver.c | 36 | 
1 files changed, 14 insertions, 22 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 45887a0ff87..d40ff956881 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -45,10 +45,12 @@ ssize_t usb_store_new_id(struct usb_dynids *dynids,  	struct usb_dynid *dynid;  	u32 idVendor = 0;  	u32 idProduct = 0; +	unsigned int bInterfaceClass = 0;  	int fields = 0;  	int retval = 0; -	fields = sscanf(buf, "%x %x", &idVendor, &idProduct); +	fields = sscanf(buf, "%x %x %x", &idVendor, &idProduct, +					&bInterfaceClass);  	if (fields < 2)  		return -EINVAL; @@ -60,6 +62,10 @@ ssize_t usb_store_new_id(struct usb_dynids *dynids,  	dynid->id.idVendor = idVendor;  	dynid->id.idProduct = idProduct;  	dynid->id.match_flags = USB_DEVICE_ID_MATCH_DEVICE; +	if (fields == 3) { +		dynid->id.bInterfaceClass = (u8)bInterfaceClass; +		dynid->id.match_flags |= USB_DEVICE_ID_MATCH_INT_CLASS; +	}  	spin_lock(&dynids->lock);  	list_add_tail(&dynid->node, &dynids->list); @@ -1073,17 +1079,10 @@ static int usb_suspend_interface(struct usb_device *udev,  		goto done;  	driver = to_usb_driver(intf->dev.driver); -	if (driver->suspend) { -		status = driver->suspend(intf, msg); -		if (status && !PMSG_IS_AUTO(msg)) -			dev_err(&intf->dev, "%s error %d\n", -					"suspend", status); -	} else { -		/* Later we will unbind the driver and reprobe */ -		intf->needs_binding = 1; -		dev_warn(&intf->dev, "no %s for driver %s?\n", -				"suspend", driver->name); -	} +	/* 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);   done:  	dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status); @@ -1132,16 +1131,9 @@ static int usb_resume_interface(struct usb_device *udev,  					"reset_resume", driver->name);  		}  	} else { -		if (driver->resume) { -			status = driver->resume(intf); -			if (status) -				dev_err(&intf->dev, "%s error %d\n", -						"resume", status); -		} else { -			intf->needs_binding = 1; -			dev_warn(&intf->dev, "no %s for driver %s?\n", -					"resume", driver->name); -		} +		status = driver->resume(intf); +		if (status) +			dev_err(&intf->dev, "resume error %d\n", status);  	}  done:  |