1 /*
2  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef __GPIO_H__
8 #define __GPIO_H__
9 
10 #define GPIO_DIR_OUT		0
11 #define GPIO_DIR_IN		1
12 
13 #define GPIO_LEVEL_LOW		0
14 #define GPIO_LEVEL_HIGH		1
15 
16 #define GPIO_PULL_NONE		0
17 #define GPIO_PULL_UP		1
18 #define GPIO_PULL_DOWN		2
19 
20 typedef struct gpio_ops {
21 	int (*get_direction)(int gpio);
22 	void (*set_direction)(int gpio, int direction);
23 	int (*get_value)(int gpio);
24 	void (*set_value)(int gpio, int value);
25 	void (*set_pull)(int gpio, int pull);
26 	int (*get_pull)(int gpio);
27 } gpio_ops_t;
28 
29 int gpio_get_direction(int gpio);
30 void gpio_set_direction(int gpio, int direction);
31 int gpio_get_value(int gpio);
32 void gpio_set_value(int gpio, int value);
33 void gpio_set_pull(int gpio, int pull);
34 int gpio_get_pull(int gpio);
35 void gpio_init(const gpio_ops_t *ops);
36 
37 #endif	/* __GPIO_H__ */
38