On Wed, Nov 09, 2022 at 11:00:29AM -0800, Dmitry Torokhov wrote: > On Wed, Nov 09, 2022 at 01:25:06PM +0200, Andy Shevchenko wrote: > > On Tue, Nov 08, 2022 at 04:26:50PM -0800, Dmitry Torokhov wrote: ... > > > +static struct gpio_desc *gpiod_find_by_fwnode(struct fwnode_handle *fwnode, > > > + struct device *consumer, > > > + const char *con_id, > > > + unsigned int idx, > > > + enum gpiod_flags *flags, > > > + unsigned long *lookupflags) > > > { > > > - unsigned long lflags = GPIO_LOOKUP_FLAGS_DEFAULT; > > > > > - struct gpio_desc *desc = ERR_PTR(-ENODEV); > > > > Not sure why this is needed. Now I see that else branch has been changed, > > but looking closer to it, we can drop it completely, while leaving this > > line untouched, correct? > > Yes. I believe removing an initializer and doing a series of if/else > if/else was discussed and [soft] agreed-on in the previous review cycle, > but I can change it back. > > I think we still need to have it return -ENOENT and not -ENODEV/-EINVAL > so that we can fall back to GPIO lookup tables when dealing with an > unsupported node type. Right, okay, let's go with whatever variant you find better. ... > > > + if (!IS_ERR_OR_NULL(fwnode)) > > > > I think this is superfluous check. > > > > Now in the form of this series, you have only a single dev_dbg() that tries to > > dereference it. Do we really need to have it there, since every branch has its > > own dev_dbg() anyway? > > As I mentioned, I like to keep this check to show the reader that we > should only descend into gpiod_find_by_fwnode() if we have a valid > fwnode. It is less about code generation and more about the intent. Yes, but if fwnode is not found, we have a next check for that. I really don't think we lose anything by dropping the check and gaining the code generation as a side effect. -- With Best Regards, Andy Shevchenko