Re: [PATCH] gpiolib: add GPIO_SET_DEBOUNCE_IOCTL
From: Kent Gibson
Date: Wed May 13 2020 - 00:33:53 EST
On Tue, May 12, 2020 at 07:55:42PM +0200, Linus Walleij wrote:
> On Mon, May 4, 2020 at 12:32 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote:
>
I hope Bart doesn't mind if I jump in here, but I've started working on
this so hopefully I can address most of your points...
> > Ideally we'd have to introduce new versions of gpioevent_request,
> > gpioline_request, gpioline_info and gpioevent_data structs - this time
> > with enough additional padding and no alignment issues. Then we could
> > add the debounce properly.
>
> Hm that sounds massive. Is it really that bad?
>
Agreed - it is massive - we end up replacing the majority of the
existing structs and ioctls.
If we want to be able to set debounce in the request(s), not just in
SET_CONFIG, then we need new requests as there is no room in the
existing. If we want to be able to report that config in the info then
we need new infos for the same reason. The info_changed contains an
info so that has to change as well. And the event_data has a 32/64bit
alignment issue so it was already up for replacement.
So it could be worse, but not much.
> > This would of course add a lot of cruft to the uAPI code. I'd start by
> > moving it out of drivers/gpio/gpiolib.c into a new file:
> > drivers/gpio/gpiolib-cdev.c. This way we'd have everything related to
> > the character device in one place. It would make it easier to: a) add
> > a config option for disabling it entirely and b) add a config option
> > to disable the v1 of the ioctl()s.
>
> Its good to break out for code maintenance no matter what we do
> with it :)
>
It definitely is, and I'll submit a patch soon, that hopefully can be
applied immediately before the next dev window opens, to do just that.
> I would however not make it in any way totally optional, because the
> big win with the character device over the legacy sysfs is to always
> be available.
>
And if you build it into your kernel, which will be the default, it
still will be.
But maybe there are specific applications that don't need cdev and
would be interested in reducing kernel bloat?
> > Linus: about the software-debounce you mentioned: do you think it
> > somehow plugs the hole we identified here?
>
> Hm, I don't quite understand what the hole is I guess...
>
I'll leave this one for Bart - the more I re-read the thread the less
certain I am as well.
I will note that Bart correctly mentioned that the uapi doesn't return
an error if the user requests bias that is not supported by the driver
- gpio_set_bias absorbs the error.
That isn't by intent - it is the way gpiod_direction_input
behaved before I added bias to cdev. It was left that way as I was
unsure on the broader implications of changing it, and wasn't keen on
implementing a cdev specific gpiod_direction_input either.
I'm open to suggestions if you would like to change that.
Cheers,
Kent.