summaryrefslogtreecommitdiff
path: root/drivers/pinctrl/pinmux.h
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-02-09 22:47:48 +0400
committerLinus Walleij <linus.walleij@linaro.org>2012-02-11 00:33:06 +0400
commitbefe5bdfbb698b3bc57c58d0bd7ca3391c9275ed (patch)
tree71416f2adc515f010f54de2371e29626cd144a5b /drivers/pinctrl/pinmux.h
parente93bcee00c43e2bd4037291262111016f4c05793 (diff)
downloadlinux-befe5bdfbb698b3bc57c58d0bd7ca3391c9275ed.tar.xz
pinctrl: factor pin control handles over to the core
This moves the per-devices struct pinctrl handles and device map over from the pinmux part of the subsystem to the core pinctrl part. This makes the device handles core infrastructure with the goal of using these handles also for pin configuration, so that device drivers (or boards etc) will need one and only one handle to the pin control core. Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinmux.h')
-rw-r--r--drivers/pinctrl/pinmux.h67
1 files changed, 61 insertions, 6 deletions
diff --git a/drivers/pinctrl/pinmux.h b/drivers/pinctrl/pinmux.h
index dfe81726965c..7680a1703252 100644
--- a/drivers/pinctrl/pinmux.h
+++ b/drivers/pinctrl/pinmux.h
@@ -15,9 +15,28 @@
int pinmux_check_ops(struct pinctrl_dev *pctldev);
void pinmux_init_device_debugfs(struct dentry *devroot,
struct pinctrl_dev *pctldev);
-void pinmux_init_debugfs(struct dentry *subsys_root);
-int pinctrl_hog_maps(struct pinctrl_dev *pctldev);
-void pinctrl_unhog_maps(struct pinctrl_dev *pctldev);
+int pinmux_request_gpio(struct pinctrl_dev *pctldev,
+ struct pinctrl_gpio_range *range,
+ unsigned pin, unsigned gpio);
+void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin,
+ struct pinctrl_gpio_range *range);
+int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
+ struct pinctrl_gpio_range *range,
+ unsigned pin, bool input);
+static inline void pinmux_init_pinctrl_handle(struct pinctrl *p)
+{
+ p->func_selector = UINT_MAX;
+ INIT_LIST_HEAD(&p->groups);
+}
+int pinmux_apply_muxmap(struct pinctrl_dev *pctldev,
+ struct pinctrl *p,
+ struct device *dev,
+ const char *devname,
+ struct pinctrl_map const *map);
+void pinmux_put(struct pinctrl *p);
+int pinmux_enable(struct pinctrl *p);
+void pinmux_disable(struct pinctrl *p);
+void pinmux_dbg_show(struct seq_file *s, struct pinctrl *p);
#else
@@ -31,16 +50,52 @@ static inline void pinmux_init_device_debugfs(struct dentry *devroot,
{
}
-static inline void pinmux_init_debugfs(struct dentry *subsys_root)
+static inline int pinmux_request_gpio(struct pinctrl_dev *pctldev,
+ struct pinctrl_gpio_range *range,
+ unsigned pin, unsigned gpio)
+{
+ return 0;
+}
+
+static inline void pinmux_free_gpio(struct pinctrl_dev *pctldev,
+ unsigned pin,
+ struct pinctrl_gpio_range *range)
+{
+}
+
+static inline int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
+ struct pinctrl_gpio_range *range,
+ unsigned pin, bool input)
+{
+ return 0;
+}
+
+static inline void pinmux_init_pinctrl_handle(struct pinctrl *p)
{
}
-static inline int pinctrl_hog_maps(struct pinctrl_dev *pctldev)
+static inline int pinmux_apply_muxmap(struct pinctrl_dev *pctldev,
+ struct pinctrl *p,
+ struct device *dev,
+ const char *devname,
+ struct pinctrl_map const *map)
{
return 0;
}
-static inline void pinctrl_unhog_maps(struct pinctrl_dev *pctldev)
+static inline void pinmux_put(struct pinctrl *p)
+{
+}
+
+static inline int pinmux_enable(struct pinctrl *p)
+{
+}
+
+static inline void pinmux_disable(struct pinctrl *p)
+{
+}
+
+void pinmux_dbg_show(struct seq_file *s, struct pinctrl *p)
{
}