/* Program the PAGESIZE register, initialize the device context array, create device contexts (?), set up a command ring segment (or two?), create event ring (one for now).  */
int xhci_init(struct usb_hcd *hcd)
/* Program the PAGESIZE register, initialize the device context array, create device contexts (?), set up a command ring segment (or two?), create event ring (one for now).  */
int xhci_init(struct usb_hcd *hcd)
{
	struct xhci_hcd *xhci = hcd_to_xhci(hcd);
	int retval = 0;
	xhci_dbg(xhci, "xhci_init\n");
	spin_lock_init(&xhci->lock);
	if (link_quirk) {
		xhci_dbg(xhci, "QUIRK: Not clearing Link TRB chain bits.\n");
		xhci->quirks |= XHCI_LINK_TRB_QUIRK;
	} else {
		xhci_dbg(xhci, "xHCI doesn't need link TRB QUIRK\n");
	}
	retval = xhci_mem_init(xhci, GFP_KERNEL);
	xhci_dbg(xhci, "Finished xhci_init\n");
	return retval;
}