Commit cbb5c28e authored by Dave Stevenson's avatar Dave Stevenson Committed by popcornmix
Browse files

staging: vchiq: Use the old dma controller for OF config on platform devices



vchiq on Pi4 is no longer under the soc node, therefore it
doesn't get the dma-ranges for the VPU.

Switch to using the configuration of the old dma controller as
that will set the dma-ranges correctly.

Signed-off-by: default avatarDave Stevenson <dave.stevenson@raspberrypi.org>
parent 05463ad3
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -3599,6 +3599,7 @@ vchiq_register_child(struct platform_device *pdev, const char *name)
{
	struct platform_device_info pdevinfo;
	struct platform_device *new_dev;
	struct device_node *np;

	memset(&pdevinfo, 0, sizeof(pdevinfo));

@@ -3612,10 +3613,20 @@ vchiq_register_child(struct platform_device *pdev, const char *name)
		return NULL;

	/*
	 * 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(&new_dev->dev, np, true);

	if (np != pdev->dev.of_node)
		of_node_put(np);

	return new_dev;
}