Date: Sat, 28 Feb 2015 11:18:52 +0100 From: Milan Obuch <freebsd-arm@dino.sk> To: freebsd-arm@freebsd.org Subject: Raspberry Pi with PiTFT - some GPIO weirdness Message-ID: <20150228111852.15affe31@zeta.dino.sk>
next in thread | raw e-mail | index | archive | help
Hi, today I found some time to play a bit with my little display attached to Rasoberry Pi, and I decided to test buttons connected to GPIO, as this should work on FreeBSD already. According docs, buttons are connected to GPIO lines 23, 22, 21 and 18, leftmost first. Using basic 'gpioctl -f /dev/gpioc0 -lv' command I found only first one, on line 23, reacts. It has value 1 normally and 0 when pressed. As I first verified this display with Rapbian, I decided to use button on line 23 as reset switch, using some kernel module to do it. It works this way. I tried other buttons with command sequence taken from some guide echo <n> > /sys/class/gpio/export cat /sys/class/gpio/gpio<n>/value for n in 22, 21 and 18, but I was still getting value 0, no matter whether any button is pressed or not. So it seems it does not work out of the box under Rasbpian too... however pressing button on line 23 makes system shutdown itself as expected. Next step was to try reconfigure this module to use other button, first 22 - and middle left button acted as shutdown button now, and I can see changes on gpio23 after export... strange. So I check with lines 21 and 18, and the latter one worked too. After some googling I found there is a difference in board connections between Revision 1 and Revision 2 board, so I should test with 27 instead of 21, and that worked too. So I was able to use any from those four buttons as shutdown button, and read button state for the other three buttons now. Then I put again SD card with my FreeBSD there, and, surprise, all four button states are now correct! I did not make any change in my setup, it just looks like something in SoC was programmed differently now, and it remains this way even after removing power (shutdown module in Raspbian just stops the system, you must remove power from board to restart it, I did not check if there is something like reset pin to start it again), and even after switching SD cards with systems. If anybody has any explanation what could make GPIO readings correct please tell me. Or if you have any idea for some more tests... I would like to understand this, maybe someone knows or found a bit more. Regards, Milan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150228111852.15affe31>