summaryrefslogtreecommitdiffstats
path: root/include/linux/usb.h
diff options
context:
space:
mode:
authorAlan Stern2006-07-02 04:11:44 +0200
committerGreg Kroah-Hartman2006-09-27 20:58:50 +0200
commit4d064c080265a41324d108fccc26b72106d43db3 (patch)
tree78418a918af1ca6fa33bca474cc086fc6fa74caf /include/linux/usb.h
parentusbcore: resume device resume recursion (diff)
downloadkernel-qcow2-linux-4d064c080265a41324d108fccc26b72106d43db3.tar.gz
kernel-qcow2-linux-4d064c080265a41324d108fccc26b72106d43db3.tar.xz
kernel-qcow2-linux-4d064c080265a41324d108fccc26b72106d43db3.zip
usbcore: track whether interfaces are suspended
Currently we rely on intf->dev.power.power_state.event for tracking whether intf is suspended. This is not a reliable technique because that value is owned by the PM core, not by usbcore. This patch (as718b) adds a new flag so that we can accurately tell which interfaces are suspended and which aren't. At first one might think these flags aren't needed, since interfaces will be suspended along with their devices. It turns out there are a couple of intermediate situations where that's not quite true, such as while processing a remote-wakeup request. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/usb.h')
-rw-r--r--include/linux/usb.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index b4ccce6d0982..e22f4b386605 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -102,6 +102,7 @@ enum usb_interface_condition {
* number from the USB core by calling usb_register_dev().
* @condition: binding state of the interface: not bound, binding
* (in probe()), bound to a driver, or unbinding (in disconnect())
+ * @is_active: flag set when the interface is bound and not suspended.
* @dev: driver model's view of this device
* @class_dev: driver model's class view of this device.
*
@@ -142,6 +143,8 @@ struct usb_interface {
int minor; /* minor number this interface is
* bound to */
enum usb_interface_condition condition; /* state of binding */
+ unsigned is_active:1; /* the interface is not suspended */
+
struct device dev; /* interface specific device info */
struct class_device *class_dev;
};