diff options
Diffstat (limited to 'sys/dev/usb/usb_hub.c')
-rw-r--r-- | sys/dev/usb/usb_hub.c | 21 |
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) { |