summaryrefslogtreecommitdiffstats
path: root/target/linux/adm5120/patches-2.6.38/010-adm5120_usb_new_api.patch
blob: 14c54bbd5bf7d7d0e6c9f9aae9fb3cf69e819c82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- a/drivers/usb/host/adm5120-hcd.c
+++ b/drivers/usb/host/adm5120-hcd.c
@@ -32,6 +32,7 @@
 #include <linux/list.h>
 #include <linux/usb.h>
 #include <linux/usb/otg.h>
+#include <linux/usb/hcd.h>
 #include <linux/dma-mapping.h>
 #include <linux/dmapool.h>
 #include <linux/reboot.h>
@@ -43,8 +44,6 @@
 #include <asm/unaligned.h>
 #include <asm/byteorder.h>
 
-#include "../core/hcd.h"
-#include "../core/hub.h"
 
 #define DRIVER_VERSION	"0.27.0"
 #define DRIVER_AUTHOR	"Gabor Juhos <juhosg@openwrt.org>"
@@ -571,7 +570,7 @@ static int admhc_run(struct admhcd *ahcd
 	periodic_reinit(ahcd);
 
 	/* use rhsc irqs after khubd is fully initialized */
-	hcd->poll_rh = 1;
+	set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
 	hcd->uses_new_polling = 1;
 
 #if 0
@@ -688,7 +687,7 @@ static irqreturn_t admhc_irq(struct usb_
 		 */
 		admhc_vdbg(ahcd, "Resume Detect\n");
 		admhc_intr_ack(ahcd, ADMHC_INTR_RESI);
-		hcd->poll_rh = 1;
+		set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
 		if (ahcd->autostop) {
 			spin_lock(&ahcd->lock);
 			admhc_rh_resume(ahcd);
--- a/drivers/usb/host/adm5120-hub.c
+++ b/drivers/usb/host/adm5120-hub.c
@@ -106,8 +106,11 @@ admhc_hub_status_data(struct usb_hcd *hc
 		}
 	}
 
-	hcd->poll_rh = admhc_root_hub_state_changes(ahcd, changed,
-			any_connected);
+	if (admhc_root_hub_state_changes(ahcd, changed,
+			any_connected))
+		set_bit(HCD_FLAG_POLL_RH, &hcd->flags);
+	else
+		clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
 
 done:
 	spin_unlock_irqrestore(&ahcd->lock, flags);