aboutsummaryrefslogtreecommitdiff
path: root/core/include/gpio.h
blob: 066d7c1ad698e16372a3954e43b3b7fe761a762e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (c) 2016, Linaro Limited
 */

#ifndef __GPIO_H__
#define __GPIO_H__

enum gpio_dir {
	GPIO_DIR_OUT,
	GPIO_DIR_IN
};

enum gpio_level {
	GPIO_LEVEL_LOW,
	GPIO_LEVEL_HIGH
};

enum gpio_interrupt {
	GPIO_INTERRUPT_DISABLE,
	GPIO_INTERRUPT_ENABLE
};

struct gpio_chip {
	const struct gpio_ops *ops;
};

struct gpio_ops {
	enum gpio_dir (*get_direction)(unsigned int gpio_pin);
	void (*set_direction)(unsigned int gpio_pin, enum gpio_dir direction);
	enum gpio_level (*get_value)(unsigned int gpio_pin);
	void (*set_value)(unsigned int gpio_pin, enum gpio_level value);
	enum gpio_interrupt (*get_interrupt)(unsigned int gpio_pin);
	void (*set_interrupt)(unsigned int gpio_pin,
		enum gpio_interrupt ena_dis);
};

#endif	/* __GPIO_H__ */