diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2009-01-25 21:04:15 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2009-01-25 21:04:15 +0000 |
commit | 7e4bc7d49177e6f53af7ed505814f0de0c882424 (patch) | |
tree | 6a481ec2a31410680efec3ade58735a22226a14c /target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch | |
parent | 37bf4d46cc5206bbaaaf746124e9a4ed3ea0876e (diff) | |
download | master-187ad058-7e4bc7d49177e6f53af7ed505814f0de0c882424.tar.gz master-187ad058-7e4bc7d49177e6f53af7ed505814f0de0c882424.tar.bz2 master-187ad058-7e4bc7d49177e6f53af7ed505814f0de0c882424.zip |
[adm5120] preliminary support for 2.6.28 (based on the patches by Alexandros C. Couloumbis)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14189 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch')
-rw-r--r-- | target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch b/target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch new file mode 100644 index 0000000000..dc0f843c86 --- /dev/null +++ b/target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch @@ -0,0 +1,69 @@ +--- a/drivers/usb/host/adm5120-drv.c ++++ b/drivers/usb/host/adm5120-drv.c +@@ -174,7 +174,6 @@ static const struct hc_driver adm5120_hc + */ + .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 inline int admhc_rh_resume(struct + 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" + |