{
struct platform_device_info pdevinfo;
struct platform_device *child;
+ struct device_node *np;
memset(&pdevinfo, 0, sizeof(pdevinfo));
}
/*
- * We want the dma-ranges etc to be copied from the parent VCHIQ device
- * to be passed on to the children too.
+ * We want the dma-ranges etc to be copied from a device with the
+ * correct dma-ranges for the VPU.
+ * VCHIQ on Pi4 is now under scb which doesn't get those dma-ranges.
+ * Take the "dma" node as going to be suitable as it sees the world
+ * through the same eyes as the VPU.
*/
- of_dma_configure(&new_dev->dev, pdev->dev.of_node, true);
+ np = of_find_node_by_path("dma");
+ if (!np)
+ np = pdev->dev.of_node;
+
+ of_dma_configure(&child->dev, np, true);
+
+ if (np != pdev->dev.of_node)
+ of_node_put(np);
return child;
}