@@ -2734,12 +2734,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.