]> err.no Git - linux-2.6/blobdiff - drivers/usb/host/uhci-hcd.h
[PATCH] USB: UHCI: Split apart the physical and logical framelist arrays
[linux-2.6] / drivers / usb / host / uhci-hcd.h
index 827df5e068004da3ffea06ab55cc92d4fd8fa8ff..b04d99df0a0ec790dce83f492e9506238b1d0abc 100644 (file)
@@ -114,7 +114,6 @@ struct uhci_qh {
        /* Software fields */
        dma_addr_t dma_handle;
 
-       struct usb_device *dev;
        struct urb_priv *urbp;
 
        struct list_head list;          /* P: uhci->frame_list_lock */
@@ -206,9 +205,6 @@ struct uhci_td {
        /* Software fields */
        dma_addr_t dma_handle;
 
-       struct usb_device *dev;
-       struct urb *urb;
-
        struct list_head list;          /* P: urb->lock */
        struct list_head remove_list;   /* P: uhci->td_remove_list_lock */
 
@@ -327,18 +323,19 @@ static inline int __interval_to_skel(int interval)
  * driver learns to autosuspend.)
  */
 enum uhci_rh_state {
-       /* In the next 4 states the HC must be halted */
-       UHCI_RH_RESET,                  /* These two must come first */
+       /* In the following states the HC must be halted.
+        * These two must come first */
+       UHCI_RH_RESET,
        UHCI_RH_SUSPENDED,
 
        UHCI_RH_AUTO_STOPPED,
        UHCI_RH_RESUMING,
 
-       /* In the next state the HC changes from running to halted, so it
-        * can legally appear either way */
+       /* In this state the HC changes from running to halted,
+        * so it can legally appear either way. */
        UHCI_RH_SUSPENDING,
 
-       /* In the next two states it's an error if the HC is halted.
+       /* In the following states it's an error if the HC is halted.
         * These two must come last */
        UHCI_RH_RUNNING,                /* The normal state */
        UHCI_RH_RUNNING_NODEVS,         /* Running with no devices attached */
@@ -346,9 +343,6 @@ enum uhci_rh_state {
 
 /*
  * This describes the full uhci information.
- *
- * Note how the "proper" USB information is just
- * a subset of what the full implementation needs.
  */
 struct uhci_hcd {
 
@@ -361,13 +355,15 @@ struct uhci_hcd {
        struct dma_pool *qh_pool;
        struct dma_pool *td_pool;
 
-       struct usb_bus *bus;
-
        struct uhci_td *term_td;        /* Terminating TD, see UHCI bug */
        struct uhci_qh *skelqh[UHCI_NUM_SKELQH];        /* Skeleton QH's */
 
        spinlock_t lock;
-       struct uhci_frame_list *fl;             /* P: uhci->lock */
+
+       dma_addr_t frame_dma_handle;            /* Hardware frame list */
+       __le32 *frame;                          /* P: uhci->lock */
+       void **frame_cpu;                       /* CPU's frame list */
+
        int fsbr;                               /* Full-speed bandwidth reclamation */
        unsigned long fsbrtimeout;              /* FSBR delay */
 
@@ -380,8 +376,9 @@ struct uhci_hcd {
 
        unsigned int scan_in_progress:1;        /* Schedule scan is running */
        unsigned int need_rescan:1;             /* Redo the schedule scan */
-       unsigned int resume_detect:1;           /* Need a Global Resume */
        unsigned int hc_inaccessible:1;         /* HC is suspended or dead */
+       unsigned int working_RD:1;              /* Suspended root hub doesn't
+                                                  need to be polled */
 
        /* Support for port suspend/resume/reset */
        unsigned long port_c_suspend;           /* Bit-arrays of ports */
@@ -407,9 +404,7 @@ struct uhci_hcd {
        /* List of URB's awaiting completion callback */
        struct list_head complete_list;         /* P: uhci->lock */
 
-       int rh_numports;
-
-       struct timer_list stall_timer;
+       int rh_numports;                        /* Number of root-hub ports */
 
        wait_queue_head_t waitqh;               /* endpoint_disable waiters */
 };
@@ -441,7 +436,6 @@ struct urb_priv {
                                                /*  a control transfer, retrigger */
                                                /*  the status phase */
 
-       unsigned long inserttime;       /* In jiffies */
        unsigned long fsbrtime;         /* In jiffies */
 
        struct list_head queue_list;    /* P: uhci->frame_list_lock */