generic: ar8216: add setup_port field to ar8xxx_chip
[openwrt.git] / target / linux / adm5120 / files / drivers / usb / host / adm5120-pm.c
index ac7bf6c..0ccf829 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * ADM5120 HCD (Host Controller Driver) for USB
  *
- * Copyright (C) 2007,2008 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org>
  *
  * This file was derived from fragments of the OHCI driver.
  *   (C) Copyright 1999 Roman Weissgaerber <weissg@vienna.at>
@@ -383,9 +383,8 @@ static int admhc_restart(struct admhcd *ahcd)
                                        ed, ed->state);
                }
 
-               spin_lock(&urb->lock);
-               urb->status = -ESHUTDOWN;
-               spin_unlock(&urb->lock);
+               if (!urb->unlinked)
+                       urb->unlinked = -ESHUTDOWN;
        }
        finish_unlinks(ahcd, 0);
        spin_unlock_irq(&ahcd->lock);
@@ -433,13 +432,17 @@ static inline int admhc_rh_resume(struct admhcd *ahcd)
 static int admhc_root_hub_state_changes(struct admhcd *ahcd, int changed,
                int any_connected)
 {
-       int     poll_rh = 1;
-
-       /* keep on polling until RHSC is enabled */
+       /* If INSM is enabled, don't poll */
        if (admhc_readl(ahcd, &ahcd->regs->int_enable) & ADMHC_INTR_INSM)
-               poll_rh = 0;
+               return 0;
 
-       return poll_rh;
+       /* If no status changes are pending, enable status-change interrupts */
+       if (!changed) {
+               admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
+               return 0;
+       }
+
+       return 1;
 }
 
 #endif /* CONFIG_PM */
This page took 0.033945 seconds and 4 git commands to generate.