aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-mxc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-mxc.c')
-rw-r--r--drivers/usb/host/ehci-mxc.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/usb/host/ehci-mxc.c b/drivers/usb/host/ehci-mxc.c
index f6e5d44c06b6..535dcae7949f 100644
--- a/drivers/usb/host/ehci-mxc.c
+++ b/drivers/usb/host/ehci-mxc.c
@@ -36,14 +36,8 @@ struct ehci_mxc_priv {
36static int ehci_mxc_setup(struct usb_hcd *hcd) 36static int ehci_mxc_setup(struct usb_hcd *hcd)
37{ 37{
38 struct ehci_hcd *ehci = hcd_to_ehci(hcd); 38 struct ehci_hcd *ehci = hcd_to_ehci(hcd);
39 struct device *dev = hcd->self.controller;
40 struct mxc_usbh_platform_data *pdata = dev_get_platdata(dev);
41 int retval; 39 int retval;
42 40
43 /* EHCI registers start at offset 0x100 */
44 ehci->caps = hcd->regs + 0x100;
45 ehci->regs = hcd->regs + 0x100 +
46 HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase));
47 dbg_hcs_params(ehci, "reset"); 41 dbg_hcs_params(ehci, "reset");
48 dbg_hcc_params(ehci, "reset"); 42 dbg_hcc_params(ehci, "reset");
49 43
@@ -65,12 +59,6 @@ static int ehci_mxc_setup(struct usb_hcd *hcd)
65 59
66 ehci_reset(ehci); 60 ehci_reset(ehci);
67 61
68 /* set up the PORTSCx register */
69 ehci_writel(ehci, pdata->portsc, &ehci->regs->port_status[0]);
70
71 /* is this really needed? */
72 msleep(10);
73
74 ehci_port_power(ehci, 0); 62 ehci_port_power(ehci, 0);
75 return 0; 63 return 0;
76} 64}
@@ -128,6 +116,7 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev)
128 int irq, ret; 116 int irq, ret;
129 struct ehci_mxc_priv *priv; 117 struct ehci_mxc_priv *priv;
130 struct device *dev = &pdev->dev; 118 struct device *dev = &pdev->dev;
119 struct ehci_hcd *ehci;
131 120
132 dev_info(&pdev->dev, "initializing i.MX USB Controller\n"); 121 dev_info(&pdev->dev, "initializing i.MX USB Controller\n");
133 122
@@ -204,6 +193,19 @@ static int ehci_mxc_drv_probe(struct platform_device *pdev)
204 if (ret < 0) 193 if (ret < 0)
205 goto err_init; 194 goto err_init;
206 195
196 ehci = hcd_to_ehci(hcd);
197
198 /* EHCI registers start at offset 0x100 */
199 ehci->caps = hcd->regs + 0x100;
200 ehci->regs = hcd->regs + 0x100 +
201 HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase));
202
203 /* set up the PORTSCx register */
204 ehci_writel(ehci, pdata->portsc, &ehci->regs->port_status[0]);
205
206 /* is this really needed? */
207 msleep(10);
208
207 /* Initialize the transceiver */ 209 /* Initialize the transceiver */
208 if (pdata->otg) { 210 if (pdata->otg) {
209 pdata->otg->io_priv = hcd->regs + ULPI_VIEWPORT_OFFSET; 211 pdata->otg->io_priv = hcd->regs + ULPI_VIEWPORT_OFFSET;