summaryrefslogtreecommitdiffstats
path: root/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2009-05-22 06:46:42 +0000
committerGabor Juhos <juhosg@openwrt.org>2009-05-22 06:46:42 +0000
commitcbb550605fbdb3597c802042c1908df6766fb272 (patch)
tree0771006f24628c45ecd4a2f12706f565c619a651 /target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
parentcf935e761391c3178280d28cbac2639bfe7698e5 (diff)
downloadmaster-31e0f0ae-cbb550605fbdb3597c802042c1908df6766fb272.tar.gz
master-31e0f0ae-cbb550605fbdb3597c802042c1908df6766fb272.tar.bz2
master-31e0f0ae-cbb550605fbdb3597c802042c1908df6766fb272.zip
integrate 2.6.28 specific patch into the usb driver
SVN-Revision: 15975
Diffstat (limited to 'target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c')
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
index 9d49664cba..0ccf829c2d 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c
@@ -432,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 */