1 --- a/drivers/usb/host/adm5120-drv.c
2 +++ b/drivers/usb/host/adm5120-drv.c
3 @@ -174,7 +174,6 @@ static const struct hc_driver adm5120_hc
5 .hub_status_data = admhc_hub_status_data,
6 .hub_control = admhc_hub_control,
7 - .hub_irq_enable = admhc_hub_irq_enable,
9 .bus_suspend = admhc_bus_suspend,
10 .bus_resume = admhc_bus_resume,
11 --- a/drivers/usb/host/adm5120-hub.c
12 +++ b/drivers/usb/host/adm5120-hub.c
15 /*-------------------------------------------------------------------------*/
17 -/* hcd->hub_irq_enable() */
18 -static void admhc_hub_irq_enable(struct usb_hcd *hcd)
20 - struct admhcd *ahcd = hcd_to_admhcd(hcd);
22 - spin_lock_irq(&ahcd->lock);
23 - if (!ahcd->autostop)
24 - del_timer(&hcd->rh_timer); /* Prevent next poll */
25 - admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
26 - spin_unlock_irq(&ahcd->lock);
29 -/*-------------------------------------------------------------------------*/
31 /* build "status change" packet (one or two bytes) from HC registers */
34 --- a/drivers/usb/host/adm5120-pm.c
35 +++ b/drivers/usb/host/adm5120-pm.c
36 @@ -432,13 +432,17 @@ static inline int admhc_rh_resume(struct
37 static int admhc_root_hub_state_changes(struct admhcd *ahcd, int changed,
42 - /* keep on polling until RHSC is enabled */
43 + /* If INSM is enabled, don't poll */
44 if (admhc_readl(ahcd, &ahcd->regs->int_enable) & ADMHC_INTR_INSM)
48 + /* If no status changes are pending, enable status-change interrupts */
50 + admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
58 #endif /* CONFIG_PM */
59 --- a/drivers/usb/host/adm5120-hcd.c
60 +++ b/drivers/usb/host/adm5120-hcd.c
62 #include "../core/hcd.h"
63 #include "../core/hub.h"
65 -#define DRIVER_VERSION "0.25.0"
66 +#define DRIVER_VERSION "0.27.0"
67 #define DRIVER_AUTHOR "Gabor Juhos <juhosg@openwrt.org>"
68 #define DRIVER_DESC "ADMtek USB 1.1 Host Controller Driver"