diff options
author | Clyne Sullivan <tullivan99@gmail.com> | 2018-11-30 10:51:10 -0500 |
---|---|---|
committer | Clyne Sullivan <tullivan99@gmail.com> | 2018-11-30 10:51:10 -0500 |
commit | 42eff60714a32942b307d6b139aa400ca0df296a (patch) | |
tree | 7258326a1e2b1c0d6f42dbc744a9f1aac14068e6 /src/libgpio/gpio.h | |
parent | cef5647a1542ac8520df07f15216a35ee35881ac (diff) |
libgpio, better initrd structure
Diffstat (limited to 'src/libgpio/gpio.h')
-rw-r--r-- | src/libgpio/gpio.h | 57 |
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_ |