On Sat, Oct 5, 2024 at 5:46 AM Kent Gibson <warthog618@xxxxxxxxx> wrote: > > On Fri, Oct 04, 2024 at 04:43:25PM +0200, Bartosz Golaszewski wrote: > > From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > > > Instead of emitting the line state change event on request in three > > different places, just do it once, closer to the source: in > > gpiod_request_commit(). > > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > > --- > > drivers/gpio/gpiolib-cdev.c | 6 ------ > > drivers/gpio/gpiolib.c | 4 ++-- > > 2 files changed, 2 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c > > index b0050250ac3a..f614a981253d 100644 > > --- a/drivers/gpio/gpiolib-cdev.c > > +++ b/drivers/gpio/gpiolib-cdev.c > > @@ -372,8 +372,6 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip) > > goto out_free_lh; > > } > > > > - gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED); > > - > > dev_dbg(&gdev->dev, "registered chardev handle for line %d\n", > > offset); > > This moves the notify to before the desc->flags have been set. > So the notified will now see the flags as previously set, not what they > have been requested as. > Ah, I got fooled by the libgpiod tests passing. I guess we should cover that first in tests-kernel-uapi.c. > That might be acceptible if you subsequently issue GPIO_V2_LINE_CHANGED_CONFIG > when the flags are set, but that is not done here and you explicitly don't > notify from here in patch 5 when you add notifying to gpiod_direction_output() > etc. > IMO it doesn't make sense to always emit REQUESTED and CONFIG_CHANGED events together. The initial config should be part of the request event. I'll get back to the drawing board. Bart