diff options
Diffstat (limited to 'drivers/usb/host/uhci-hcd.h')
-rw-r--r-- | drivers/usb/host/uhci-hcd.h | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h index 02255d69e1fe..4bac57c74ec2 100644 --- a/drivers/usb/host/uhci-hcd.h +++ b/drivers/usb/host/uhci-hcd.h | |||
@@ -314,26 +314,29 @@ static inline int __interval_to_skel(int interval) | |||
314 | } | 314 | } |
315 | 315 | ||
316 | /* | 316 | /* |
317 | * Device states for the host controller. | 317 | * States for the root hub. |
318 | * | 318 | * |
319 | * To prevent "bouncing" in the presence of electrical noise, | 319 | * To prevent "bouncing" in the presence of electrical noise, |
320 | * we insist on a 1-second "grace" period, before switching to | 320 | * when there are no devices attached we delay for 1 second in the |
321 | * the RUNNING or SUSPENDED states, during which the state is | 321 | * RUNNING_NODEVS state before switching to the AUTO_STOPPED state. |
322 | * not allowed to change. | 322 | * |
323 | * | 323 | * (Note that the AUTO_STOPPED state won't be necessary once the hub |
324 | * The resume process is divided into substates in order to avoid | 324 | * driver learns to autosuspend.) |
325 | * potentially length delays during the timer handler. | ||
326 | * | ||
327 | * States in which the host controller is halted must have values <= 0. | ||
328 | */ | 325 | */ |
329 | enum uhci_state { | 326 | enum uhci_rh_state { |
330 | UHCI_RESET, | 327 | /* In the next 4 states the HC must be halted */ |
331 | UHCI_RUNNING_GRACE, /* Before RUNNING */ | 328 | UHCI_RH_RESET, |
332 | UHCI_RUNNING, /* The normal state */ | 329 | UHCI_RH_SUSPENDED, |
333 | UHCI_SUSPENDING_GRACE, /* Before SUSPENDED */ | 330 | UHCI_RH_AUTO_STOPPED, |
334 | UHCI_SUSPENDED = -10, /* When no devices are attached */ | 331 | UHCI_RH_RESUMING, |
335 | UHCI_RESUMING_1, | 332 | |
336 | UHCI_RESUMING_2 | 333 | /* In the next state the HC changes from running to halted, so it |
334 | * can legally appear either way */ | ||
335 | UHCI_RH_SUSPENDING, | ||
336 | |||
337 | /* In the next two states it's an error if the HC is halted */ | ||
338 | UHCI_RH_RUNNING, /* The normal state */ | ||
339 | UHCI_RH_RUNNING_NODEVS, /* Running with no devices attached */ | ||
337 | }; | 340 | }; |
338 | 341 | ||
339 | /* | 342 | /* |
@@ -363,8 +366,9 @@ struct uhci_hcd { | |||
363 | int fsbr; /* Full-speed bandwidth reclamation */ | 366 | int fsbr; /* Full-speed bandwidth reclamation */ |
364 | unsigned long fsbrtimeout; /* FSBR delay */ | 367 | unsigned long fsbrtimeout; /* FSBR delay */ |
365 | 368 | ||
366 | enum uhci_state state; /* FIXME: needs a spinlock */ | 369 | enum uhci_rh_state rh_state; |
367 | unsigned long state_end; /* Time of next transition */ | 370 | unsigned long auto_stop_time; /* When to AUTO_STOP */ |
371 | |||
368 | unsigned int frame_number; /* As of last check */ | 372 | unsigned int frame_number; /* As of last check */ |
369 | unsigned int is_stopped; | 373 | unsigned int is_stopped; |
370 | #define UHCI_IS_STOPPED 9999 /* Larger than a frame # */ | 374 | #define UHCI_IS_STOPPED 9999 /* Larger than a frame # */ |
@@ -451,4 +455,11 @@ struct urb_priv { | |||
451 | * #2 urb->lock | 455 | * #2 urb->lock |
452 | */ | 456 | */ |
453 | 457 | ||
458 | |||
459 | /* Some special IDs */ | ||
460 | |||
461 | #define PCI_VENDOR_ID_GENESYS 0x17a0 | ||
462 | #define PCI_DEVICE_ID_GL880S_UHCI 0x8083 | ||
463 | #define PCI_DEVICE_ID_GL880S_EHCI 0x8084 | ||
464 | |||
454 | #endif | 465 | #endif |