aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-omap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-omap.c')
-rw-r--r--drivers/usb/host/ehci-omap.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 16d7150e8557..9bd7dfe3315b 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -187,6 +187,12 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
187 } 187 }
188 188
189 omap->phy[i] = phy; 189 omap->phy[i] = phy;
190
191 if (pdata->port_mode[i] == OMAP_EHCI_PORT_MODE_PHY) {
192 usb_phy_init(omap->phy[i]);
193 /* bring PHY out of suspend */
194 usb_phy_set_suspend(omap->phy[i], 0);
195 }
190 } 196 }
191 197
192 pm_runtime_enable(dev); 198 pm_runtime_enable(dev);
@@ -211,13 +217,14 @@ static int ehci_hcd_omap_probe(struct platform_device *pdev)
211 } 217 }
212 218
213 /* 219 /*
214 * Bring PHYs out of reset. 220 * Bring PHYs out of reset for non PHY modes.
215 * Even though HSIC mode is a PHY-less mode, the reset 221 * Even though HSIC mode is a PHY-less mode, the reset
216 * line exists between the chips and can be modelled 222 * line exists between the chips and can be modelled
217 * as a PHY device for reset control. 223 * as a PHY device for reset control.
218 */ 224 */
219 for (i = 0; i < omap->nports; i++) { 225 for (i = 0; i < omap->nports; i++) {
220 if (!omap->phy[i]) 226 if (!omap->phy[i] ||
227 pdata->port_mode[i] == OMAP_EHCI_PORT_MODE_PHY)
221 continue; 228 continue;
222 229
223 usb_phy_init(omap->phy[i]); 230 usb_phy_init(omap->phy[i]);
@@ -294,7 +301,7 @@ static struct platform_driver ehci_hcd_omap_driver = {
294 /*.resume = ehci_hcd_omap_resume, */ 301 /*.resume = ehci_hcd_omap_resume, */
295 .driver = { 302 .driver = {
296 .name = hcd_name, 303 .name = hcd_name,
297 .of_match_table = of_match_ptr(omap_ehci_dt_ids), 304 .of_match_table = omap_ehci_dt_ids,
298 } 305 }
299}; 306};
300 307