On Mon, Feb 11, 2019 at 09:58:04AM +0000, Jun Li wrote: > Hi Heikki, > > > @@ -84,7 +85,12 @@ enum usb_role usb_role_switch_get_role(struct > > usb_role_switch *sw) } EXPORT_SYMBOL_GPL(usb_role_switch_get_role); > > > > -static int __switch_match(struct device *dev, const void *name) > > +static int switch_fwnode_match(struct device *dev, const void *fwnode) > > +{ > > + return dev_fwnode(dev) == fwnode; > > You missed the comment > https://lkml.org/lkml/2019/1/22/437 > > return dev_fwnode(dev->parent) == fwnode; That's actually not the case. struct usb_role_switch_desc has a member for fwnode, and that's what we use with the actual mux device. Check usb_role_switch_register(): ... sw->dev.fwnode = desc->fwnode; ... Sorry for not realizing it before. thanks, -- heikki