NetBSD Problem Report #51676

From brad@anduin.eldar.org  Thu Dec  1 00:11:10 2016
Return-Path: <brad@anduin.eldar.org>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
	(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 430D97A28D
	for <gnats-bugs@gnats.NetBSD.org>; Thu,  1 Dec 2016 00:11:10 +0000 (UTC)
Message-Id: <201612010011.uB10B3Vp014072@anduin.eldar.org>
Date: Wed, 30 Nov 2016 19:11:03 -0500 (EST)
From: brad@anduin.eldar.org
Reply-To: brad@anduin.eldar.org
To: gnats-bugs@NetBSD.org
Subject: Enhancement - interrupt support for RPI gpio, kevents for gpio.c, PPS driver for gpio, and more
X-Send-Pr-Version: 3.95

>Number:         51676
>Category:       kern
>Synopsis:       Enhancement - interrupt support for RPI gpio, kevents for gpio.c, PPS driver for gpio, and more
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    thorpej
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 01 00:15:00 +0000 2016
>Last-Modified:  Sun May 20 15:20:01 +0000 2018
>Originator:     Brad Spencer
>Release:        NetBSD 7.99.42
>Organization:
Personal project
>Environment:
System: NetBSD erebor 7.99.42 NetBSD 7.99.42 (EREBOR) #0: Tue Nov 29 09:05:19 EST 2016  brad@braddev.brad.local:/usr/src/sys/arch/evbarm/compile/EREBOR evbarm
Architecture: earmv6hf
Machine: evbarm
>Description:

I had a desire to build one of these:

http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html

...but did not want to run Linux and NetBSD lacked any interrupts on
the RPI's gpio pins and did not have a PPS driver for GPIO.  This is
an enhancement PR that is the result of working on this:

o Adds support for interrupts to arch/arm/broadcom/bcm2835_gpio.c

o Adds a "demo" driver for GPIO interrupts called gpioirq. 

o Adds simple kevents to dev/gpio/gpio.c that trigger on a number of
conditions, including an interrupt.

o Adds a demo userland program that demonstrates the use of kevents on
GPIO pins.  This can be used with the gpioirq or gpiopps driver to
actually see something happen.

o Adds a PPS driver called gpiopps that seems to make ntpd happy with
the type 20 and type 22 reference driver.  The type 28 driver can also
be used when gpsd is running, but I could not get the type 46 driver
to work and gpsd did not like the PPS device even with the type 28
driver.  I am not entirely sure gpsd from pkgsrc compiles in PPS
support on NetBSD.

>How-To-Repeat:

The tar.bz2 below includes a script that patches a source tree.
Unpack the tar file and do something like the following.  The script
will want the top of a checked out src tree:

./install_gpio_enhancement /development/usr/src

There are 20 diffs that are applied to the src tree and three new
directories.  Poorly worded man pages have been provided for gpioirq
and gpiopps and diffs against gpio.4 are included.

Simple usage:

modload gpioirq
modload gpiopps

gpioctl gpio0 attach gpioirq 4 0x01 0x01
gpioctl gpio0 attach gpiopps 26 0x01

Forgot...  to include diffs for MAKEDEV for gpiopps:

erebor: {15} ls -l /dev/gpiopps0
crw-rw-r--  1 root  _gpio  342, 0 Nov 29 17:02 /dev/gpiopps0

Maybe someone other than me will find this useful.


>Fix:

begin 644 GPIO_ENHANCEMENT.tar.bz2
M0EIH.3%!629361Z,R1L`283_W_YT%$!_________[O____]````0H`0`$0`"
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
MTW0"='QTG`\"OGN'.*P#O_*;>#\H0Z["9J,K\D8*[>D`L&!FVH!"%/3YQ
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
9VP-3),,QA\X/`(&0`/_Q=R13A0D!Z,R1L*U`
`
end

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: kern-bug-people->mbalmer
Responsible-Changed-By: dholland@NetBSD.org
Responsible-Changed-When: Fri, 02 Dec 2016 17:02:20 +0000
Responsible-Changed-Why:
gpio dude
(if you can at least review the changes that would be helpful; if not
set it back)


Responsible-Changed-From-To: mbalmer->thorpej
Responsible-Changed-By: thorpej@NetBSD.org
Responsible-Changed-When: Mon, 30 Apr 2018 17:20:50 +0000
Responsible-Changed-Why:
No action for over 1 year, and I have a need for this, so I'll pick it up.


From: Brad Spencer <brad@anduin.eldar.org>
To: gnats-bugs@NetBSD.org
Cc: thorpej@NetBSD.org, mbalmer@NetBSD.org, netbsd-bugs@netbsd.org,
        gnats-admin@netbsd.org
Subject: Re: kern/51676 (Enhancement - interrupt support for RPI gpio, kevents for gpio.c, PPS driver for gpio, and more)
Date: Tue, 01 May 2018 08:11:28 -0400

 thorpej@NetBSD.org writes:

 > Synopsis: Enhancement - interrupt support for RPI gpio, kevents for gpio.c, PPS driver for gpio, and more
 >
 > Responsible-Changed-From-To: mbalmer->thorpej
 > Responsible-Changed-By: thorpej@NetBSD.org
 > Responsible-Changed-When: Mon, 30 Apr 2018 17:20:50 +0000
 > Responsible-Changed-Why:
 > No action for over 1 year, and I have a need for this, so I'll pick it up.


 Hello...

 I was the one who put in this PR..  You may want to visit my web site:

 http://anduin.eldar.org/stratum-1

 and download MUCH improved patches for some of what was in the PR.


 I have not had time to update anything to support the FDTization that
 occurred with the RPI, so all patches are very much pre-FDT.  Sorry...

 I was also mostly unclear if the RPI will support interrupts coming to
 more than one CPU core.  Right now, the patches pretty much have CPU0
 handle the interrupts.  This won't be a problem for PPS, but may very
 well be a problem if there is a high number of interrupts occurring on a
 pin, such as what can happen here:

 http://anduin.eldar.org/true-rng

 for one of the true rng generators I built.



 I would love to see GPIO interrupts official for the RPI as well....



 -- 
 Brad Spencer - brad@anduin.eldar.org - KC8VKS - http://anduin.eldar.org

From: Jason Thorpe <thorpej@me.com>
To: gnats-bugs@NetBSD.org
Cc: 
Subject: Re: kern/51676 (Enhancement - interrupt support for RPI gpio,
 kevents for gpio.c, PPS driver for gpio, and more)
Date: Tue, 01 May 2018 09:31:24 -0700

 > On May 1, 2018, at 5:15 AM, Brad Spencer <brad@anduin.eldar.org> =
 wrote:
 > Hello...
 >=20
 > I was the one who put in this PR..  You may want to visit my web site:

 Hey Brad =E2=80=94 thanks for following up.  Cool stuff!  The project =
 I=E2=80=99m using this for is a Nixie tube display clock.

 >=20
 > http://anduin.eldar.org/stratum-1
 >=20
 > and download MUCH improved patches for some of what was in the PR.

 Great, noted.

 >=20
 >=20
 > I have not had time to update anything to support the FDTization that
 > occurred with the RPI, so all patches are very much pre-FDT.  Sorry...
 >=20
 > I was also mostly unclear if the RPI will support interrupts coming to
 > more than one CPU core.  Right now, the patches pretty much have CPU0
 > handle the interrupts.  This won't be a problem for PPS, but may very
 > well be a problem if there is a high number of interrupts occurring on =
 a
 > pin, such as what can happen here:

 I=E2=80=99ll have a look in the documentation.  I am doing my Nixie =
 project on a Pi B+, but I also have a Pi 3 for general hackery (and =
 eventually a cocktail table game system with important titles like Ms =
 Pac Man and Galaga), so if I can figure out how to steer interrupts to =
 other CPUs, I=E2=80=99ll work on it on that platform.

 >=20
 > http://anduin.eldar.org/true-rng
 >=20
 > for one of the true rng generators I built.

 This is excellent!

 >=20
 > I would love to see GPIO interrupts official for the RPI as well=E2=80=A6=
 .

 Yah, I=E2=80=99ll definitely be integrating that part.  In particular, =
 the thing I=E2=80=99m most interested in is the interrupt support, which =
 I will then enhance =E2=80=9Cgpiokeys=E2=80=9D with (I=E2=80=99d prefer =
 to generate the UI events for the buttons on the clock housing [snooze, =
 etc] without resorting using an AVR to generate USB events), and I =
 really loathe polling :-)

 Anyway, I=E2=80=99ll be working on it in the coming weeks (and I have a =
 couple of cross-country flights coming up, so that=E2=80=99ll give me =
 some extra time).

 Thanks for doing this work!

 >=20
 >=20
 >=20
 > --=20
 > Brad Spencer - brad@anduin.eldar.org - KC8VKS - =
 http://anduin.eldar.org
 >=20

 -- thorpej

From: Brad Spencer <brad@anduin.eldar.org>
To: gnats-bugs@NetBSD.org
Cc: thorpej@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/51676 (Enhancement - interrupt support for RPI gpio,
 kevents for gpio.c, PPS driver for gpio, and more)
Date: Tue, 01 May 2018 13:42:35 -0400

 Jason Thorpe <thorpej@me.com> writes:

 >  > On May 1, 2018, at 5:15 AM, Brad Spencer <brad@anduin.eldar.org> =
 >  wrote:
 >  > Hello...
 >  >=20
 >  > I was the one who put in this PR..  You may want to visit my web site:
 >  
 >  Hey Brad thanks for following up.  Cool stuff!  The project
 >  I am using this for is a Nixie tube display clock.

 Oh, ya, those are fun.  Post some pictures when you get it working.

 [snip]

 >  > I have not had time to update anything to support the FDTization that
 >  > occurred with the RPI, so all patches are very much pre-FDT.  Sorry...
 >  >=20
 >  > I was also mostly unclear if the RPI will support interrupts coming to
 >  > more than one CPU core.  Right now, the patches pretty much have CPU0
 >  > handle the interrupts.  This won't be a problem for PPS, but may very
 >  > well be a problem if there is a high number of interrupts occurring on =
 >  a
 >  > pin, such as what can happen here:
 >  
 >  I'll have a look in the documentation.  I am doing my Nixie
 >  project on a Pi B+, but I also have a Pi 3 for general hackery (and
 >  eventually a cocktail table game system with important titles like Ms
 >  Pac Man and Galaga), so if I can figure out how to steer interrupts to
 >  other CPUs, I'll work on it on that platform.

 This was an area of the docs that confused me some, and I just wasn't
 sure what I was looking at.

 >  >=20
 >  > http://anduin.eldar.org/true-rng
 >  >=20
 >  > for one of the true rng generators I built.
 >  
 >  This is excellent!

 Thanks... ya, the true rngs were fun to build.  The diode generator
 creates around 250,000 interrupts a second, and I found it impossible to
 process every interrupt with only one CPU handling the hard interrupt,
 so having more then one CPU involved is likely to help in that case.
 The gpiorng driver on that page tries to be as MP as possible, but it
 can't help the fact that only CPU0 get the hard interrupt.

 >  >=20
 >  > I would love to see GPIO interrupts official for the RPI as well=E2=80=A6=
 >  .
 >  
 >  Yah, I'll definitely be integrating that part.  In particular,
 >  the thing I'm most interested in is the interrupt support, which
 >  I will then enhance gpiokeys with (I'd prefer
 >  to generate the UI events for the buttons on the clock housing [snooze,
 >  etc] without resorting using an AVR to generate USB events), and I
 >  really loathe polling :-)

 Depending on what is desired some of the rest of the patches might be of
 interest.  The patches to gpio.c added kevent support for gpio stuff in
 general, including interrupts.  You can then use the included gpioirq
 driver as a simple trigger, which is all it really is anyway, and get
 interrupt events into user land.  There is some example C code included
 that show how to use GPIO kevents.

 >  Anyway, I'll be working on it in the coming weeks (and I have a
 >  couple of cross-country flights coming up, so that will give me
 >  some extra time).

 [snip]

 I will be watching out for this..  thanks for picking it up.

 >  -- thorpej




 -- 
 Brad Spencer - brad@anduin.eldar.org - KC8VKS - http://anduin.eldar.org

From: "Jason R Thorpe" <thorpej@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/51676 CVS commit: src
Date: Sat, 19 May 2018 13:59:07 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sat May 19 13:59:07 UTC 2018

 Modified Files:
 	src/share/man/man4: gpio.4
 	src/sys/dev/gpio: gpio.c gpiovar.h
 	src/sys/sys: gpio.h
 	src/usr.sbin/gpioctl: gpioctl.c

 Log Message:
 Overhaul of GPIO interrupt support (that wasn't even used by anything).
 - Remove the old, not-expressive-enough interrupt flags, and replace them
   with a new set of interrupt-specific flags that can express a wide
   variety of interrupt configurations (pos, neg, and double-edge, high
   and low level).
 - Remove old, unused gpio_pin_ctl_intr() and gpio_pin_irqen(), and
   replace them with gpio_intr_establish(), gpio_intr_disestablish(),
   and gpio_intr_str().  Corresponding fields in the gpio_chipset_tag
   are also added for back-end controllers, which now handle the actual
   dispatch of GPIO interrupts in order to properly support level-triggered
   interrupts as well as interoperate properly with FDT-registered
   interrupts.

 Piggy-back on the 8.99.18 version bump.

 Inspired by initial work from Brad Spencer.
 PR kern/51676


 To generate a diff of this commit:
 cvs rdiff -u -r1.32 -r1.33 src/share/man/man4/gpio.4
 cvs rdiff -u -r1.60 -r1.61 src/sys/dev/gpio/gpio.c
 cvs rdiff -u -r1.17 -r1.18 src/sys/dev/gpio/gpiovar.h
 cvs rdiff -u -r1.15 -r1.16 src/sys/sys/gpio.h
 cvs rdiff -u -r1.23 -r1.24 src/usr.sbin/gpioctl/gpioctl.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jason R Thorpe" <thorpej@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/51676 CVS commit: src/sys/arch/arm/broadcom
Date: Sat, 19 May 2018 14:02:10 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sat May 19 14:02:10 UTC 2018

 Modified Files:
 	src/sys/arch/arm/broadcom: bcm2835_gpio.c

 Log Message:
 Add support for interrupts on GPIO pins.  We support both FDT-driven
 interrupt registration as well as the new GPIO interrupt interface.

 Based on initial work by Brad Spencer.
 PR kern/51676


 To generate a diff of this commit:
 cvs rdiff -u -r1.6 -r1.7 src/sys/arch/arm/broadcom/bcm2835_gpio.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jason R Thorpe" <thorpej@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/51676 CVS commit: src
Date: Sat, 19 May 2018 14:15:40 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sat May 19 14:15:40 UTC 2018

 Modified Files:
 	src/distrib/sets/lists/man: mi
 	src/distrib/sets/lists/modules: mi
 	src/share/man/man4: Makefile
 	src/sys/dev/gpio: files.gpio
 	src/sys/modules: Makefile
 Added Files:
 	src/share/man/man4: gpioirq.4
 	src/sys/dev/gpio: gpioirq.c
 	src/sys/modules/gpioirq: Makefile gpioirq.ioconf

 Log Message:
 Add an example "gpioirq" driver that demonstrates interrupts on GPIO
 pins.  Will be enhanced in the future to support sending events to
 user space on edge-triggered interrupt events.

 Based on initial work by Brad Spencer.
 PR kern/51676


 To generate a diff of this commit:
 cvs rdiff -u -r1.1586 -r1.1587 src/distrib/sets/lists/man/mi
 cvs rdiff -u -r1.114 -r1.115 src/distrib/sets/lists/modules/mi
 cvs rdiff -u -r1.652 -r1.653 src/share/man/man4/Makefile
 cvs rdiff -u -r0 -r1.1 src/share/man/man4/gpioirq.4
 cvs rdiff -u -r1.14 -r1.15 src/sys/dev/gpio/files.gpio
 cvs rdiff -u -r0 -r1.1 src/sys/dev/gpio/gpioirq.c
 cvs rdiff -u -r1.202 -r1.203 src/sys/modules/Makefile
 cvs rdiff -u -r0 -r1.1 src/sys/modules/gpioirq/Makefile \
     src/sys/modules/gpioirq/gpioirq.ioconf

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jason R Thorpe" <thorpej@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/51676 CVS commit: src
Date: Sun, 20 May 2018 14:08:33 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sun May 20 14:08:33 UTC 2018

 Modified Files:
 	src/distrib/sets/lists/man: mi
 	src/distrib/sets/lists/modules: mi
 	src/etc: MAKEDEV.tmpl
 	src/share/man/man4: Makefile
 	src/share/man/man8: MAKEDEV.8
 	src/sys/conf: majors
 	src/sys/dev/gpio: files.gpio
 	src/sys/modules: Makefile
 Added Files:
 	src/sys/dev/gpio: gpiopps.c

 Log Message:
 Add a 1PPS-over-GPIO driver, originally by Brad Spencer, with changes by
 me to adapt to the new GPIO interrupt interface and support a wider variety
 of GPIO pin configuations.

 PR kern/51676


 To generate a diff of this commit:
 cvs rdiff -u -r1.1587 -r1.1588 src/distrib/sets/lists/man/mi
 cvs rdiff -u -r1.115 -r1.116 src/distrib/sets/lists/modules/mi
 cvs rdiff -u -r1.189 -r1.190 src/etc/MAKEDEV.tmpl
 cvs rdiff -u -r1.653 -r1.654 src/share/man/man4/Makefile
 cvs rdiff -u -r1.47 -r1.48 src/share/man/man8/MAKEDEV.8
 cvs rdiff -u -r1.78 -r1.79 src/sys/conf/majors
 cvs rdiff -u -r1.15 -r1.16 src/sys/dev/gpio/files.gpio
 cvs rdiff -u -r0 -r1.1 src/sys/dev/gpio/gpiopps.c
 cvs rdiff -u -r1.203 -r1.204 src/sys/modules/Makefile

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: "Jason R Thorpe" <thorpej@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/51676 CVS commit: src
Date: Sun, 20 May 2018 15:15:41 +0000

 Module Name:	src
 Committed By:	thorpej
 Date:		Sun May 20 15:15:41 UTC 2018

 Added Files:
 	src/share/man/man4: gpiopps.4
 	src/sys/modules/gpiopps: Makefile gpiopps.ioconf

 Log Message:
 Add a 1PPS-over-GPIO driver, originally by Brad Spencer, with changes by
 me to adapt to the new GPIO interrupt interface and support a wider variety
 of GPIO pin configuations.

 PR kern/51676

 (Oops, forgot to "cvs add" these items previously.)


 To generate a diff of this commit:
 cvs rdiff -u -r0 -r1.1 src/share/man/man4/gpiopps.4
 cvs rdiff -u -r0 -r1.1 src/sys/modules/gpiopps/Makefile \
     src/sys/modules/gpiopps/gpiopps.ioconf

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.