diff options
author | David Brownell <david-b@pacbell.net> | 2005-09-13 22:56:33 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-10-28 19:47:38 -0400 |
commit | db69087437dd5135a9362da1c37fe072070e8f60 (patch) | |
tree | 1affacd290eff29b5dc589bbf47369e20d6101db /drivers/usb/input | |
parent | 7586269c0b52970f60bb69fcb86e765fc1d72309 (diff) |
[PATCH] usb_interface power state
This updates the handling of power state for USB interfaces.
- Formalizes an existing invariant: interface "power state" is a boolean:
ON when I/O is allowed, and FREEZE otherwise. It does so by defining
some inlined helpers, then using them.
- Adds a useful invariant: the only interfaces marked active are those
bound to non-suspended drivers. Later patches build on this invariant.
- Simplifies the interface driver API (and removes some error paths) by
removing the requirement that they record power state changes during
suspend and resume callbacks. Now usbcore does that.
A few drivers were simplified to address that last change.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/hub.c | 33 +++++++++------------
drivers/usb/core/message.c | 1
drivers/usb/core/usb.c | 65 +++++++++++++++++++++++++++++++++----------
drivers/usb/core/usb.h | 18 +++++++++++
drivers/usb/input/hid-core.c | 2 -
drivers/usb/misc/usbtest.c | 10 ------
drivers/usb/net/pegasus.c | 2 -
drivers/usb/net/usbnet.c | 2 -
8 files changed, 85 insertions(+), 48 deletions(-)
Diffstat (limited to 'drivers/usb/input')
-rw-r--r-- | drivers/usb/input/hid-core.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index 411a0645a7a3..f7fcce731f54 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
@@ -1887,7 +1887,6 @@ static int hid_suspend(struct usb_interface *intf, pm_message_t message) | |||
1887 | struct hid_device *hid = usb_get_intfdata (intf); | 1887 | struct hid_device *hid = usb_get_intfdata (intf); |
1888 | 1888 | ||
1889 | usb_kill_urb(hid->urbin); | 1889 | usb_kill_urb(hid->urbin); |
1890 | intf->dev.power.power_state = PMSG_SUSPEND; | ||
1891 | dev_dbg(&intf->dev, "suspend\n"); | 1890 | dev_dbg(&intf->dev, "suspend\n"); |
1892 | return 0; | 1891 | return 0; |
1893 | } | 1892 | } |
@@ -1897,7 +1896,6 @@ static int hid_resume(struct usb_interface *intf) | |||
1897 | struct hid_device *hid = usb_get_intfdata (intf); | 1896 | struct hid_device *hid = usb_get_intfdata (intf); |
1898 | int status; | 1897 | int status; |
1899 | 1898 | ||
1900 | intf->dev.power.power_state = PMSG_ON; | ||
1901 | if (hid->open) | 1899 | if (hid->open) |
1902 | status = usb_submit_urb(hid->urbin, GFP_NOIO); | 1900 | status = usb_submit_urb(hid->urbin, GFP_NOIO); |
1903 | else | 1901 | else |