GPIO Centralized Control Daemon
Brad Bishop
bradleyb at fuzziesquirrel.com
Mon Sep 18 02:26:22 AEST 2017
On Sat, 2017-09-16 at 21:22 -0700, Patrick Venture wrote:
> On Sat, Sep 16, 2017 at 3:12 PM, Brad Bishop
> <bradleyb at fuzziesquirrel.com> wrote:
> > Hi Patrick
> >
> > On Thu, 2017-09-14 at 15:02 -0700, Patrick Venture wrote:
> > > I apologize if this already exists or is in the works.
> > >
> > > I propose we create a daemon that centralizes userspace GPIO
> > access.
> > >
> > > From a high level, the daemon will implement interfaces to export
> > or
> > > unexport GPIOs. Each GPIO exported will exist on the dbus:
> > >
> > > /xyz/openbmc_project/gpio/53 and implement an interface with the
> > > following properties:
> > > value, direction, active_low, etc.
> >
> > Just thinking out loud...are we sure a gpio is a useful
> > abstraction?
> > If applications all just use the chardev API what is the benefit of
> > having a dbus object, at the cost of API complexity.
>
> As an alternative, perhaps a library would suffice. My goal is to
> avoid multiple in-application implementations. However, I felt it
A good goal.
> might be helpful to have some centralized daemon serving this
> information -- a simple dbus property access may be simpler than
> either implementing the ioctl in each application. However, a
> library may also provide the necessary abstraction.
I think if you implement a library with API it becomes a wash. There
is also polling to consider - we have a number of applications using
gpio-keys + libevdev.
>
> > >
> > > Some doubts, should the gpio name on the dbus be the relative
> > name
> > > (53), should it be the system specific name (G5) or the absolute
> > > name? I'm thinking the relative name and let the daemon handle
> > > internalizing the adjustment from relative to absolute.
> > >
> > > I'm working on adding GPIO support within phosphor-hwmon so that
> > I
> > > can access a voltage sensor that's gated by a GPIO, and I know
> > there
> >
> > Can you elaborate on what gated means? Is it you have to wiggle a
> > GPIO
> > before the hwmon driver for this voltage sensor can actually access
> > the
> > sensor hardware?
> >
> >
>
> There is a GPIO that controls whether the battery sensor on the
> quanta board (and I've heard of similar configurations on others)
> that needs to be set high for the sensor to work. I implemented a
> bit of a hack in phosphor-hwmon to allow one to specify a GPIO that
> needs to be flipped in this type of configuration. I'd consider
> submitting the patch, however it uses the sysfs interface -- as this
> saved a little implementation time.
We have run into situations like this multiple times. What we did was
bind/unbind the driver in question when the hardware behind it becomes
available.
What do you think of this?
1 - You simply wiggle the gpio from a script or small application at
the appropriate time.
2 - An application other than phosphor-hwmon monitors this gpio and
binds the driver to it (or unbinds).
3 - phosphor-hwmon works without modification.
In fact, #2 is already done - Matt Spinler recently added code to
phosphor-gpio-monitor to do exactly this.
I prefer something like this for two reasons:
1 - Consistency in how we handle things. It becomes easier to write
howtos or cookbooks to provide guidance in the future.
2 - We avoid one-offs in phosphor-hwmon.
>
> I'd be willing to fix it up to use the proper interface and submit it
> upstream if that's something helpful -- or seek out a good library
> for us to use -- I'm also open to suggestions on this.
> > > have been conversations and implementations of this for IPMI OEM
> > --
> > > and I think it could easily be centralized.
> > >
> > > Thoughts?
> > >
> > > Patrick
> >
>
>
More information about the openbmc
mailing list