diff options
author | David Brownell <david-b@pacbell.net> | 2005-04-09 12:00:29 -0400 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-05-04 02:31:49 -0400 |
commit | 56c1e26d75008d39f1067f453719857a81109d9f (patch) | |
tree | f75ba4203962410bb9ec1ea159c4055a4ee09710 /drivers/usb/host/ehci.h | |
parent | e2e66446e08a7a365a59e25bbc8dd320ab3da0a6 (diff) |
[PATCH] USB: ehci power fixes
Miscellaneous updates for EHCI.
- Mostly updates the power switching on EHCI controllers. One routine
centralizes the "power on/off all ports" logic, and the capability to
do that is reported more correctly.
- Courtesy Colin Leroy, a patch to always power up ports after resumes
which didn't keep a USB device suspended. The reset-everything logic
powers down those ports (on some hardware) so something needs to turn
them back on.
- Minor tweaks/bugfixes for the debug port support.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci.h')
-rw-r--r-- | drivers/usb/host/ehci.h | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index e763a8399a75..4df498231752 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h | |||
@@ -47,6 +47,12 @@ struct ehci_stats { | |||
47 | #define EHCI_MAX_ROOT_PORTS 15 /* see HCS_N_PORTS */ | 47 | #define EHCI_MAX_ROOT_PORTS 15 /* see HCS_N_PORTS */ |
48 | 48 | ||
49 | struct ehci_hcd { /* one per controller */ | 49 | struct ehci_hcd { /* one per controller */ |
50 | /* glue to PCI and HCD framework */ | ||
51 | struct ehci_caps __iomem *caps; | ||
52 | struct ehci_regs __iomem *regs; | ||
53 | struct ehci_dbg_port __iomem *debug; | ||
54 | |||
55 | __u32 hcs_params; /* cached register copy */ | ||
50 | spinlock_t lock; | 56 | spinlock_t lock; |
51 | 57 | ||
52 | /* async schedule support */ | 58 | /* async schedule support */ |
@@ -84,11 +90,6 @@ struct ehci_hcd { /* one per controller */ | |||
84 | 90 | ||
85 | unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ | 91 | unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ |
86 | 92 | ||
87 | /* glue to PCI and HCD framework */ | ||
88 | struct ehci_caps __iomem *caps; | ||
89 | struct ehci_regs __iomem *regs; | ||
90 | __u32 hcs_params; /* cached register copy */ | ||
91 | |||
92 | /* irq statistics */ | 93 | /* irq statistics */ |
93 | #ifdef EHCI_STATS | 94 | #ifdef EHCI_STATS |
94 | struct ehci_stats stats; | 95 | struct ehci_stats stats; |
@@ -165,7 +166,7 @@ struct ehci_caps { | |||
165 | /* these fields are specified as 8 and 16 bit registers, | 166 | /* these fields are specified as 8 and 16 bit registers, |
166 | * but some hosts can't perform 8 or 16 bit PCI accesses. | 167 | * but some hosts can't perform 8 or 16 bit PCI accesses. |
167 | */ | 168 | */ |
168 | u32 hc_capbase; | 169 | u32 hc_capbase; |
169 | #define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */ | 170 | #define HC_LENGTH(p) (((p)>>00)&0x00ff) /* bits 7:0 */ |
170 | #define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */ | 171 | #define HC_VERSION(p) (((p)>>16)&0xffff) /* bits 31:16 */ |
171 | u32 hcs_params; /* HCSPARAMS - offset 0x4 */ | 172 | u32 hcs_params; /* HCSPARAMS - offset 0x4 */ |
@@ -273,7 +274,7 @@ struct ehci_dbg_port { | |||
273 | #define DBGP_ENABLED (1<<28) | 274 | #define DBGP_ENABLED (1<<28) |
274 | #define DBGP_DONE (1<<16) | 275 | #define DBGP_DONE (1<<16) |
275 | #define DBGP_INUSE (1<<10) | 276 | #define DBGP_INUSE (1<<10) |
276 | #define DBGP_ERRCODE(x) (((x)>>7)&0x0f) | 277 | #define DBGP_ERRCODE(x) (((x)>>7)&0x07) |
277 | # define DBGP_ERR_BAD 1 | 278 | # define DBGP_ERR_BAD 1 |
278 | # define DBGP_ERR_SIGNAL 2 | 279 | # define DBGP_ERR_SIGNAL 2 |
279 | #define DBGP_ERROR (1<<6) | 280 | #define DBGP_ERROR (1<<6) |
@@ -282,11 +283,11 @@ struct ehci_dbg_port { | |||
282 | #define DBGP_LEN(x) (((x)>>0)&0x0f) | 283 | #define DBGP_LEN(x) (((x)>>0)&0x0f) |
283 | u32 pids; | 284 | u32 pids; |
284 | #define DBGP_PID_GET(x) (((x)>>16)&0xff) | 285 | #define DBGP_PID_GET(x) (((x)>>16)&0xff) |
285 | #define DBGP_PID_SET(data,tok) (((data)<<8)|(tok)); | 286 | #define DBGP_PID_SET(data,tok) (((data)<<8)|(tok)) |
286 | u32 data03; | 287 | u32 data03; |
287 | u32 data47; | 288 | u32 data47; |
288 | u32 address; | 289 | u32 address; |
289 | #define DBGP_EPADDR(dev,ep) (((dev)<<8)|(ep)); | 290 | #define DBGP_EPADDR(dev,ep) (((dev)<<8)|(ep)) |
290 | } __attribute__ ((packed)); | 291 | } __attribute__ ((packed)); |
291 | 292 | ||
292 | /*-------------------------------------------------------------------------*/ | 293 | /*-------------------------------------------------------------------------*/ |