integrate 2.6.28 specific patch into the usb driver
SVN-Revision: 15975
This commit is contained in:
parent
cf935e7613
commit
cbb550605f
@ -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,
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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"
|
||||
|
Loading…
Reference in New Issue
Block a user