Date: Fri, 7 Nov 2014 08:44:30 -0700 From: Warner Losh <imp@bsdimp.com> To: Rui Paulo <rpaulo@me.com> Cc: arm@freebsd.org, embedded@freebsd.org Subject: Re: libgpio Message-ID: <58908C87-6046-4873-87B1-74995EFA72D1@bsdimp.com> In-Reply-To: <B3B50210-8AE9-411A-84B1-AE6C10494149@me.com> References: <B3B50210-8AE9-411A-84B1-AE6C10494149@me.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_E873F49E-869E-44FD-8979-473D22DE02FD Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 On Nov 6, 2014, at 11:41 PM, Rui Paulo <rpaulo@me.com> wrote: > Hi, >=20 > Some time ago, I wrote a gpio library as a way to interact with the = kernel gpio driver in a more sensible way (hiding the details of opening = a /dev file, handling all the ioctls, etc.). >=20 > Here's the project code: >=20 > https://bitbucket.org/rpaulo/libgpio/src >=20 > Here's the header file: >=20 > = https://bitbucket.org/rpaulo/libgpio/src/1dfe793d0b0cd6caff2e196cf667a5c06= bbade8d/libgpio.h?at=3Ddefault >=20 > It looks like some people started using the library and I was = wondering if it would be a good candidate for the base system. I would = rewrite gpioctl to use it and I'm open to changing the library API. >=20 > Any comments? I generally like it. Here=92s some suggestions, though many may be hard = given that our gpio interface is a bit weak. First, there=92s no way to set multiple pins at the same time. That=92s = likely a reflection of our GPIO system, I know, but it is a deficiency. = Fortunately, most devices can tolerate multiple pins changing at = different times before a =91clock=92 or =91enable=92 pin forces them to = latch their state. What the heck is g_caps? There=92s nothing at all to describe it. Not = even an indirection to look at sys/gpio.h For systems that have multiple GPIO devices (some have a few hundred I/O = lines that can be addressed), how do you handle that? Do you just kinda have to know these details? There=92s no facilities for interrupts (usually you=92d like to say = =93wait for this line to change and let me know=94). I know that the = Atmel gpio stuff did this, but I don=92t think that made it into the = generalization that was later done. I=92m not sure that I like the gpio_pin_* helper functions causing the = thing to change, rather than operating on a gpio_config_t. But since you = don=92t normally change a bunch at a time, that=92s not so bad. Finally a question: What does Linux do here? Is there a standard = interface that we could use to leverage off applications written for = Linux? Perhaps beyond the scope of what you=92re trying to do, but any = discussion about pushing things into the base should ask the question = =93Is this the right, most useful interface?=94 Warner --Apple-Mail=_E873F49E-869E-44FD-8979-473D22DE02FD Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - https://gpgtools.org iQIcBAEBCgAGBQJUXOjeAAoJEGwc0Sh9sBEA1RoP/2piAIsGxJ32VaI2x3Bj5p2A hzg8VpRsYSdJmLfaHbcVoSWY0h/HAJiKqSIvEnFE+1D97s91nNU7VhiYSayvGc6R NRKfZqugAzPSZUDACx6dY6huYpva4JlVdDHnQgoG6Wxdlcy565NlJVXTLuu5yeB4 OzQzX7upJUNUckFIWReTJmWAwYuGMQqSHQmWBEW0Hrg/94zemaCBXpekb4rOyiOx cVjvxr204KWfCk5iUVmo/MIKPOwMSBschUx+oyQQLAaE2ROnPQzYwmHKBN16NaMG SuzaO9TNKerGJxRaMGc5KyRAcprJ4C2I6A0HQUCZEcE0/d59D14FGi3zAqHffXCp qmYN7hmWBoYlb2ctlKhDcWmB2QrZ4z6V0E0ZI2RAkeoR2bmFfNmmbeUUWR8IjeRq roKjJfJj+Zvk52Du9OoNLPXd+YM6MdZCYQumbRRufVdK/+zKUgseGZzqwa8l+ivt knXVDPUa71v1703iHz1oFknuc2fpnPogKZFH2KW/LfRAXDtMpFtqYxd0UcCJgyZR 0rFKiwjKyZPu0X9lnYLbL98DYmVhB6eKOdLXQIudLs+QCuc9FyEgPTU6o1jjb+lb Io/+DTwO9tKrO9WFrrIoQwA1qTp7Y+ukG8/4VivcQTPmJvhhGcQ+IlT/Xa6j16vh eQrsQLn3nuJC4VxxBgQg =7WX+ -----END PGP SIGNATURE----- --Apple-Mail=_E873F49E-869E-44FD-8979-473D22DE02FD--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?58908C87-6046-4873-87B1-74995EFA72D1>