summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/usb_hub.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/usb_hub.c')
-rw-r--r--sys/dev/usb/usb_hub.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/dev/usb/usb_hub.c b/sys/dev/usb/usb_hub.c
index 5c435d0..6961ff4 100644
--- a/sys/dev/usb/usb_hub.c
+++ b/sys/dev/usb/usb_hub.c
@@ -544,7 +544,8 @@ uhub_explore(struct usb2_device *udev)
if (udev->depth > USB_HUB_MAX_DEPTH) {
return (USB_ERR_TOO_DEEP);
}
- if (udev->state == USB_STATE_SUSPENDED) {
+
+ if (udev->flags.self_suspended) {
/* need to wait until the child signals resume */
DPRINTF("Device is suspended!\n");
return (0);
@@ -1518,7 +1519,7 @@ usb2_transfer_power_ref(struct usb2_xfer *xfer, int val)
udev->pwr_save.write_refs += val;
}
- if (udev->state == USB_STATE_SUSPENDED)
+ if (udev->flags.self_suspended)
needs_explore =
(udev->pwr_save.write_refs != 0) ||
((udev->pwr_save.read_refs != 0) &&
@@ -1600,7 +1601,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
(rem_wakeup == 0))) {
/* check if we are suspended */
- if (udev->state == USB_STATE_SUSPENDED) {
+ if (udev->flags.self_suspended != 0) {
USB_BUS_UNLOCK(bus);
usb2_dev_resume_peer(udev);
USB_BUS_LOCK(bus);
@@ -1608,7 +1609,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
} else if (temp >= limit) {
/* check if we are not suspended */
- if (udev->state != USB_STATE_SUSPENDED) {
+ if (udev->flags.self_suspended == 0) {
USB_BUS_UNLOCK(bus);
usb2_dev_suspend_peer(udev);
USB_BUS_LOCK(bus);
@@ -1647,7 +1648,7 @@ usb2_bus_powerd(struct usb2_bus *bus)
if (temp < mintime)
mintime = temp;
- if (udev->state != USB_STATE_SUSPENDED) {
+ if (udev->flags.self_suspended == 0) {
type_refs[0] += udev->pwr_save.type_refs[0];
type_refs[1] += udev->pwr_save.type_refs[1];
type_refs[2] += udev->pwr_save.type_refs[2];
@@ -1697,7 +1698,7 @@ usb2_dev_resume_peer(struct usb2_device *udev)
return;
/* check if already resumed */
- if (udev->state != USB_STATE_SUSPENDED)
+ if (udev->flags.self_suspended == 0)
return;
/* we need a parent HUB to do resume */
@@ -1737,7 +1738,7 @@ usb2_dev_resume_peer(struct usb2_device *udev)
}
USB_BUS_LOCK(bus);
/* set that this device is now resumed */
- usb2_set_device_state(udev, USB_STATE_CONFIGURED);
+ udev->flags.self_suspended = 0;
#if USB_HAVE_POWERD
/* make sure that we don't go into suspend right away */
udev->pwr_save.last_xfer_time = ticks;
@@ -1797,7 +1798,7 @@ repeat:
return;
/* check if already suspended */
- if (udev->state == USB_STATE_SUSPENDED)
+ if (udev->flags.self_suspended)
return;
/* we need a parent HUB to do suspend */
@@ -1819,7 +1820,7 @@ repeat:
if (child == NULL)
continue;
- if (child->state == USB_STATE_SUSPENDED)
+ if (child->flags.self_suspended)
continue;
DPRINTFN(1, "Port %u is busy on the HUB!\n", x + 1);
@@ -1846,7 +1847,7 @@ repeat:
* Set that this device is suspended. This variable must be set
* before calling USB controller suspend callbacks.
*/
- usb2_set_device_state(udev, USB_STATE_SUSPENDED);
+ udev->flags.self_suspended = 1;
USB_BUS_UNLOCK(udev->bus);
if (udev->bus->methods->device_suspend != NULL) {
OpenPOWER on IntegriCloud