Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
of_gpio.h
Go to the documentation of this file.
1
/*
2
* OF helpers for the GPIO API
3
*
4
* Copyright (c) 2007-2008 MontaVista Software, Inc.
5
*
6
* Author: Anton Vorontsov <
[email protected]
>
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*/
13
14
#ifndef __LINUX_OF_GPIO_H
15
#define __LINUX_OF_GPIO_H
16
17
#include <linux/compiler.h>
18
#include <linux/kernel.h>
19
#include <linux/errno.h>
20
#include <
linux/gpio.h
>
21
#include <
linux/of.h
>
22
23
struct
device_node
;
24
25
/*
26
* This is Linux-specific flags. By default controllers' and Linux' mapping
27
* match, but GPIO controllers are free to translate their own flags to
28
* Linux-specific in their .xlate callback. Though, 1:1 mapping is recommended.
29
*/
30
enum
of_gpio_flags
{
31
OF_GPIO_ACTIVE_LOW
= 0x1,
32
};
33
34
#ifdef CONFIG_OF_GPIO
35
36
/*
37
* OF GPIO chip for memory mapped banks
38
*/
39
struct
of_mm_gpio_chip {
40
struct
gpio_chip gc;
41
void
(*save_regs)(
struct
of_mm_gpio_chip *mm_gc);
42
void
__iomem
*
regs
;
43
};
44
45
static
inline
struct
of_mm_gpio_chip *to_of_mm_gpio_chip(
struct
gpio_chip *
gc
)
46
{
47
return
container_of
(gc,
struct
of_mm_gpio_chip, gc);
48
}
49
50
extern
int
of_get_named_gpio_flags
(
struct
device_node
*np,
51
const
char
*list_name,
int
index
,
enum
of_gpio_flags
*
flags
);
52
53
extern
unsigned
int
of_gpio_named_count
(
struct
device_node
*np,
54
const
char
* propname);
55
56
extern
int
of_mm_gpiochip_add
(
struct
device_node
*np,
57
struct
of_mm_gpio_chip *mm_gc);
58
59
extern
void
of_gpiochip_add
(
struct
gpio_chip *
gc
);
60
extern
void
of_gpiochip_remove
(
struct
gpio_chip *
gc
);
61
extern
int
of_gpio_simple_xlate
(
struct
gpio_chip *
gc
,
62
const
struct
of_phandle_args
*gpiospec,
63
u32
*
flags
);
64
65
#else
/* CONFIG_OF_GPIO */
66
67
/* Drivers may not strictly depend on the GPIO support, so let them link. */
68
static
inline
int
of_get_named_gpio_flags
(
struct
device_node
*np,
69
const
char
*list_name,
int
index
,
enum
of_gpio_flags
*
flags
)
70
{
71
return
-
ENOSYS
;
72
}
73
74
static
inline
unsigned
int
of_gpio_named_count
(
struct
device_node
*np,
75
const
char
* propname)
76
{
77
return
0;
78
}
79
80
static
inline
int
of_gpio_simple_xlate
(
struct
gpio_chip *
gc
,
81
const
struct
of_phandle_args
*gpiospec,
82
u32
*
flags
)
83
{
84
return
-
ENOSYS
;
85
}
86
87
static
inline
void
of_gpiochip_add
(
struct
gpio_chip *
gc
) { }
88
static
inline
void
of_gpiochip_remove
(
struct
gpio_chip *
gc
) { }
89
90
#endif
/* CONFIG_OF_GPIO */
91
108
static
inline
unsigned
int
of_gpio_count(
struct
device_node
*np)
109
{
110
return
of_gpio_named_count
(np,
"gpios"
);
111
}
112
123
static
inline
int
of_get_gpio_flags(
struct
device_node
*np,
int
index
,
124
enum
of_gpio_flags
*
flags
)
125
{
126
return
of_get_named_gpio_flags
(np,
"gpios"
, index, flags);
127
}
128
138
static
inline
int
of_get_named_gpio(
struct
device_node
*np,
139
const
char
*propname,
int
index
)
140
{
141
return
of_get_named_gpio_flags
(np, propname, index,
NULL
);
142
}
143
152
static
inline
int
of_get_gpio(
struct
device_node
*np,
int
index
)
153
{
154
return
of_get_gpio_flags(np, index,
NULL
);
155
}
156
157
#endif
/* __LINUX_OF_GPIO_H */
Generated on Thu Jan 10 2013 14:52:15 for Linux Kernel by
1.8.2