diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-05-22 06:46:42 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2009-05-22 06:46:42 +0000 | 
| commit | a46694e6d07efe76d811136311befee41954d4ff (patch) | |
| tree | 1fecf70223aade7526180b07ae08de2c2c65342a | |
| parent | 99e307f852a3671db6778bfb16b8166ec22bdc95 (diff) | |
[adm5120] integrate 2.6.28 specific patch into the usb driver
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15975 3c298f89-4303-0410-b956-a3cf2f4a3e73
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 bf250c056..92971f240 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 c947a6c2d..30310aa0c 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 6ba62050b..ce454cb20 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 9d49664cb..0ccf829c2 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 dc0f843c8..000000000 --- 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" -  | 
