xref: /rk3399_ARM-atf/include/drivers/gpio.h (revision 195889829e3f3fc4eabb3297b3d686daf14af7f5)
11ffecc24SHaojian Zhuang /*
21ffecc24SHaojian Zhuang  * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
31ffecc24SHaojian Zhuang  *
41ffecc24SHaojian Zhuang  * Redistribution and use in source and binary forms, with or without
51ffecc24SHaojian Zhuang  * modification, are permitted provided that the following conditions are met:
61ffecc24SHaojian Zhuang  *
71ffecc24SHaojian Zhuang  * Redistributions of source code must retain the above copyright notice, this
81ffecc24SHaojian Zhuang  * list of conditions and the following disclaimer.
91ffecc24SHaojian Zhuang  *
101ffecc24SHaojian Zhuang  * Redistributions in binary form must reproduce the above copyright notice,
111ffecc24SHaojian Zhuang  * this list of conditions and the following disclaimer in the documentation
121ffecc24SHaojian Zhuang  * and/or other materials provided with the distribution.
131ffecc24SHaojian Zhuang  *
141ffecc24SHaojian Zhuang  * Neither the name of ARM nor the names of its contributors may be used
151ffecc24SHaojian Zhuang  * to endorse or promote products derived from this software without specific
161ffecc24SHaojian Zhuang  * prior written permission.
171ffecc24SHaojian Zhuang  *
181ffecc24SHaojian Zhuang  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
191ffecc24SHaojian Zhuang  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
201ffecc24SHaojian Zhuang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
211ffecc24SHaojian Zhuang  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
221ffecc24SHaojian Zhuang  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
231ffecc24SHaojian Zhuang  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
241ffecc24SHaojian Zhuang  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
251ffecc24SHaojian Zhuang  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
261ffecc24SHaojian Zhuang  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
271ffecc24SHaojian Zhuang  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
281ffecc24SHaojian Zhuang  * POSSIBILITY OF SUCH DAMAGE.
291ffecc24SHaojian Zhuang  */
301ffecc24SHaojian Zhuang 
311ffecc24SHaojian Zhuang #ifndef __GPIO_H__
321ffecc24SHaojian Zhuang #define __GPIO_H__
331ffecc24SHaojian Zhuang 
341ffecc24SHaojian Zhuang #define GPIO_DIR_OUT		0
351ffecc24SHaojian Zhuang #define GPIO_DIR_IN		1
361ffecc24SHaojian Zhuang 
371ffecc24SHaojian Zhuang #define GPIO_LEVEL_LOW		0
381ffecc24SHaojian Zhuang #define GPIO_LEVEL_HIGH		1
391ffecc24SHaojian Zhuang 
40*19588982SCaesar Wang #define GPIO_PULL_NONE		0
41*19588982SCaesar Wang #define GPIO_PULL_UP		1
42*19588982SCaesar Wang #define GPIO_PULL_DOWN		2
43*19588982SCaesar Wang 
441ffecc24SHaojian Zhuang typedef struct gpio_ops {
451ffecc24SHaojian Zhuang 	int (*get_direction)(int gpio);
461ffecc24SHaojian Zhuang 	void (*set_direction)(int gpio, int direction);
471ffecc24SHaojian Zhuang 	int (*get_value)(int gpio);
481ffecc24SHaojian Zhuang 	void (*set_value)(int gpio, int value);
49*19588982SCaesar Wang 	void (*set_pull)(int gpio, int pull);
50*19588982SCaesar Wang 	int (*get_pull)(int gpio);
511ffecc24SHaojian Zhuang } gpio_ops_t;
521ffecc24SHaojian Zhuang 
531ffecc24SHaojian Zhuang int gpio_get_direction(int gpio);
541ffecc24SHaojian Zhuang void gpio_set_direction(int gpio, int direction);
551ffecc24SHaojian Zhuang int gpio_get_value(int gpio);
561ffecc24SHaojian Zhuang void gpio_set_value(int gpio, int value);
57*19588982SCaesar Wang void gpio_set_pull(int gpio, int pull);
58*19588982SCaesar Wang int gpio_get_pull(int gpio);
591ffecc24SHaojian Zhuang void gpio_init(const gpio_ops_t *ops);
601ffecc24SHaojian Zhuang 
611ffecc24SHaojian Zhuang #endif	/* __GPIO_H__ */
62