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