staging: vchiq_arm: Give vchiq children DT nodes
authorPhil Elwell <phil@raspberrypi.com>
Mon, 3 Feb 2020 17:30:46 +0000 (17:30 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:03:58 +0000 (16:03 +0000)
vchiq kernel clients are now instantiated as platform drivers rather
than using DT, but the children of the vchiq interface may still
benefit from access to DT properties. Give them the option of a
a sub-node of the vchiq parent for configuration and to allow
them to be disabled.

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c

index 1d730654c3cfdf5f6626fc0480ac55941eacbaf8..ada8c448a4725134df58049d694c052f97e0d890 100644 (file)
@@ -1782,12 +1782,20 @@ vchiq_register_child(struct platform_device *pdev, const char *name)
        pdevinfo.id = PLATFORM_DEVID_NONE;
        pdevinfo.dma_mask = DMA_BIT_MASK(32);
 
+       np = of_get_child_by_name(pdev->dev.of_node, name);
+
+       /* Skip the child if it is explicitly disabled */
+       if (np && !of_device_is_available(np))
+               return NULL;
+
        child = platform_device_register_full(&pdevinfo);
        if (IS_ERR(child)) {
                dev_warn(&pdev->dev, "%s not registered\n", name);
                child = NULL;
        }
 
+       child->dev.of_node = np;
+
        /*
         * We want the dma-ranges etc to be copied from a device with the
         * correct dma-ranges for the VPU.