Commit 5088b6f5 authored by Kishon Vijay Abraham I's avatar Kishon Vijay Abraham I Committed by Felipe Balbi

usb: dwc3: core: add dt support for dwc3 core

Added dt support for dwc3 core and update the documentation with
device tree binding information. Getting a PHY is now done using
devm_usb_get_phy_by_phandle() for dt boot.
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 0c4c8bbb
synopsys DWC3 CORE
DWC3- USB3 CONTROLLER
Required properties:
- compatible: must be "synopsys,dwc3"
- reg : Address and length of the register set for the device
- interrupts: Interrupts used by the dwc3 controller.
- usb-phy : array of phandle for the PHY device
Optional properties:
- tx-fifo-resize: determines if the FIFO *has* to be reallocated.
This is usually a subnode to DWC3 glue to which it is connected.
dwc3@4a030000 {
compatible = "synopsys,dwc3";
reg = <0x4a030000 0xcfff>;
interrupts = <0 92 4>
usb-phy = <&usb2_phy>, <&usb3,phy>;
tx-fifo-resize;
};
...@@ -420,13 +420,19 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -420,13 +420,19 @@ static int dwc3_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
} }
dwc->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2); if (node) {
dwc->usb2_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0);
dwc->usb3_phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 1);
} else {
dwc->usb2_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB2);
dwc->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3);
}
if (IS_ERR_OR_NULL(dwc->usb2_phy)) { if (IS_ERR_OR_NULL(dwc->usb2_phy)) {
dev_err(dev, "no usb2 phy configured\n"); dev_err(dev, "no usb2 phy configured\n");
return -EPROBE_DEFER; return -EPROBE_DEFER;
} }
dwc->usb3_phy = devm_usb_get_phy(dev, USB_PHY_TYPE_USB3);
if (IS_ERR_OR_NULL(dwc->usb3_phy)) { if (IS_ERR_OR_NULL(dwc->usb3_phy)) {
dev_err(dev, "no usb3 phy configured\n"); dev_err(dev, "no usb3 phy configured\n");
return -EPROBE_DEFER; return -EPROBE_DEFER;
...@@ -450,8 +456,7 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -450,8 +456,7 @@ static int dwc3_probe(struct platform_device *pdev)
else else
dwc->maximum_speed = DWC3_DCFG_SUPERSPEED; dwc->maximum_speed = DWC3_DCFG_SUPERSPEED;
if (of_get_property(node, "tx-fifo-resize", NULL)) dwc->needs_fifo_resize = of_property_read_bool(node, "tx-fifo-resize");
dwc->needs_fifo_resize = true;
pm_runtime_enable(dev); pm_runtime_enable(dev);
pm_runtime_get_sync(dev); pm_runtime_get_sync(dev);
...@@ -580,11 +585,22 @@ static int dwc3_remove(struct platform_device *pdev) ...@@ -580,11 +585,22 @@ static int dwc3_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_OF
static const struct of_device_id of_dwc3_match[] = {
{
.compatible = "synopsys,dwc3"
},
{ },
};
MODULE_DEVICE_TABLE(of, of_dwc3_match);
#endif
static struct platform_driver dwc3_driver = { static struct platform_driver dwc3_driver = {
.probe = dwc3_probe, .probe = dwc3_probe,
.remove = dwc3_remove, .remove = dwc3_remove,
.driver = { .driver = {
.name = "dwc3", .name = "dwc3",
.of_match_table = of_match_ptr(of_dwc3_match),
}, },
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment