Hi Phil, Laurent, On Mon, 2020-05-04 at 12:26 +0300, Laurent Pinchart wrote: > From: Phil Elwell > > 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 > Signed-off-by: Jacopo Mondi > --- > .../staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > index dd3c8f829daa..2325ab825941 100644 > --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c > @@ -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; I think this is alright, although I'd reshufle the code a little so it looks nicer: + /* Skip the child if it is explicitly disabled */ + np = of_get_child_by_name(pdev->dev.of_node, name); + 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; Is this really needed? I'd rather have the parent's np (as commented in patch 26) as long as this is not a real device-tree defined platform device. Regards, Nicolas