| From 2093c6b49c8f1dc581d8953aca71297d4cace55e Mon Sep 17 00:00:00 2001 |
| From: Matthieu CASTET <castet.matthieu@free.fr> |
| Date: Sat, 2 Jul 2011 19:47:33 +0200 |
| Subject: EHCI : introduce a common ehci_setup |
| |
| From: Matthieu CASTET <castet.matthieu@free.fr> |
| |
| commit 2093c6b49c8f1dc581d8953aca71297d4cace55e upstream. |
| |
| This allow to clean duplicated code in most of SOC driver. |
| |
| Signed-off-by: Matthieu CASTET <castet.matthieu@free.fr> |
| Acked-by: Alan Stern <stern@rowland.harvard.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/usb/host/ehci-hcd.c | 29 +++++++++++++++++++++++++++++ |
| 1 file changed, 29 insertions(+) |
| |
| --- a/drivers/usb/host/ehci-hcd.c |
| +++ b/drivers/usb/host/ehci-hcd.c |
| @@ -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) |