From 42eff60714a32942b307d6b139aa400ca0df296a Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Fri, 30 Nov 2018 10:51:10 -0500 Subject: libgpio, better initrd structure --- src/libgpio/gpio.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/libgpio/gpio.h (limited to 'src/libgpio/gpio.h') 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_ -- cgit v1.2.3