Re: [RFC PATCH 3/5] gpio: gpiolib: Add chardev support for maintaining GPIO values on reset

From: Andrew Jeffery
Date: Fri Oct 20 2017 - 05:03:13 EST


On Fri, 2017-10-20 at 09:27 +0200, Linus Walleij wrote:
> I paged Bartosz and Michael on this, they are experts on the use cases for
> the character device and their opinions are likely more valuable than mine.
>
> > On Fri, Oct 20, 2017 at 5:37 AM, Andrew Jeffery <andrew@xxxxxxxx> wrote:
> > Similar to devicetree support, add flags and mappings to expose reset
> > tolerance configuration through the chardev interface.
> >
> > Signed-off-by: Andrew Jeffery <andrew@xxxxxxxx>
>
> (...)
>
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ* Unconditionally configure reset tolerance, as it's possible
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ* that the tolerance flag itself becomes tolerant to resets.
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ* Thus it could remain set from a previous environment, but
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ* the current environment may not expect it so.
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ*/
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂret = gpiod_set_reset_tolerant(desc,
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ!!(lflags & GPIOHANDLE_REQUEST_RESET_TOLERANT));
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂif (ret < 0)
> > +ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂgoto out_free_descs;
>
> First, as noted in the first patch, IMO we should just go for persistance,
> i.e. you want to flag to the system to keep the line persistent in any case,
> no matter if the system goes to sleep or resets.
>
> So the usecase is going to be a control system or similar, a makerspace
> project, an industrial product of some kind, driving GPIO from userspace.
>
> I don't see it as helpful to give userspace control over whether the line
> is persistent or not. It is more reasonable to assume persistance for
> userspace use cases, don't you think? Whether the system goes to sleep
> or the gpiochip resets should not make a door suddenly close or the
> lights in the christmas tree go out, right? I think if the gpiochip supports
> persistance of any kind, we should try to use it and not have userspace
> provide flags for that.

Right. I guess the counter argument to your examples is if the gpio is
controlling any active process that we don't want to continue if we've
lost the capacity to monitor some other inputs (some kind of dead-man's
switch). But maybe the argument is that should be implemented in the
kernel anyway?

Andrew

Attachment: signature.asc
Description: This is a digitally signed message part