aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/dwc3/core.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-25 12:09:46 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-25 12:09:46 -0500
commit4811f53fada7f2c6616229cc410e79362818a613 (patch)
tree7087507a15fe828ce80576a357a2a2d40c1ae191 /drivers/usb/dwc3/core.c
parentcba6c85027057d4bf7029d32c64e2647859be07a (diff)
parent5088b6f5bcf1747345ef9fe217fc80935b1b07df (diff)
Merge tag 'xceiv-for-v3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next
Felipe writes: usb: xceiv: patches for v3.9 merge window Two new PHY drivers coming here: one for Samsung, one for OMAP. Both architectures are adding USB3 support to mainline kernel. The PHY layer now allows us to have mulitple PHYs of the same type, which is necessary for platforms which provide more than one USB peripheral port. There's also a few cleanups here: removal of __dev* annotations, conversion of a cast to to_delayed_work(), and mxs-phy learns about ->set_suspend.
Diffstat (limited to 'drivers/usb/dwc3/core.c')
-rw-r--r--drivers/usb/dwc3/core.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 177f4c61acab..999909451e37 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -420,13 +420,19 @@ static int dwc3_probe(struct platform_device *pdev)
420 return -ENOMEM; 420 return -ENOMEM;
421 } 421 }
422 422
423 dwc->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); 423 if (node) {
424 dwc->usb2_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0);
425 dwc->usb3_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 1);
426 } else {
427 dwc->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2);
428 dwc->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3);
429 }
430
424 if (IS_ERR_OR_NULL(dwc->usb2_phy)) { 431 if (IS_ERR_OR_NULL(dwc->usb2_phy)) {
425 dev_err(dev, "no usb2 phy configured\n"); 432 dev_err(dev, "no usb2 phy configured\n");
426 return -EPROBE_DEFER; 433 return -EPROBE_DEFER;
427 } 434 }
428 435
429 dwc->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3);
430 if (IS_ERR_OR_NULL(dwc->usb3_phy)) { 436 if (IS_ERR_OR_NULL(dwc->usb3_phy)) {
431 dev_err(dev, "no usb3 phy configured\n"); 437 dev_err(dev, "no usb3 phy configured\n");
432 return -EPROBE_DEFER; 438 return -EPROBE_DEFER;
@@ -453,8 +459,7 @@ static int dwc3_probe(struct platform_device *pdev)
453 else 459 else
454 dwc->maximum_speed = DWC3_DCFG_SUPERSPEED; 460 dwc->maximum_speed = DWC3_DCFG_SUPERSPEED;
455 461
456 if (of_get_property(node, "tx-fifo-resize", NULL)) 462 dwc->needs_fifo_resize = of_property_read_bool(node, "tx-fifo-resize");
457 dwc->needs_fifo_resize = true;
458 463
459 pm_runtime_enable(dev); 464 pm_runtime_enable(dev);
460 pm_runtime_get_sync(dev); 465 pm_runtime_get_sync(dev);
@@ -583,11 +588,22 @@ static int dwc3_remove(struct platform_device *pdev)
583 return 0; 588 return 0;
584} 589}
585 590
591#ifdef CONFIG_OF
592static const struct of_device_id of_dwc3_match[] = {
593 {
594 .compatible = "synopsys,dwc3"
595 },
596 { },
597};
598MODULE_DEVICE_TABLE(of, of_dwc3_match);
599#endif
600
586static struct platform_driver dwc3_driver = { 601static struct platform_driver dwc3_driver = {
587 .probe = dwc3_probe, 602 .probe = dwc3_probe,
588 .remove = dwc3_remove, 603 .remove = dwc3_remove,
589 .driver = { 604 .driver = {
590 .name = "dwc3", 605 .name = "dwc3",
606 .of_match_table = of_match_ptr(of_dwc3_match),
591 }, 607 },
592}; 608};
593 609