1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2016, Linaro Limited 4 */ 5 6 #ifndef __GPIO_H__ 7 #define __GPIO_H__ 8 9 enum gpio_dir { 10 GPIO_DIR_OUT, 11 GPIO_DIR_IN 12 }; 13 14 enum gpio_level { 15 GPIO_LEVEL_LOW, 16 GPIO_LEVEL_HIGH 17 }; 18 19 enum gpio_interrupt { 20 GPIO_INTERRUPT_DISABLE, 21 GPIO_INTERRUPT_ENABLE 22 }; 23 24 struct gpio_chip { 25 const struct gpio_ops *ops; 26 }; 27 28 struct gpio_ops { 29 enum gpio_dir (*get_direction)(struct gpio_chip *chip, 30 unsigned int gpio_pin); 31 void (*set_direction)(struct gpio_chip *chip, unsigned int gpio_pin, 32 enum gpio_dir direction); 33 enum gpio_level (*get_value)(struct gpio_chip *chip, 34 unsigned int gpio_pin); 35 void (*set_value)(struct gpio_chip *chip, unsigned int gpio_pin, 36 enum gpio_level value); 37 enum gpio_interrupt (*get_interrupt)(struct gpio_chip *chip, 38 unsigned int gpio_pin); 39 void (*set_interrupt)(struct gpio_chip *chip, unsigned int gpio_pin, 40 enum gpio_interrupt ena_dis); 41 }; 42 43 #endif /* __GPIO_H__ */ 44