phaser-ags / firmware /hal /gpio.h
SNAPKITTYWEST's picture
October 2026 main drop: mirror from GitHub
829b19c verified
Raw History Blame Contribute Delete
1.2 kB
/*
* HAL — GPIO driver for OMAP3530
* Each GPIO bank has 32 pins. OMAP3530 has 6 banks (192 pins total).
*/
#ifndef FIRMWARE_HAL_GPIO_H
#define FIRMWARE_HAL_GPIO_H
#include "../common/types.h"
#include "../common/platform.h"
typedef enum {
GPIO_DIR_INPUT = 0,
GPIO_DIR_OUTPUT = 1
} gpio_dir_t;
typedef enum {
GPIO_IRQ_EDGE_NONE = 0,
GPIO_IRQ_EDGE_RISING = 1,
GPIO_IRQ_EDGE_FALLING = 2,
GPIO_IRQ_EDGE_BOTH = 3,
GPIO_IRQ_LEVEL_HIGH = 4,
GPIO_IRQ_LEVEL_LOW = 5
} gpio_irq_edge_t;
typedef struct {
hw_reg32_t base;
uint8_t bank;
} gpio_dev_t;
void gpio_init(gpio_dev_t *dev, uint8_t bank);
void gpio_set_dir(gpio_dev_t *dev, uint8_t pin, gpio_dir_t dir);
void gpio_set_output(gpio_dev_t *dev, uint8_t pin);
void gpio_set_input(gpio_dev_t *dev, uint8_t pin);
void gpio_write(gpio_dev_t *dev, uint8_t pin, int value);
int gpio_read(gpio_dev_t *dev, uint8_t pin);
void gpio_toggle(gpio_dev_t *dev, uint8_t pin);
void gpio_set_irq_edge(gpio_dev_t *dev, uint8_t pin, gpio_irq_edge_t edge);
void gpio_clear_irq(gpio_dev_t *dev, uint8_t pin);
uint32_t gpio_get_irq_status(gpio_dev_t *dev);
#endif /* FIRMWARE_HAL_GPIO_H */