9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] "gpio device" for Plan 9
@ 2013-12-29 22:04 Krystian Lewandowski
  2013-12-29 22:34 ` erik quanstrom
                   ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Krystian Lewandowski @ 2013-12-29 22:04 UTC (permalink / raw)
  To: 9fans

Good evening,
i’d like to share with you some Raspberry Pi related work done for Plan 9 BCM port.

Using slightly modified (unmodified in most cases) uartmini.c GPIO functions i implemented #G/gpio device:
Structure is as follows:
#G/gpio/
	/bcm/ ...
	/board/ ...
	/wpi/ ...
	/OK

- bcm uses board revision specific pin numbering
- board uses human readable pin addressing (board revision agnostic)
- wpi uses wiringPi pin assignment (board revision agnostic)
- OK pin can be used to switch on/off OK LED on the board

Each directory above contains files that are mapped to pins.
Maybe it is an overkill, i don’t know.

I used this page as reference for pin assignments:
https://projects.drogon.net/raspberry-pi/wiringpi/pins/

% du -a
0	./bcm/0
0	./bcm/1
0	./bcm/4
0	./bcm/7
0	./bcm/8
0	./bcm/9
0	./bcm/10
0	./bcm/11
0	./bcm/14
0	./bcm/15
0	./bcm/16
0	./bcm/17
0	./bcm/18
0	./bcm/21
0	./bcm/22
0	./bcm/23
0	./bcm/24
0	./bcm/25
0	./bcm
0	./board/SDA
0	./board/SCL
0	./board/GPIO7
0	./board/CE1
0	./board/CE0
0	./board/MISO
0	./board/MOSI
0	./board/SCLK
0	./board/TxD
0	./board/RxD
0	./board/GPIO0
0	./board/GPIO1
0	./board/GPIO2
0	./board/GPIO3
0	./board/GPIO4
0	./board/GPIO5
0	./board/GPIO6
0	./board
0	./wpi/8
0	./wpi/9
0	./wpi/7
0	./wpi/11
0	./wpi/10
0	./wpi/13
0	./wpi/12
0	./wpi/14
0	./wpi/15
0	./wpi/16
0	./wpi/0
0	./wpi/1
0	./wpi/2
0	./wpi/3
0	./wpi/4
0	./wpi/5
0	./wpi/6
0	./wpi
0	./OK
0	.

Reference:
- mount gpio:
	% bind -a '#G’ /dev
- read pin state:
	% cat /dev/gpio/board/GPIO0
- write pin state:
	% echo 1 > /dev/gpio/board/GPIO0
	% echo 0 > /dev/gpio/board/GPIO0
- select pin function:
	% echo func out > /dev/gpio/board/GPIO0
(possible functions are: "in", "out", "f5", "f4", "f0", "f1", "f2", "f3”)
- select pin pull state:
	% echo pull up > /dev/gpio/board/GPIO0
(possible pull states are: "off", "down", "up”)

This is completely untested. I’m still waiting for cables and breadboard, i don’t want to play with pins until i’ll have it. Though OK pin (LED) seems to behave.
Maybe something in this implementation is wrong or has no sense at all? If anyone would like to try to play with it, here is the commit (also includes /dev/cputemp i sent to this list some time ago). I don’t want to send the patch yet.
https://github.com/elewarr/plan9-bcm/commit/18f1c470d1e16a63a55761094f723c2bd91b576d
Please remember it is not tested - use it at your own risk.

Other things:
1. OK LED is also used by emmc.c (search for okay(int))
2. devgpio.c keeps its own version of some GPIO related functions(gpio in/out, function selection, pull up/down state) defined in uartmini.c - it should probably be removed from uartmini.c but because i can’t test serial console connection i didn’t touch it
3. Is #G/gpio scheme OK (unreserved, correct)?
4. Events are not supported

Greetings,
Krystian


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2014-02-28 23:30 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-29 22:04 [9fans] "gpio device" for Plan 9 Krystian Lewandowski
2013-12-29 22:34 ` erik quanstrom
2013-12-30  7:32 ` Skip Tavakkolian
2013-12-30 22:38   ` Shane Morris
     [not found] ` <35A33F66-EF03-4659-ABA1-F25082DBFE41@gmail.com>
2013-12-31 17:46   ` Krystian Lewandowski
2013-12-31 19:18     ` erik quanstrom
2013-12-31 19:37       ` Shane Morris
2013-12-31 19:48         ` Skip Tavakkolian
2013-12-31 19:50         ` erik quanstrom
2013-12-31 20:45           ` Shane Morris
2013-12-31 22:03             ` erik quanstrom
2013-12-31 22:17               ` Shane Morris
2013-12-31 22:52                 ` erik quanstrom
2013-12-31 22:57           ` Krystian Lewandowski
2013-12-31 23:16             ` Shane Morris
2013-12-31 23:35               ` Shane Morris
2014-01-01  0:04               ` Krystian Lewandowski
2014-01-01  0:12                 ` Shane Morris
2014-01-01  1:12     ` Matthew Veety
2014-01-01 11:38     ` Richard Miller
2014-01-01 22:16     ` erik quanstrom
2014-02-28 23:30       ` Krystian Lewandowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).