|
|
@@ -106,6 +106,10 @@ static int kdwc3_probe(struct platform_device *pdev)
|
|
|
goto err_irq;
|
|
|
}
|
|
|
|
|
|
+ /* IRQ processing not required currently for AM65 */
|
|
|
+ if (of_device_is_compatible(node, "ti,am654-dwc3"))
|
|
|
+ goto skip_irq;
|
|
|
+
|
|
|
irq = platform_get_irq(pdev, 0);
|
|
|
if (irq < 0) {
|
|
|
dev_err(&pdev->dev, "missing irq\n");
|
|
|
@@ -123,6 +127,7 @@ static int kdwc3_probe(struct platform_device *pdev)
|
|
|
|
|
|
kdwc3_enable_irqs(kdwc);
|
|
|
|
|
|
+skip_irq:
|
|
|
error = of_platform_populate(node, NULL, NULL, dev);
|
|
|
if (error) {
|
|
|
dev_err(&pdev->dev, "failed to create dwc3 core\n");
|
|
|
@@ -152,8 +157,11 @@ static int kdwc3_remove_core(struct device *dev, void *c)
|
|
|
static int kdwc3_remove(struct platform_device *pdev)
|
|
|
{
|
|
|
struct dwc3_keystone *kdwc = platform_get_drvdata(pdev);
|
|
|
+ struct device_node *node = pdev->dev.of_node;
|
|
|
+
|
|
|
+ if (!of_device_is_compatible(node, "ti,am654-dwc3"))
|
|
|
+ kdwc3_disable_irqs(kdwc);
|
|
|
|
|
|
- kdwc3_disable_irqs(kdwc);
|
|
|
device_for_each_child(&pdev->dev, NULL, kdwc3_remove_core);
|
|
|
pm_runtime_put_sync(kdwc->dev);
|
|
|
pm_runtime_disable(kdwc->dev);
|
|
|
@@ -165,6 +173,7 @@ static int kdwc3_remove(struct platform_device *pdev)
|
|
|
|
|
|
static const struct of_device_id kdwc3_of_match[] = {
|
|
|
{ .compatible = "ti,keystone-dwc3", },
|
|
|
+ { .compatible = "ti,am654-dwc3" },
|
|
|
{},
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(of, kdwc3_of_match);
|