Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Nov 2020 23:21:18 -0300
From:      "Dr. Rolf Jansen" <freebsd-rj@obsigna.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        freebsd-arm@freebsd.org
Subject:   Re: User Space GPIO Interrupt programming - GSoC-2018
Message-ID:  <467828F4-E653-415C-9AE3-542274EA1951@obsigna.com>
In-Reply-To: <b4deea7dbe1f6890bf81357b3afd74561588bb76.camel@freebsd.org>
References:  <2B01780F-D367-48A3-A827-B479030A496D@obsigna.com> <b4deea7dbe1f6890bf81357b3afd74561588bb76.camel@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
> Am 24.11.2020 um 17:32 schrieb Ian Lepore <ian@freebsd.org>:
>=20
> On Tue, 2020-11-24 at 17:14 -0300, Dr. Rolf Jansen wrote:
>> Hello
>>=20
>> Has anything of the GSoC-2018 efforts made it into the current code
>> base?
>>=20
>>=20
> =
https://wiki.freebsd.org/SummerOfCode2018Projects/UserSpaceGPIOinterrupts
>>=20
>> I installed the recent 13.0-CURRENT snapshot (2020-11-19) on a
>> BeagleBone Black which was one of the implementation targets of said
>> project, but when running the test tools, I either see cannot
>> read/kevent/poll/aio_read - Operation not supported by device or
>> Inappropriate ioctl for device.
>>=20
>> Perhaps I need to pull the project=E2=80=99s changes into the kernel =
by
>> myself. However, before this I would like to ask whether it is worth
>> the effort.
>>=20
>> Please, can anyone shed some light on this.
>>=20
>> Best regards
>>=20
>> Rolf
>>=20
>=20
> I have had that webpage open (but docked) for literally a year,
> eternally hoping that I can find time to get to it and somehow get it
> committed, or maybe use it as the basis for something to be committed
> (I haven't even looked at it close enough to see if it's =
commit-quality=20
> code or what).
>=20
> I'm curious: What particular need do you have for userspace gpio
> interrupts?  What would you like the API to look like (do you like the
> things listed at that page, or would you prefer something else)?
>=20
> Interrupts is probably not a good name, because it isn't really going
> to act like an interrupt does for kernel code.  It's really just pin-
> change notifications delivered to userland.

On the Forums somebody reported already success after patching his =
kernel with the GSoC-2018 diff's

=
https://forums.freebsd.org/threads/user-space-interface-for-gpio-interrupt=
s.71005/post-428661

He even provided a patch file, and I simply applied this to the =
/base/head sources which I updated right before by svn update. Then I =
recompiled the kernel for the BBB, and guess what, it works.

For testing, I connected a push button to p8.2 and p8.14, and then on =
the command line:

# gpioctl -f /dev/gpioc0 -c 26 IN PU
# ./gpio_intr_test -f /dev/gpioc0 26 ll

Then every time when I push the button I see one line:

gpio_intr_test: read() interrupt on pin 26 of /dev/gpioc0

This looks quite promising. I would need to examine this test tool which =
is provided on the GSoC-2018 GitHub-repository, and then build the =
read() handler into my code.=20

However, for as long as the button is pushed I see also ton's of the =
following warning messages in the serial console:

gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
gpioc0: Unhandled interrupt on pin 26.
...

When I run the test tool in er mode (edge rising), then I see only 2 =
warnings for each push in the serial console, but because the button is =
not debounced, I see a multitude of event messages by the test tool. The =
latter behaviour is actually great, since this means that the interrupts =
are handled very quick.

Anyway, how would I suppress the warning messages in the serial console?

Best regards

Rolf




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?467828F4-E653-415C-9AE3-542274EA1951>