aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/dt-bindings/gpio/meson8-gpio.h157
-rw-r--r--include/linux/pinctrl/consumer.h6
-rw-r--r--include/linux/pinctrl/pinconf-generic.h29
-rw-r--r--include/linux/pinctrl/pinctrl.h12
4 files changed, 201 insertions, 3 deletions
diff --git a/include/dt-bindings/gpio/meson8-gpio.h b/include/dt-bindings/gpio/meson8-gpio.h
new file mode 100644
index 000000000000..fdaeb5cbf5e1
--- /dev/null
+++ b/include/dt-bindings/gpio/meson8-gpio.h
@@ -0,0 +1,157 @@
1/*
2 * GPIO definitions for Amlogic Meson8 SoCs
3 *
4 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * version 2 as published by the Free Software Foundation.
9 *
10 * You should have received a copy of the GNU General Public License
11 * along with this program. If not, see <http://www.gnu.org/licenses/>.
12 */
13
14#ifndef _DT_BINDINGS_MESON8_GPIO_H
15#define _DT_BINDINGS_MESON8_GPIO_H
16
17/* First GPIO chip */
18#define GPIOX_0 0
19#define GPIOX_1 1
20#define GPIOX_2 2
21#define GPIOX_3 3
22#define GPIOX_4 4
23#define GPIOX_5 5
24#define GPIOX_6 6
25#define GPIOX_7 7
26#define GPIOX_8 8
27#define GPIOX_9 9
28#define GPIOX_10 10
29#define GPIOX_11 11
30#define GPIOX_12 12
31#define GPIOX_13 13
32#define GPIOX_14 14
33#define GPIOX_15 15
34#define GPIOX_16 16
35#define GPIOX_17 17
36#define GPIOX_18 18
37#define GPIOX_19 19
38#define GPIOX_20 20
39#define GPIOX_21 21
40#define GPIOY_0 22
41#define GPIOY_1 23
42#define GPIOY_2 24
43#define GPIOY_3 25
44#define GPIOY_4 26
45#define GPIOY_5 27
46#define GPIOY_6 28
47#define GPIOY_7 29
48#define GPIOY_8 30
49#define GPIOY_9 31
50#define GPIOY_10 32
51#define GPIOY_11 33
52#define GPIOY_12 34
53#define GPIOY_13 35
54#define GPIOY_14 36
55#define GPIOY_15 37
56#define GPIOY_16 38
57#define GPIODV_0 39
58#define GPIODV_1 40
59#define GPIODV_2 41
60#define GPIODV_3 42
61#define GPIODV_4 43
62#define GPIODV_5 44
63#define GPIODV_6 45
64#define GPIODV_7 46
65#define GPIODV_8 47
66#define GPIODV_9 48
67#define GPIODV_10 49
68#define GPIODV_11 50
69#define GPIODV_12 51
70#define GPIODV_13 52
71#define GPIODV_14 53
72#define GPIODV_15 54
73#define GPIODV_16 55
74#define GPIODV_17 56
75#define GPIODV_18 57
76#define GPIODV_19 58
77#define GPIODV_20 59
78#define GPIODV_21 60
79#define GPIODV_22 61
80#define GPIODV_23 62
81#define GPIODV_24 63
82#define GPIODV_25 64
83#define GPIODV_26 65
84#define GPIODV_27 66
85#define GPIODV_28 67
86#define GPIODV_29 68
87#define GPIOH_0 69
88#define GPIOH_1 70
89#define GPIOH_2 71
90#define GPIOH_3 72
91#define GPIOH_4 73
92#define GPIOH_5 74
93#define GPIOH_6 75
94#define GPIOH_7 76
95#define GPIOH_8 77
96#define GPIOH_9 78
97#define GPIOZ_0 79
98#define GPIOZ_1 80
99#define GPIOZ_2 81
100#define GPIOZ_3 82
101#define GPIOZ_4 83
102#define GPIOZ_5 84
103#define GPIOZ_6 85
104#define GPIOZ_7 86
105#define GPIOZ_8 87
106#define GPIOZ_9 88
107#define GPIOZ_10 89
108#define GPIOZ_11 90
109#define GPIOZ_12 91
110#define GPIOZ_13 92
111#define GPIOZ_14 93
112#define CARD_0 94
113#define CARD_1 95
114#define CARD_2 96
115#define CARD_3 97
116#define CARD_4 98
117#define CARD_5 99
118#define CARD_6 100
119#define BOOT_0 101
120#define BOOT_1 102
121#define BOOT_2 103
122#define BOOT_3 104
123#define BOOT_4 105
124#define BOOT_5 106
125#define BOOT_6 107
126#define BOOT_7 108
127#define BOOT_8 109
128#define BOOT_9 110
129#define BOOT_10 111
130#define BOOT_11 112
131#define BOOT_12 113
132#define BOOT_13 114
133#define BOOT_14 115
134#define BOOT_15 116
135#define BOOT_16 117
136#define BOOT_17 118
137#define BOOT_18 119
138
139/* Second GPIO chip */
140#define GPIOAO_0 0
141#define GPIOAO_1 1
142#define GPIOAO_2 2
143#define GPIOAO_3 3
144#define GPIOAO_4 4
145#define GPIOAO_5 5
146#define GPIOAO_6 6
147#define GPIOAO_7 7
148#define GPIOAO_8 8
149#define GPIOAO_9 9
150#define GPIOAO_10 10
151#define GPIOAO_11 11
152#define GPIOAO_12 12
153#define GPIOAO_13 13
154#define GPIO_BSD_EN 14
155#define GPIO_TEST_N 15
156
157#endif /* _DT_BINDINGS_MESON8_GPIO_H */
diff --git a/include/linux/pinctrl/consumer.h b/include/linux/pinctrl/consumer.h
index 18eccefea06e..72c0415d6c21 100644
--- a/include/linux/pinctrl/consumer.h
+++ b/include/linux/pinctrl/consumer.h
@@ -82,7 +82,7 @@ static inline int pinctrl_gpio_direction_output(unsigned gpio)
82 82
83static inline struct pinctrl * __must_check pinctrl_get(struct device *dev) 83static inline struct pinctrl * __must_check pinctrl_get(struct device *dev)
84{ 84{
85 return NULL; 85 return ERR_PTR(-ENOSYS);
86} 86}
87 87
88static inline void pinctrl_put(struct pinctrl *p) 88static inline void pinctrl_put(struct pinctrl *p)
@@ -93,7 +93,7 @@ static inline struct pinctrl_state * __must_check pinctrl_lookup_state(
93 struct pinctrl *p, 93 struct pinctrl *p,
94 const char *name) 94 const char *name)
95{ 95{
96 return NULL; 96 return ERR_PTR(-ENOSYS);
97} 97}
98 98
99static inline int pinctrl_select_state(struct pinctrl *p, 99static inline int pinctrl_select_state(struct pinctrl *p,
@@ -104,7 +104,7 @@ static inline int pinctrl_select_state(struct pinctrl *p,
104 104
105static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev) 105static inline struct pinctrl * __must_check devm_pinctrl_get(struct device *dev)
106{ 106{
107 return NULL; 107 return ERR_PTR(-ENOSYS);
108} 108}
109 109
110static inline void devm_pinctrl_put(struct pinctrl *p) 110static inline void devm_pinctrl_put(struct pinctrl *p)
diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctrl/pinconf-generic.h
index d578a60eff23..fe65962b264f 100644
--- a/include/linux/pinctrl/pinconf-generic.h
+++ b/include/linux/pinctrl/pinconf-generic.h
@@ -115,6 +115,18 @@ enum pin_config_param {
115 PIN_CONFIG_END = 0x7FFF, 115 PIN_CONFIG_END = 0x7FFF,
116}; 116};
117 117
118#ifdef CONFIG_DEBUG_FS
119#define PCONFDUMP(a, b, c, d) { .param = a, .display = b, .format = c, \
120 .has_arg = d }
121
122struct pin_config_item {
123 const enum pin_config_param param;
124 const char * const display;
125 const char * const format;
126 bool has_arg;
127};
128#endif /* CONFIG_DEBUG_FS */
129
118/* 130/*
119 * Helpful configuration macro to be used in tables etc. 131 * Helpful configuration macro to be used in tables etc.
120 */ 132 */
@@ -150,6 +162,12 @@ static inline unsigned long pinconf_to_config_packed(enum pin_config_param param
150struct pinctrl_dev; 162struct pinctrl_dev;
151struct pinctrl_map; 163struct pinctrl_map;
152 164
165struct pinconf_generic_params {
166 const char * const property;
167 enum pin_config_param param;
168 u32 default_value;
169};
170
153int pinconf_generic_dt_subnode_to_map(struct pinctrl_dev *pctldev, 171int pinconf_generic_dt_subnode_to_map(struct pinctrl_dev *pctldev,
154 struct device_node *np, struct pinctrl_map **map, 172 struct device_node *np, struct pinctrl_map **map,
155 unsigned *reserved_maps, unsigned *num_maps, 173 unsigned *reserved_maps, unsigned *num_maps,
@@ -174,6 +192,17 @@ static inline int pinconf_generic_dt_node_to_map_pin(
174 PIN_MAP_TYPE_CONFIGS_PIN); 192 PIN_MAP_TYPE_CONFIGS_PIN);
175} 193}
176 194
195static inline int pinconf_generic_dt_node_to_map_all(
196 struct pinctrl_dev *pctldev, struct device_node *np_config,
197 struct pinctrl_map **map, unsigned *num_maps)
198{
199 /*
200 * passing the type as PIN_MAP_TYPE_INVALID causes the underlying parser
201 * to infer the map type from the DT properties used.
202 */
203 return pinconf_generic_dt_node_to_map(pctldev, np_config, map, num_maps,
204 PIN_MAP_TYPE_INVALID);
205}
177#endif 206#endif
178 207
179#endif /* CONFIG_GENERIC_PINCONF */ 208#endif /* CONFIG_GENERIC_PINCONF */
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h
index cc8e1aff0e28..66e4697516de 100644
--- a/include/linux/pinctrl/pinctrl.h
+++ b/include/linux/pinctrl/pinctrl.h
@@ -24,6 +24,7 @@ struct pinctrl_dev;
24struct pinctrl_map; 24struct pinctrl_map;
25struct pinmux_ops; 25struct pinmux_ops;
26struct pinconf_ops; 26struct pinconf_ops;
27struct pin_config_item;
27struct gpio_chip; 28struct gpio_chip;
28struct device_node; 29struct device_node;
29 30
@@ -117,6 +118,12 @@ struct pinctrl_ops {
117 * @confops: pin config operations vtable, if you support pin configuration in 118 * @confops: pin config operations vtable, if you support pin configuration in
118 * your driver 119 * your driver
119 * @owner: module providing the pin controller, used for refcounting 120 * @owner: module providing the pin controller, used for refcounting
121 * @num_custom_params: Number of driver-specific custom parameters to be parsed
122 * from the hardware description
123 * @custom_params: List of driver_specific custom parameters to be parsed from
124 * the hardware description
125 * @custom_conf_items: Information how to print @params in debugfs, must be
126 * the same size as the @custom_params, i.e. @num_custom_params
120 */ 127 */
121struct pinctrl_desc { 128struct pinctrl_desc {
122 const char *name; 129 const char *name;
@@ -126,6 +133,11 @@ struct pinctrl_desc {
126 const struct pinmux_ops *pmxops; 133 const struct pinmux_ops *pmxops;
127 const struct pinconf_ops *confops; 134 const struct pinconf_ops *confops;
128 struct module *owner; 135 struct module *owner;
136#ifdef CONFIG_GENERIC_PINCONF
137 unsigned int num_custom_params;
138 const struct pinconf_generic_params *custom_params;
139 const struct pin_config_item *custom_conf_items;
140#endif
129}; 141};
130 142
131/* External interface to pin controller */ 143/* External interface to pin controller */