xref: /rk3399_ARM-atf/include/drivers/gpio.h (revision c3cf06f1a3a9b9ee8ac7a0ae505f95c45f7dca84)
11ffecc24SHaojian Zhuang /*
21ffecc24SHaojian Zhuang  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
31ffecc24SHaojian Zhuang  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
51ffecc24SHaojian Zhuang  */
61ffecc24SHaojian Zhuang 
7*c3cf06f1SAntonio Nino Diaz #ifndef GPIO_H
8*c3cf06f1SAntonio Nino Diaz #define GPIO_H
91ffecc24SHaojian Zhuang 
101ffecc24SHaojian Zhuang #define GPIO_DIR_OUT		0
111ffecc24SHaojian Zhuang #define GPIO_DIR_IN		1
121ffecc24SHaojian Zhuang 
131ffecc24SHaojian Zhuang #define GPIO_LEVEL_LOW		0
141ffecc24SHaojian Zhuang #define GPIO_LEVEL_HIGH		1
151ffecc24SHaojian Zhuang 
1619588982SCaesar Wang #define GPIO_PULL_NONE		0
1719588982SCaesar Wang #define GPIO_PULL_UP		1
1819588982SCaesar Wang #define GPIO_PULL_DOWN		2
1919588982SCaesar Wang 
201ffecc24SHaojian Zhuang typedef struct gpio_ops {
211ffecc24SHaojian Zhuang 	int (*get_direction)(int gpio);
221ffecc24SHaojian Zhuang 	void (*set_direction)(int gpio, int direction);
231ffecc24SHaojian Zhuang 	int (*get_value)(int gpio);
241ffecc24SHaojian Zhuang 	void (*set_value)(int gpio, int value);
2519588982SCaesar Wang 	void (*set_pull)(int gpio, int pull);
2619588982SCaesar Wang 	int (*get_pull)(int gpio);
271ffecc24SHaojian Zhuang } gpio_ops_t;
281ffecc24SHaojian Zhuang 
291ffecc24SHaojian Zhuang int gpio_get_direction(int gpio);
301ffecc24SHaojian Zhuang void gpio_set_direction(int gpio, int direction);
311ffecc24SHaojian Zhuang int gpio_get_value(int gpio);
321ffecc24SHaojian Zhuang void gpio_set_value(int gpio, int value);
3319588982SCaesar Wang void gpio_set_pull(int gpio, int pull);
3419588982SCaesar Wang int gpio_get_pull(int gpio);
351ffecc24SHaojian Zhuang void gpio_init(const gpio_ops_t *ops);
361ffecc24SHaojian Zhuang 
37*c3cf06f1SAntonio Nino Diaz #endif /* GPIO_H */
38