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