Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2093c6b4 authored by Matthieu CASTET's avatar Matthieu CASTET Committed by Greg Kroah-Hartman
Browse files

EHCI : introduce a common ehci_setup



This allow to clean duplicated code in most of SOC driver.

Signed-off-by: default avatarMatthieu CASTET <castet.matthieu@free.fr>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Cc: stable <stable@kernel.org>  # fixes 3.1 build error
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 236c448c
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -768,6 +768,35 @@ static int ehci_run (struct usb_hcd *hcd)
	return 0;
}

static int __maybe_unused ehci_setup (struct usb_hcd *hcd)
{
	struct ehci_hcd *ehci = hcd_to_ehci(hcd);
	int retval;

	ehci->regs = (void __iomem *)ehci->caps +
	    HC_LENGTH(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase));
	dbg_hcs_params(ehci, "reset");
	dbg_hcc_params(ehci, "reset");

	/* cache this readonly data; minimize chip reads */
	ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params);

	ehci->sbrn = HCD_USB2;

	retval = ehci_halt(ehci);
	if (retval)
		return retval;

	/* data structure init */
	retval = ehci_init(hcd);
	if (retval)
		return retval;

	ehci_reset(ehci);

	return 0;
}

/*-------------------------------------------------------------------------*/

static irqreturn_t ehci_irq (struct usb_hcd *hcd)