summaryrefslogtreecommitdiffstats
path: root/include/pinctrl.h
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2016-11-09 08:13:54 -0800
committerSascha Hauer <s.hauer@pengutronix.de>2016-11-14 08:57:57 +0100
commita4e1f15b6be34b3d8b79dee9d47581c975df5fa3 (patch)
tree6bfcd8916a1ecbab46e8c7c6adfb063babad2b78 /include/pinctrl.h
parentd8162dd6f18eeb51d1a3176e5edf40d150b11e32 (diff)
downloadbarebox-a4e1f15b6be34b3d8b79dee9d47581c975df5fa3.tar.gz
barebox-a4e1f15b6be34b3d8b79dee9d47581c975df5fa3.tar.xz
pinctrl: Add provisions to control GPIO pin direction
Some SoC (of which Vybrid is a one example) relegate GPIO direction control to their pinmux IP block, instead of having that functionality within GPIO IP. Add provisions to control that aspect of pinmux to support such SoCs. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/pinctrl.h')
-rw-r--r--include/pinctrl.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/pinctrl.h b/include/pinctrl.h
index 0f03b10bec..7d8716996d 100644
--- a/include/pinctrl.h
+++ b/include/pinctrl.h
@@ -5,6 +5,8 @@ struct pinctrl_device;
struct pinctrl_ops {
int (*set_state)(struct pinctrl_device *, struct device_node *);
+ int (*set_direction)(struct pinctrl_device *, unsigned int, bool);
+ int (*get_direction)(struct pinctrl_device *, unsigned int);
};
struct pinctrl_device {
@@ -12,6 +14,7 @@ struct pinctrl_device {
struct pinctrl_ops *ops;
struct list_head list;
struct device_node *node;
+ unsigned int base, npins;
};
int pinctrl_register(struct pinctrl_device *pdev);
@@ -22,6 +25,9 @@ int pinctrl_select_state(struct device_d *dev, const char *state);
int pinctrl_select_state_default(struct device_d *dev);
int of_pinctrl_select_state(struct device_node *np, const char *state);
int of_pinctrl_select_state_default(struct device_node *np);
+int pinctrl_gpio_direction_input(unsigned pin);
+int pinctrl_gpio_direction_output(unsigned int pin);
+int pinctrl_gpio_get_direction(unsigned pin);
#else
static inline int pinctrl_select_state(struct device_d *dev, const char *state)
{
@@ -42,6 +48,21 @@ static inline int of_pinctrl_select_state_default(struct device_node *np)
{
return -ENODEV;
}
+
+static inline int pinctrl_gpio_direction_input(unsigned pin)
+{
+ return -ENOTSUPP;
+}
+
+static inline int pinctrl_gpio_direction_output(unsigned int pin)
+{
+ return -ENOTSUPP;
+}
+
+static inline int pinctrl_gpio_get_direction(unsigned pin)
+{
+ return -ENOTSUPP;
+}
#endif
#endif /* PINCTRL_H */