aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c1
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c2
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c14
-rw-r--r--target/linux/adm5120/files/drivers/usb/host/adm5120-pm.c14
-rw-r--r--target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch69
5 files changed, 10 insertions, 90 deletions
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
index bf250c056b..92971f2406 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
+++ b/target/linux/adm5120/files/drivers/usb/host/adm5120-drv.c
@@ -174,7 +174,6 @@ static const struct hc_driver adm5120_hc_driver = {
*/
.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,
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
index c947a6c2dc..30310aa0c1 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-hcd.c
+++ b/target/linux/adm5120/files/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"
diff --git a/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c b/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c
index 6ba62050b1..ce454cb204 100644
--- a/target/linux/adm5120/files/drivers/usb/host/adm5120-hub.c
+++ b/target/linux/adm5120/files/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
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 */
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
deleted file mode 100644
index dc0f843c86..0000000000
--- a/target/linux/adm5120/patches-2.6.28/800-usb_automatically_enable_rhsc_interrupt.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- 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"
-