[adm5120] sync kernel config
[openwrt-10.03/.git] / target / linux / adm5120 / patches-2.6.28 / 800-usb_automatically_enable_rhsc_interrupt.patch
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
4          */
5         .hub_status_data =      admhc_hub_status_data,
6         .hub_control =          admhc_hub_control,
7 -       .hub_irq_enable =       admhc_hub_irq_enable,
8  #ifdef CONFIG_PM
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
13 @@ -63,20 +63,6 @@
14  
15  /*-------------------------------------------------------------------------*/
16  
17 -/* hcd->hub_irq_enable() */
18 -static void admhc_hub_irq_enable(struct usb_hcd *hcd)
19 -{
20 -       struct admhcd   *ahcd = hcd_to_admhcd(hcd);
21 -
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);
27 -}
28 -
29 -/*-------------------------------------------------------------------------*/
30 -
31  /* build "status change" packet (one or two bytes) from HC registers */
32  
33  static int
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,
38                 int any_connected)
39  {
40 -       int     poll_rh = 1;
41 -
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)
45 -               poll_rh = 0;
46 +               return 0;
47 +
48 +       /* If no status changes are pending, enable status-change interrupts */
49 +       if (!changed) {
50 +               admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
51 +               return 0;
52 +       }
53  
54 -       return poll_rh;
55 +       return 1;
56  }
57  
58  #endif /* CONFIG_PM */
59 --- a/drivers/usb/host/adm5120-hcd.c
60 +++ b/drivers/usb/host/adm5120-hcd.c
61 @@ -46,7 +46,7 @@
62  #include "../core/hcd.h"
63  #include "../core/hub.h"
64  
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"
69