Hi Laurent, On Wed, Mar 18, 2020 at 1:26 AM Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> wrote: > When a notifier supplies a device fwnode and a subdev supplies an > endpoint fwnode, incorrect matches may occur if multiple subdevs > correspond to the same device fwnode. This can't be handled > transparently in the framework, and requires the notifier to switch to > endpoint fwnodes. Log a message to notify of this problem. A second > message is added to help accelerating the transition to endpoint > matching. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> Thanks for your patch! > --- a/drivers/media/v4l2-core/v4l2-async.c > +++ b/drivers/media/v4l2-core/v4l2-async.c > @@ -113,7 +114,28 @@ static bool match_fwnode(struct v4l2_async_notifier *notifier, > > fwnode_handle_put(dev_fwnode); > > - return dev_fwnode == other_fwnode; > + if (dev_fwnode != other_fwnode) > + return false; > + > + /* > + * We have an heterogenous match. Retrieve the struct device of the > + * side that matched on a device fwnode to print its driver name. > + */ > + if (sd_fwnode_is_ep) > + dev = notifier->v4l2_dev ? notifier->v4l2_dev->dev > + : notifier->sd->dev; > + else > + dev = sd->dev; > + > + if (dev && dev->driver) { > + if (sd_fwnode_is_ep) > + dev_info(dev, "Driver %s uses device fwnode, incorrect match may occur\n", > + dev->driver->name); I think that deserves a dev_warn(). > + dev_info(dev, "Consider updating driver %s to match on endpoints\n", > + dev->driver->name); And dev_notice(), while at it ;-) > + } > + > + return true; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds