forked from luck/tmp_suning_uos_patched
[PATCH] remove duplicated resume path code
This gets rid of some inconsistently duplicated logic to resume interfaces. Similar code was in both finish_port_resume() and in usb_generic_resume(). Now there is just one copy of that code, accessed regardless of whether CONFIG_USB_SUSPEND is enabled. Fault handling is also more consistent. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
390a8c345e
commit
dbc3887e7d
@ -1723,6 +1723,7 @@ static int finish_port_resume(struct usb_device *udev)
|
||||
status);
|
||||
else if (udev->actconfig) {
|
||||
unsigned i;
|
||||
int (*resume)(struct device *);
|
||||
|
||||
le16_to_cpus(&devstatus);
|
||||
if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) {
|
||||
@ -1741,35 +1742,11 @@ static int finish_port_resume(struct usb_device *udev)
|
||||
}
|
||||
|
||||
/* resume interface drivers; if this is a hub, it
|
||||
* resumes the child devices
|
||||
* may have a child resume event to deal with soon
|
||||
*/
|
||||
for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++) {
|
||||
struct usb_interface *intf;
|
||||
struct usb_driver *driver;
|
||||
|
||||
intf = udev->actconfig->interface[i];
|
||||
if (is_active(intf))
|
||||
continue;
|
||||
if (!intf->dev.driver) {
|
||||
/* FIXME maybe force to alt 0 */
|
||||
continue;
|
||||
}
|
||||
driver = to_usb_driver(intf->dev.driver);
|
||||
|
||||
/* bus_rescan_devices() may rebind drivers */
|
||||
if (!driver->resume)
|
||||
continue;
|
||||
|
||||
/* can we do better than just logging errors? */
|
||||
mark_active(intf);
|
||||
status = driver->resume(intf);
|
||||
if (status < 0) {
|
||||
mark_quiesced(intf);
|
||||
dev_dbg(&intf->dev,
|
||||
"resume error %d\n",
|
||||
status);
|
||||
}
|
||||
}
|
||||
resume = udev->dev.bus->resume;
|
||||
for (i = 0; i < udev->actconfig->desc.bNumInterfaces; i++)
|
||||
(void) resume(&udev->actconfig->interface[i]->dev);
|
||||
status = 0;
|
||||
|
||||
} else if (udev->devnum <= 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user