diff options
Diffstat (limited to 'drivers/usb/host/ohci-q.c')
-rw-r--r-- | drivers/usb/host/ohci-q.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c index 15dc51ded61a..c5a1ea9145fa 100644 --- a/drivers/usb/host/ohci-q.c +++ b/drivers/usb/host/ohci-q.c | |||
@@ -912,7 +912,7 @@ rescan_all: | |||
912 | /* only take off EDs that the HC isn't using, accounting for | 912 | /* only take off EDs that the HC isn't using, accounting for |
913 | * frame counter wraps and EDs with partially retired TDs | 913 | * frame counter wraps and EDs with partially retired TDs |
914 | */ | 914 | */ |
915 | if (likely (HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) { | 915 | if (likely(ohci->rh_state == OHCI_RH_RUNNING)) { |
916 | if (tick_before (tick, ed->tick)) { | 916 | if (tick_before (tick, ed->tick)) { |
917 | skip_ed: | 917 | skip_ed: |
918 | last = &ed->ed_next; | 918 | last = &ed->ed_next; |
@@ -1012,7 +1012,7 @@ rescan_this: | |||
1012 | 1012 | ||
1013 | /* but if there's work queued, reschedule */ | 1013 | /* but if there's work queued, reschedule */ |
1014 | if (!list_empty (&ed->td_list)) { | 1014 | if (!list_empty (&ed->td_list)) { |
1015 | if (HC_IS_RUNNING(ohci_to_hcd(ohci)->state)) | 1015 | if (ohci->rh_state == OHCI_RH_RUNNING) |
1016 | ed_schedule (ohci, ed); | 1016 | ed_schedule (ohci, ed); |
1017 | } | 1017 | } |
1018 | 1018 | ||
@@ -1021,9 +1021,7 @@ rescan_this: | |||
1021 | } | 1021 | } |
1022 | 1022 | ||
1023 | /* maybe reenable control and bulk lists */ | 1023 | /* maybe reenable control and bulk lists */ |
1024 | if (HC_IS_RUNNING(ohci_to_hcd(ohci)->state) | 1024 | if (ohci->rh_state == OHCI_RH_RUNNING && !ohci->ed_rm_list) { |
1025 | && ohci_to_hcd(ohci)->state != HC_STATE_QUIESCING | ||
1026 | && !ohci->ed_rm_list) { | ||
1027 | u32 command = 0, control = 0; | 1025 | u32 command = 0, control = 0; |
1028 | 1026 | ||
1029 | if (ohci->ed_controltail) { | 1027 | if (ohci->ed_controltail) { |