summaryrefslogtreecommitdiff
path: root/cleopatre/linux-2.6.25.10-spc300/include/linux/gpio.h
blob: 48555054d37c2a7b4121c29d74fd9b56de688f72 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#ifndef __LINUX_GPIO_H
#define __LINUX_GPIO_H

#include <linux/ioctl.h>
#include <linux/types.h>

#define	GPIO_IOCTL_BASE	'G'

struct gpio_value {
    __u8 num; /* gpio number */
    __u8 val; /* it value */
};
struct gpio_direction {
    __u8 num; /* gpio number */
    __u8 dir; /* 0:input 1:output */
    __u8 val; /* initial value for output only */
};
struct gpio_interrupt
{
    __u32 mask; /* interrupt mask */
    __u8 enable; /* enable or disable interrupt */
};

union gpio_info {
    struct gpio_value gpioval;
    struct gpio_direction gpiodir;
    struct gpio_interrupt gpioit;
};

#define	GPIOIOC_GETVALUE		_IOR(GPIO_IOCTL_BASE, 0, struct gpio_value)
#define	GPIOIOC_SETVALUE		_IOWR(GPIO_IOCTL_BASE, 1, struct gpio_value)
#define	GPIOIOC_SETDIRECTION		_IOWR(GPIO_IOCTL_BASE, 2, struct gpio_direction)
#define	GPIOIOC_SETIT           _IOWR (GPIO_IOCTL_BASE, 3, struct gpio_interrupt)



/* see Documentation/gpio.txt */
#ifdef __KERNEL__
#ifdef CONFIG_GENERIC_GPIO
#include <asm/gpio.h>

#else

/*
 * Some platforms don't support the GPIO programming interface.
 *
 * In case some driver uses it anyway (it should normally have
 * depended on GENERIC_GPIO), these routines help the compiler
 * optimize out much GPIO-related code ... or trigger a runtime
 * warning when something is wrongly called.
 */

static inline int gpio_is_valid(int number)
{
	return 0;
}

static inline int gpio_request(unsigned gpio, const char *label)
{
	return -ENOSYS;
}

static inline void gpio_free(unsigned gpio)
{
	/* GPIO can never have been requested */
	WARN_ON(1);
}

static inline int gpio_direction_input(unsigned gpio)
{
	return -ENOSYS;
}

static inline int gpio_direction_output(unsigned gpio, int value)
{
	return -ENOSYS;
}

static inline int gpio_get_value(unsigned gpio)
{
	/* GPIO can never have been requested or set as {in,out}put */
	WARN_ON(1);
	return 0;
}

static inline void gpio_set_value(unsigned gpio, int value)
{
	/* GPIO can never have been requested or set as output */
	WARN_ON(1);
}

static inline int gpio_cansleep(unsigned gpio)
{
	/* GPIO can never have been requested or set as {in,out}put */
	WARN_ON(1);
	return 0;
}

static inline int gpio_get_value_cansleep(unsigned gpio)
{
	/* GPIO can never have been requested or set as {in,out}put */
	WARN_ON(1);
	return 0;
}

static inline void gpio_set_value_cansleep(unsigned gpio, int value)
{
	/* GPIO can never have been requested or set as output */
	WARN_ON(1);
}

static inline int gpio_to_irq(unsigned gpio)
{
	/* GPIO can never have been requested or set as input */
	WARN_ON(1);
	return -EINVAL;
}

static inline int irq_to_gpio(unsigned irq)
{
	/* irq can never have been returned from gpio_to_irq() */
	WARN_ON(1);
	return -EINVAL;
}

#endif
#endif /* __KERNEL__ */

#endif /* __LINUX_GPIO_H */