From: David Brownell <david-b@pacbell.net>
To: Ben Nizette <bn@niasdigital.com>
Cc: lkml <linux-kernel@vger.kernel.org>,
Trent Piepho <tpiepho@freescale.com>,
hartleys <hartleys@visionengravers.com>,
Mike Frysinger <vapier.adi@gmail.com>,
Bryan Wu <cooloney@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [patch/rfc 2.6.25-git] gpio: sysfs interface
Date: Mon, 28 Apr 2008 17:44:11 -0700 [thread overview]
Message-ID: <200804281744.11564.david-b@pacbell.net> (raw)
In-Reply-To: <1209423678.14631.27.camel@moss.renham>
On Monday 28 April 2008, Ben Nizette wrote:
>
> On Mon, 2008-04-28 at 12:39 -0700, David Brownell wrote:
> > Simple sysfs interface for GPIOs.
> >
> > /sys/class/gpio
> > /gpio-N ... for each exported GPIO #N
> > /value ... always readable, writes fail except for output GPIOs
> > /direction ... writable as: in, out (default low), high, low
> > /control ... to request a GPIO be exported or unexported
> >
> > GPIOs may be exported by kernel code using gpio_export(), which should
> > be most useful for driver debugging. Userspace may also ask that they
> > be exported by writing to the sysfs control file, helping to cope with
> > incomplete board support:
> >
> > echo "export 23" > /sys/class/gpio/control
> > ... will gpio_request(23, "sysfs") and gpio_export(23); use
> > /sys/class/gpio/gpio-23/direction to configure it.
> > echo "unexport 23" > /sys/class/gpio/control
> > ... will gpio_free(23)
>
> Righteo, so if the kernel explicitly gpio_export()s something, it won't
> be gpio_request()ed allowing multiple "owners" making driver debugging
> easier.
The gpio_export() call requires someone (the caller!) to
have requested the GPIO already. The "one owner" rule is
not being changed.
> Most of the time though we don't want to be able to clobber the
> kernel's gpios
Right. Not unless we're debugging the driver managing
those GPIOs.
> so the control file wizardry isn't so much to cope with
> incomplete board support, rather it's the way all regular (ie
> non-driver-debugging) gpio access is started..?
Well, I wouldn't call that "regular"! But then, I don't
have this "use GPIOs from userspace" focus. To me, that's
the exception not the rule.
> Or do you class any
> situation where userspace needs primary gpio control as a BSP omission
> as there Should Be a formal in-kernel driver for it all?
I suppose I'd prefer to see a formal gpio_export() call from
the kernel as part of the BSP, if that's the model for how that
particular board stack should be used. But I suspect there will
be differing opinions on that point, especially from folk who
avoid custom kernels for whatever reasons. (Like, "that binary
has been qualified, this one hasn't.")
> Also, gpio number discovery can be done through the debugfs interface
> already in gpiolib
... intended purely for debugging, not for use with production
systems ...
> but once you've got a userspace gpio interface which
> relies on gpio numbering like this that information ceases to be simple
> debugging and becomes pretty mission-critical. IMO it would make more
> sense to shuffle it in to /sys/class/gpio with all this stuff or at
> least offer a cut-down chip-to-range mapping in a file here.
I don't follow what you're saying here. GPIO numbering is deeply
specific to the hardware; so I'd say the relevant hardware docs are
what become mission-critical. The kernel can't know when some
field update has rewired a bunch of GPIOs, for example...
Trent pointed out that dynamic range assignment can make trouble,
so I can see some help might be needed here. Were you suggesting
something like a /sys/class/gpio/chips file with contents like
0-15 gpio
16-31 gpio
32-47 gpio
48-63 gpio
192-207 mpuio
208-213 tps65010
(Matching a stock OMAP 5912 OSK board, for what it's worth.)
> > The D-space footprint is negligible, except for the sysfs resources
> > associated with each exported GPIO. The additional I-space footprint
> > is about half of the current size of gpiolib. No /dev node creation
> > involved, and no "udev" support is needed.
>
> Which is good for simplicity but makes async notification kinda tricky.
Sysfs attributes are supposed to be pollable. I've not done it,
but fs/sysfs/file.c::sysfs_notify() looks relevant ...
> I would suggest that a lack of pin-change signalling is going to be a
> problem for people who've become accustomed to having it in their
> out-of-tree interfaces. Probably not a showstopper here but certainly
> something which will slow the uptake of this interface.
We accept patches. Even patches on top of patches. ;)
- Dave
next prev parent reply other threads:[~2008-04-29 0:46 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-28 19:39 [patch/rfc 2.6.25-git] gpio: sysfs interface David Brownell
2008-04-28 20:46 ` Andrew Morton
2008-04-28 23:28 ` David Brownell
2008-04-29 2:54 ` Andrew Morton
2008-04-29 3:42 ` Greg KH
2008-04-29 18:45 ` David Brownell
2008-04-29 19:09 ` Andrew Morton
2008-05-02 20:36 ` Pavel Machek
2008-05-17 22:14 ` David Brownell
2008-05-18 0:36 ` [patch 2.6.26-rc2-git] " David Brownell
2008-05-20 7:17 ` Andrew Morton
2008-05-18 4:55 ` [patch/rfc 2.6.25-git] " Ben Nizette
2008-05-19 22:39 ` Pavel Machek
2008-05-20 1:26 ` David Brownell
2008-05-20 8:02 ` Pavel Machek
2008-04-28 23:01 ` Ben Nizette
2008-04-29 0:44 ` David Brownell [this message]
2008-04-29 1:58 ` Ben Nizette
2008-04-29 3:44 ` David Brownell
2008-04-29 4:47 ` Ben Nizette
2008-04-29 21:28 ` David Brownell
2008-04-29 6:17 ` Trent Piepho
2008-04-29 22:39 ` David Brownell
2008-04-28 23:09 ` Trent Piepho
2008-04-29 0:45 ` David Brownell
2008-04-29 5:48 ` Trent Piepho
2008-04-29 12:35 ` Ben Nizette
2008-04-29 18:15 ` Trent Piepho
2008-04-29 21:56 ` David Brownell
2008-04-30 0:49 ` Trent Piepho
2008-04-30 17:49 ` David Brownell
2008-04-29 21:55 ` David Brownell
2008-04-29 23:29 ` Ben Nizette
2008-04-30 1:04 ` David Brownell
2008-04-30 2:08 ` Ben Nizette
2008-04-30 3:13 ` Trent Piepho
2008-04-30 10:33 ` Ben Nizette
2008-04-30 17:42 ` David Brownell
2008-04-30 21:34 ` [patch/rfc 2.6.25-git v2] " David Brownell
2008-04-30 22:47 ` Trent Piepho
2008-04-30 23:14 ` Ben Nizette
2008-05-01 2:12 ` David Brownell
2008-05-01 2:08 ` David Brownell
2008-05-01 3:41 ` Trent Piepho
2008-05-01 4:35 ` David Brownell
2008-05-01 21:16 ` Trent Piepho
2008-05-03 2:58 ` David Brownell
2008-05-03 3:05 ` David Brownell
2008-04-30 23:28 ` Ben Nizette
2008-05-01 21:40 ` David Brownell
2008-04-29 0:47 ` [patch/rfc 2.6.25-git] " Ben Nizette
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200804281744.11564.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=akpm@linux-foundation.org \
--cc=bn@niasdigital.com \
--cc=cooloney@kernel.org \
--cc=hartleys@visionengravers.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tpiepho@freescale.com \
--cc=vapier.adi@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.