aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pinctrl/consumer.h
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-02-08 19:52:22 -0500
committerLinus Walleij <linus.walleij@linaro.org>2012-02-10 15:32:57 -0500
commit28a8d14cc74a0180323d9150c3d3dbf9dd60d55a (patch)
tree7c54436dbe7fbe172f6a293a21174a612ccd9634 /include/linux/pinctrl/consumer.h
parentf4e66983293f78e177bb210d19a46f083f5e8197 (diff)
pinctrl: break out a pinctrl consumer header
This breaks out a <linux/pinctrl/consumer.h> header to be used by all pinmux and pinconfig alike, so drivers needing services from pinctrl does not need to include different headers. This is similar to the approach taken by the regulator API. Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'include/linux/pinctrl/consumer.h')
-rw-r--r--include/linux/pinctrl/consumer.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h
new file mode 100644
index 000000000000..9c8513d5d0fb
--- /dev/null
+++ b/include/linux/pinctrl/consumer.h
@@ -0,0 +1,118 @@
1/*
2 * Consumer interface the pin control subsystem
3 *
4 * Copyright (C) 2012 ST-Ericsson SA
5 * Written on behalf of Linaro for ST-Ericsson
6 * Based on bits of regulator core, gpio core and clk core
7 *
8 * Author: Linus Walleij <linus.walleij@linaro.org>
9 *
10 * License terms: GNU General Public License (GPL) version 2
11 */
12#ifndef __LINUX_PINCTRL_CONSUMER_H
13#define __LINUX_PINCTRL_CONSUMER_H
14
15#include <linux/list.h>
16#include <linux/seq_file.h>
17#include "pinctrl.h"
18
19/* This struct is private to the core and should be regarded as a cookie */
20struct pinmux;
21
22#ifdef CONFIG_PINMUX
23
24/* External interface to pinmux */
25extern int pinmux_request_gpio(unsigned gpio);
26extern void pinmux_free_gpio(unsigned gpio);
27extern int pinmux_gpio_direction_input(unsigned gpio);
28extern int pinmux_gpio_direction_output(unsigned gpio);
29extern struct pinmux * __must_check pinmux_get(struct device *dev, const char *name);
30extern void pinmux_put(struct pinmux *pmx);
31extern int pinmux_enable(struct pinmux *pmx);
32extern void pinmux_disable(struct pinmux *pmx);
33
34#else /* !CONFIG_PINMUX */
35
36static inline int pinmux_request_gpio(unsigned gpio)
37{
38 return 0;
39}
40
41static inline void pinmux_free_gpio(unsigned gpio)
42{
43}
44
45static inline int pinmux_gpio_direction_input(unsigned gpio)
46{
47 return 0;
48}
49
50static inline int pinmux_gpio_direction_output(unsigned gpio)
51{
52 return 0;
53}
54
55static inline struct pinmux * __must_check pinmux_get(struct device *dev, const char *name)
56{
57 return NULL;
58}
59
60static inline void pinmux_put(struct pinmux *pmx)
61{
62}
63
64static inline int pinmux_enable(struct pinmux *pmx)
65{
66 return 0;
67}
68
69static inline void pinmux_disable(struct pinmux *pmx)
70{
71}
72
73#endif /* CONFIG_PINMUX */
74
75#ifdef CONFIG_PINCONF
76
77extern int pin_config_get(const char *dev_name, const char *name,
78 unsigned long *config);
79extern int pin_config_set(const char *dev_name, const char *name,
80 unsigned long config);
81extern int pin_config_group_get(const char *dev_name,
82 const char *pin_group,
83 unsigned long *config);
84extern int pin_config_group_set(const char *dev_name,
85 const char *pin_group,
86 unsigned long config);
87
88#else
89
90static inline int pin_config_get(const char *dev_name, const char *name,
91 unsigned long *config)
92{
93 return 0;
94}
95
96static inline int pin_config_set(const char *dev_name, const char *name,
97 unsigned long config)
98{
99 return 0;
100}
101
102static inline int pin_config_group_get(const char *dev_name,
103 const char *pin_group,
104 unsigned long *config)
105{
106 return 0;
107}
108
109static inline int pin_config_group_set(const char *dev_name,
110 const char *pin_group,
111 unsigned long config)
112{
113 return 0;
114}
115
116#endif
117
118#endif /* __LINUX_PINCTRL_CONSUMER_H */