Skip to content

Commit

Permalink
staging: vchiq: Use the old dma controller for OF config on platform …
Browse files Browse the repository at this point in the history
…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: Dave Stevenson <dave.stevenson@raspberrypi.org>
  • Loading branch information
6by9 authored and popcornmix committed Jun 18, 2019
1 parent 05463ad commit cbb5c28
Showing 1 changed file with 14 additions and 3 deletions.
17 changes: 14 additions & 3 deletions drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));

Expand All @@ -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;
}
Expand Down

0 comments on commit cbb5c28

Please sign in to comment.