31 #ifndef CPU_X86_DRIVERS_QUARKX1000_GPIO_H_
32 #define CPU_X86_DRIVERS_QUARKX1000_GPIO_H_
38 #define QUARKX1000_GPIO_IN (0 << 0)
39 #define QUARKX1000_GPIO_OUT (1 << 0)
40 #define QUARKX1000_GPIO_INT (1 << 1)
41 #define QUARKX1000_GPIO_ACTIVE_LOW (0 << 2)
42 #define QUARKX1000_GPIO_ACTIVE_HIGH (1 << 2)
43 #define QUARKX1000_GPIO_LEVEL (0 << 3)
44 #define QUARKX1000_GPIO_EDGE (1 << 3)
45 #define QUARKX1000_GPIO_DEBOUNCE (1 << 4)
46 #define QUARKX1000_GPIO_CLOCK_SYNC (1 << 5)
47 #define QUARKX1000_GPIO_POL_NORMAL (0 << 6)
48 #define QUARKX1000_GPIO_POL_INV (1 << 6)
49 #define QUARKX1000_GPIO_PUD_NORMAL (0 << 7)
50 #define QUARKX1000_GPIO_PUD_PULL_UP (1 << 7)
51 #define QUARKX1000_GPIO_PUD_PULL_DOWN (2 << 7)
53 #define QUARKX1000_GPIO_DIR_MASK (1 << 0)
54 #define QUARKX1000_GPIO_POL_MASK (1 << 6)
55 #define QUARKX1000_GPIO_PUD_MASK (3 << 7)
57 typedef void (*quarkX1000_gpio_callback)(uint32_t);
59 int quarkX1000_gpio_init(
void);
61 int quarkX1000_gpio_config(uint8_t pin,
int flags);
62 int quarkX1000_gpio_read(uint8_t pin, uint8_t *value);
63 int quarkX1000_gpio_write(uint8_t pin, uint8_t value);
65 int quarkX1000_gpio_config_port(
int flags);
66 int quarkX1000_gpio_read_port(uint8_t *value);
67 int quarkX1000_gpio_write_port(uint8_t value);
69 int quarkX1000_gpio_set_callback(quarkX1000_gpio_callback callback);
71 void quarkX1000_gpio_clock_enable(
void);
72 void quarkX1000_gpio_clock_disable(
void);