fix compile errors in USB driver under 2.6.27
authorGabor Juhos <juhosg@openwrt.org>
Tue, 7 Oct 2008 08:34:23 +0000 (08:34 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Tue, 7 Oct 2008 08:34:23 +0000 (08:34 +0000)
SVN-Revision: 12891

target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch [new file with mode: 0644]

diff --git a/target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch b/target/linux/adm5120/patches-2.6.27/800-usb_automatically_enable_rhsc_interrupt.patch
new file mode 100644 (file)
index 0000000..5e99fff
--- /dev/null
@@ -0,0 +1,69 @@
+--- a/drivers/usb/host/adm5120-drv.c
++++ b/drivers/usb/host/adm5120-drv.c
+@@ -174,7 +174,6 @@
+        */
+       .hub_status_data =      admhc_hub_status_data,
+       .hub_control =          admhc_hub_control,
+-      .hub_irq_enable =       admhc_hub_irq_enable,
+ #ifdef CONFIG_PM
+       .bus_suspend =          admhc_bus_suspend,
+       .bus_resume =           admhc_bus_resume,
+--- a/drivers/usb/host/adm5120-hub.c
++++ b/drivers/usb/host/adm5120-hub.c
+@@ -63,20 +63,6 @@
+ /*-------------------------------------------------------------------------*/
+-/* hcd->hub_irq_enable() */
+-static void admhc_hub_irq_enable(struct usb_hcd *hcd)
+-{
+-      struct admhcd   *ahcd = hcd_to_admhcd(hcd);
+-
+-      spin_lock_irq(&ahcd->lock);
+-      if (!ahcd->autostop)
+-              del_timer(&hcd->rh_timer);      /* Prevent next poll */
+-      admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
+-      spin_unlock_irq(&ahcd->lock);
+-}
+-
+-/*-------------------------------------------------------------------------*/
+-
+ /* build "status change" packet (one or two bytes) from HC registers */
+ static int
+--- a/drivers/usb/host/adm5120-pm.c
++++ b/drivers/usb/host/adm5120-pm.c
+@@ -432,13 +432,17 @@
+ 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;
++
++      /* If no status changes are pending, enable status-change interrupts */
++      if (!changed) {
++              admhc_intr_enable(ahcd, ADMHC_INTR_INSM);
++              return 0;
++      }
+-      return poll_rh;
++      return 1;
+ }
+ #endif        /* CONFIG_PM */
+--- a/drivers/usb/host/adm5120-hcd.c
++++ b/drivers/usb/host/adm5120-hcd.c
+@@ -46,7 +46,7 @@
+ #include "../core/hcd.h"
+ #include "../core/hub.h"
+-#define DRIVER_VERSION        "0.25.0"
++#define DRIVER_VERSION        "0.27.0"
+ #define DRIVER_AUTHOR "Gabor Juhos <juhosg@openwrt.org>"
+ #define DRIVER_DESC   "ADMtek USB 1.1 Host Controller Driver"