blob: 84b8fe946b5c9f77bb5695a76d7bb291b3124b39 [file] [log] [blame]
Linus Walleij2744e8a2011-05-02 20:50:54 +02001/*
2 * Internal interface between the core pin control system and the
3 * pinmux portions
4 *
5 * Copyright (C) 2011 ST-Ericsson SA
6 * Written on behalf of Linaro for ST-Ericsson
7 * Based on bits of regulator core, gpio core and clk core
8 *
9 * Author: Linus Walleij <linus.walleij@linaro.org>
10 *
11 * License terms: GNU General Public License (GPL) version 2
12 */
13#ifdef CONFIG_PINMUX
14
Tony Lindgrenb9130b72012-01-24 16:28:08 -080015int pinmux_check_ops(struct pinctrl_dev *pctldev);
Linus Walleijbefe5bd2012-02-09 19:47:48 +010016int pinmux_request_gpio(struct pinctrl_dev *pctldev,
17 struct pinctrl_gpio_range *range,
18 unsigned pin, unsigned gpio);
19void pinmux_free_gpio(struct pinctrl_dev *pctldev, unsigned pin,
20 struct pinctrl_gpio_range *range);
21int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
22 struct pinctrl_gpio_range *range,
23 unsigned pin, bool input);
24static inline void pinmux_init_pinctrl_handle(struct pinctrl *p)
25{
26 p->func_selector = UINT_MAX;
27 INIT_LIST_HEAD(&p->groups);
28}
29int pinmux_apply_muxmap(struct pinctrl_dev *pctldev,
30 struct pinctrl *p,
31 struct device *dev,
32 const char *devname,
33 struct pinctrl_map const *map);
34void pinmux_put(struct pinctrl *p);
35int pinmux_enable(struct pinctrl *p);
36void pinmux_disable(struct pinctrl *p);
Stephen Warren03665e02012-02-19 23:45:45 -070037void pinmux_init_device_debugfs(struct dentry *devroot,
38 struct pinctrl_dev *pctldev);
Linus Walleijbefe5bd2012-02-09 19:47:48 +010039void pinmux_dbg_show(struct seq_file *s, struct pinctrl *p);
Linus Walleij2744e8a2011-05-02 20:50:54 +020040
41#else
42
Tony Lindgrenb9130b72012-01-24 16:28:08 -080043static inline int pinmux_check_ops(struct pinctrl_dev *pctldev)
Linus Walleij2744e8a2011-05-02 20:50:54 +020044{
45 return 0;
46}
47
Linus Walleijbefe5bd2012-02-09 19:47:48 +010048static inline int pinmux_request_gpio(struct pinctrl_dev *pctldev,
49 struct pinctrl_gpio_range *range,
50 unsigned pin, unsigned gpio)
Linus Walleij2744e8a2011-05-02 20:50:54 +020051{
52 return 0;
53}
54
Linus Walleijbefe5bd2012-02-09 19:47:48 +010055static inline void pinmux_free_gpio(struct pinctrl_dev *pctldev,
56 unsigned pin,
57 struct pinctrl_gpio_range *range)
58{
59}
60
61static inline int pinmux_gpio_direction(struct pinctrl_dev *pctldev,
62 struct pinctrl_gpio_range *range,
63 unsigned pin, bool input)
64{
65 return 0;
66}
67
68static inline void pinmux_init_pinctrl_handle(struct pinctrl *p)
69{
70}
71
72static inline int pinmux_apply_muxmap(struct pinctrl_dev *pctldev,
73 struct pinctrl *p,
74 struct device *dev,
75 const char *devname,
76 struct pinctrl_map const *map)
77{
78 return 0;
79}
80
81static inline void pinmux_put(struct pinctrl *p)
82{
83}
84
85static inline int pinmux_enable(struct pinctrl *p)
86{
87}
88
89static inline void pinmux_disable(struct pinctrl *p)
90{
91}
92
Stephen Warren03665e02012-02-19 23:45:45 -070093static inline void pinmux_init_device_debugfs(struct dentry *devroot,
94 struct pinctrl_dev *pctldev)
95{
96}
97
98static inline void pinmux_dbg_show(struct seq_file *s, struct pinctrl *p)
Linus Walleij2744e8a2011-05-02 20:50:54 +020099{
100}
101
102#endif