aboutsummaryrefslogtreecommitdiffstats
path: root/src/libgpio/gpio.h
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2018-11-30 10:51:10 -0500
committerClyne Sullivan <tullivan99@gmail.com>2018-11-30 10:51:10 -0500
commit42eff60714a32942b307d6b139aa400ca0df296a (patch)
tree7258326a1e2b1c0d6f42dbc744a9f1aac14068e6 /src/libgpio/gpio.h
parentcef5647a1542ac8520df07f15216a35ee35881ac (diff)
libgpio, better initrd structure
Diffstat (limited to 'src/libgpio/gpio.h')
-rw-r--r--src/libgpio/gpio.h57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/libgpio/gpio.h b/src/libgpio/gpio.h
new file mode 100644
index 0000000..7d7c8f7
--- /dev/null
+++ b/src/libgpio/gpio.h
@@ -0,0 +1,57 @@
+#ifndef STMOS_GPIO_H_
+#define STMOS_GPIO_H_
+
+#define GP(a) ((a - 'A') << 4)
+
+/**
+ * Defines possible modes for a gpio pin.
+ */
+enum GPIO_MODE
+{
+ INPUT = 0, /**< digital input */
+ OUTPUT, /**< digital output */
+ ALTERNATE, /**< alternate function */
+ ANALOG /**< analog function */
+};
+
+/**
+ * Defines whether to use push-pull or open drain.
+ */
+enum GPIO_TYPE
+{
+ PUSHPULL = 0, /**< push-pull */
+ OPENDRAIN /**< open drain */
+};
+
+/**
+ * Defines the pin's speed
+ */
+enum GPIO_SPEED
+{
+ LOW = 0, /**< low */
+ MEDIUM, /**< medium */
+ HIGH, /**< high */
+ VERYHIGH /**< very high/maximum */
+};
+
+/**
+ * Defines if a pullup or pulldown should be used.
+ */
+enum GPIO_PUPD
+{
+ NOPUPD, /**< no pullup/pulldown */
+ PULLUP, /**< use pullup */
+ PULLDOWN /**< use pulldown */
+};
+
+
+typedef unsigned int gpio_pin_t;
+
+void gpioMode(gpio_pin_t pin, int mode);
+void gpioType(gpio_pin_t pin, int type);
+void gpioPuPd(gpio_pin_t pin, int pupd);
+void gpioSpeed(gpio_pin_t pin, int speed);
+void gpioWrite(gpio_pin_t pin, int value);
+int gpioRead(gpio_pin_t pin);
+
+#endif // STMOS_GPIO_H_