Commit 61527777 authored by Hans de Goede's avatar Hans de Goede Committed by Felipe Balbi

usb: dwc3: Only call clk_bulk_get() on devicetree instantiated devices

Commit fe8abf33 ("usb: dwc3: support clocks and resets for DWC3 core")
adds support for handling clocks and resets in the DWC3 core, so that for
platforms following the standard devicetree bindings this does not need
to be duplicated in all the different glue layers.

These changes intended for devicetree based platforms introduce an
uncoditional clk_bulk_get() in the core probe path. This leads to the
following error being logged on x86/ACPI systems:

[   26.276783] dwc3 dwc3.3.auto: Failed to get clk 'ref': -2

This commits wraps the clk_bulk_get() in an if (dev->of_node) check so
that it only is done on devicetree instantiated devices, fixing this
error.

Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 6e967d7e
...@@ -1272,7 +1272,6 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -1272,7 +1272,6 @@ static int dwc3_probe(struct platform_device *pdev)
if (!dwc->clks) if (!dwc->clks)
return -ENOMEM; return -ENOMEM;
dwc->num_clks = ARRAY_SIZE(dwc3_core_clks);
dwc->dev = dev; dwc->dev = dev;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
...@@ -1307,15 +1306,19 @@ static int dwc3_probe(struct platform_device *pdev) ...@@ -1307,15 +1306,19 @@ static int dwc3_probe(struct platform_device *pdev)
if (IS_ERR(dwc->reset)) if (IS_ERR(dwc->reset))
return PTR_ERR(dwc->reset); return PTR_ERR(dwc->reset);
ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks); if (dev->of_node) {
if (ret == -EPROBE_DEFER) dwc->num_clks = ARRAY_SIZE(dwc3_core_clks);
return ret;
/* ret = clk_bulk_get(dev, dwc->num_clks, dwc->clks);
* Clocks are optional, but new DT platforms should support all clocks if (ret == -EPROBE_DEFER)
* as required by the DT-binding. return ret;
*/ /*
if (ret) * Clocks are optional, but new DT platforms should support all
dwc->num_clks = 0; * clocks as required by the DT-binding.
*/
if (ret)
dwc->num_clks = 0;
}
ret = reset_control_deassert(dwc->reset); ret = reset_control_deassert(dwc->reset);
if (ret) if (ret)
......
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