36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
|
General Purpose Input and Output
|
||
|
|
||
|
To make MINIX more usable on embedded hardware, we need some way to access the
|
||
|
GPIO features of the system on a chip. Generally System on Chips (SoC) designs
|
||
|
provide some way to configure pads to perform basic Input/Output operations on
|
||
|
selected ports. These ports are also usually grouped into banks. The end
|
||
|
result is that you have a functional general input output block where you need
|
||
|
to configure some the following functions.
|
||
|
|
||
|
Functional Requirements
|
||
|
|
||
|
We envision that the short term usage of the GPIO library will be both input
|
||
|
and output handling. Input handling as we want to be able to listen to button
|
||
|
presses and generate key events, and output handling because we want to be able
|
||
|
to control LEDs.
|
||
|
|
||
|
GPIO required functionality
|
||
|
-Configure pins as input or output.
|
||
|
-Configure the impedance of the pins.
|
||
|
-Get or set the values of the pins (possibly in a single call).
|
||
|
-Configure interrupt levels for input pins.
|
||
|
-Configure debouncing of pins.
|
||
|
|
||
|
Additional kernel requirements:
|
||
|
-Manage the GPIO resources (who may access what)
|
||
|
-Access the GPIO pins from within driver (for the keyboard)
|
||
|
-Access the GPIO pins from within userland (for toggling LEDs)
|
||
|
|
||
|
|
||
|
Usage:
|
||
|
You have to manually mount the gpio fs using the following command
|
||
|
|
||
|
# mkdir -p /gpio
|
||
|
# mount -t gpio none /gpio
|
||
|
|