xhci: Refactor bus suspend state into a struct.

There are several variables in the xhci_hcd structure that are related to
bus suspend and resume state.  There are a couple different port status
arrays that are accessed by port index.  Move those variables into a
separate structure, xhci_bus_state.  Stash that structure in xhci_hcd.

When we have two roothhubs that can be suspended and resumed separately,
we can have two xhci_bus_states, and index into the port arrays in each
structure with the fake roothub port index (not the real hardware port
index).

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index a95108c..8d45bbd 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -694,7 +694,10 @@
 	struct usb_hcd		*hcd = xhci_to_hcd(xhci);
 	int			retval;
 
-	if (time_before(jiffies, xhci->next_statechange))
+	/* Wait a bit if the bus needs to settle from the transistion to
+	 * suspend.
+	 */
+	if (time_before(jiffies, xhci->bus_state[0].next_statechange))
 		msleep(100);
 
 	spin_lock_irq(&xhci->lock);