aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/core.c
diff options
context:
space:
mode:
authorAntoine Tenart <antoine.tenart@free-electrons.com>2014-10-30 13:41:16 -0400
committerFelipe Balbi <balbi@ti.com>2014-11-03 11:02:50 -0500
commitef44cb4226d132146e44f8ea562a16b27ff61126 (patch)
treecec7cf8bd69f400de0fbdb76e6a43759a154d446 /drivers/usb/chipidea/core.c
parent48bcc18076df4e07ef86226ac6ce795f64c84f7f (diff)
usb: allow to supply the PHY in the drivers when using HCD
This patch modify the generic code handling PHYs to allow them to be supplied from the drivers. This adds checks to ensure no PHY was already there when looking for one in the generic code. This also makes sure we do not modify its state in the generic HCD functions, it was provided by the driver. Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/chipidea/core.c')
-rw-r--r--drivers/usb/chipidea/core.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index 9bdc6bd73432..30f89426bf05 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -312,7 +312,7 @@ static int ci_usb_phy_init(struct ci_hdrc *ci)
312 case USBPHY_INTERFACE_MODE_UTMI: 312 case USBPHY_INTERFACE_MODE_UTMI:
313 case USBPHY_INTERFACE_MODE_UTMIW: 313 case USBPHY_INTERFACE_MODE_UTMIW:
314 case USBPHY_INTERFACE_MODE_HSIC: 314 case USBPHY_INTERFACE_MODE_HSIC:
315 ret = usb_phy_init(ci->transceiver); 315 ret = usb_phy_init(ci->usb_phy);
316 if (ret) 316 if (ret)
317 return ret; 317 return ret;
318 hw_phymode_configure(ci); 318 hw_phymode_configure(ci);
@@ -320,12 +320,12 @@ static int ci_usb_phy_init(struct ci_hdrc *ci)
320 case USBPHY_INTERFACE_MODE_ULPI: 320 case USBPHY_INTERFACE_MODE_ULPI:
321 case USBPHY_INTERFACE_MODE_SERIAL: 321 case USBPHY_INTERFACE_MODE_SERIAL:
322 hw_phymode_configure(ci); 322 hw_phymode_configure(ci);
323 ret = usb_phy_init(ci->transceiver); 323 ret = usb_phy_init(ci->usb_phy);
324 if (ret) 324 if (ret)
325 return ret; 325 return ret;
326 break; 326 break;
327 default: 327 default:
328 ret = usb_phy_init(ci->transceiver); 328 ret = usb_phy_init(ci->usb_phy);
329 } 329 }
330 330
331 return ret; 331 return ret;
@@ -605,13 +605,13 @@ static int ci_hdrc_probe(struct platform_device *pdev)
605 return -ENODEV; 605 return -ENODEV;
606 } 606 }
607 607
608 if (ci->platdata->phy) 608 if (ci->platdata->usb_phy)
609 ci->transceiver = ci->platdata->phy; 609 ci->usb_phy = ci->platdata->usb_phy;
610 else 610 else
611 ci->transceiver = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); 611 ci->usb_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2);
612 612
613 if (IS_ERR(ci->transceiver)) { 613 if (IS_ERR(ci->usb_phy)) {
614 ret = PTR_ERR(ci->transceiver); 614 ret = PTR_ERR(ci->usb_phy);
615 /* 615 /*
616 * if -ENXIO is returned, it means PHY layer wasn't 616 * if -ENXIO is returned, it means PHY layer wasn't
617 * enabled, so it makes no sense to return -EPROBE_DEFER 617 * enabled, so it makes no sense to return -EPROBE_DEFER
@@ -728,7 +728,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
728stop: 728stop:
729 ci_role_destroy(ci); 729 ci_role_destroy(ci);
730deinit_phy: 730deinit_phy:
731 usb_phy_shutdown(ci->transceiver); 731 usb_phy_shutdown(ci->usb_phy);
732 732
733 return ret; 733 return ret;
734} 734}
@@ -741,7 +741,7 @@ static int ci_hdrc_remove(struct platform_device *pdev)
741 free_irq(ci->irq, ci); 741 free_irq(ci->irq, ci);
742 ci_role_destroy(ci); 742 ci_role_destroy(ci);
743 ci_hdrc_enter_lpm(ci, true); 743 ci_hdrc_enter_lpm(ci, true);
744 usb_phy_shutdown(ci->transceiver); 744 usb_phy_shutdown(ci->usb_phy);
745 745
746 return 0; 746 return 0;
747} 747}