Re: [RFC/RFT PATCH] gpiolib: reverse-assign the fwnode to struct gpio_chip

From: Andy Shevchenko
Date: Sat Oct 07 2023 - 03:40:00 EST


On Sat, Oct 07, 2023 at 12:22:01AM +0200, Linus Walleij wrote:
> On Fri, Oct 6, 2023 at 9:08 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
> > I don't see any good reason for it not having the fwnode assigned.

> > User calling gpio_device_find() will have to jump through hoops in
> > order to match the device by fwnode
>
> Yeah I would add
>
> struct fwnode_handle *gpiochip_get_fwnode(struct gpio_chip *gc)
> {
> return dev_fwnode(&gc->gpiodev->dev);
> }
>
> so it's easy for external users to get the fwnode if they really need it.
> This and a few more changes and we can drop gc->fwnode altogether
> can't we?

This would work, but the problem here is to understand which fwnode
(semantically) the caller wants to use.

One is the GPIO device's, and the other is what provider explicitly assigned.
Currently the latter case is transparent in a sense that GPIO device will get
the same fwnode as GPIO chip submitted by the provider.

Internally GPIOLIB must use GPIO device fwnode and rely only on it.
Externally it depends. Basically it's provider's business to know if it
is safe to use gc->fwnode or not and when.

--
With Best Regards,
Andy Shevchenko