diff options
| -rw-r--r-- | drivers/usb/host/ehci-mxc.c | 26 |
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 { | |||
| 36 | static int ehci_mxc_setup(struct usb_hcd *hcd) | 36 | static 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; |
