Hi Daniel, On Wed, Jan 13, 2021 at 12:40:03AM +0000, Daniel Scally wrote: > Hi Heikki > > On 11/01/2021 14:10, Heikki Krogerus wrote: > > This helper will register a software node and then assign > > it to device at the same time. The function will also make > > sure that the device can't have more than one software node. > > > > Tested-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > > Signed-off-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > > --- > > I like this change. One comment below, but for what it's worth: > > Reviewed-by: Daniel Scally <djrscally@xxxxxxxxx> Thanks! > > +/** > > + * device_remove_software_node - Remove device's software node > > + * @dev: The device with the software node. > > + * > > + * This function will unregister the software node of @dev. > > + */ > > +void device_remove_software_node(struct device *dev) > > +{ > > + struct swnode *swnode; > > + > > + swnode = dev_to_swnode(dev); > > + if (!swnode) > > + return; > > + > > + kobject_put(&swnode->kobj); > > +} > > +EXPORT_SYMBOL_GPL(device_remove_software_node); > > I wonder if this also ought to set dev_fwnode(dev)->secondary back to > ERR_PTR(-ENODEV)? We can't do that here unfortunately. Other places still have a reference to the swnode at this point and they may still need to access it using the dev_fwnode(dev)->secondary pointer. -- heikki