15 #include <linux/kernel.h>
16 #include <linux/module.h>
17 #include <linux/errno.h>
40 static int wm8350_gpio_set_debounce(
struct wm8350 *wm8350,
int gpio,
int db)
50 static int gpio_set_func(
struct wm8350 *wm8350,
int gpio,
int func)
60 reg | ((func & 0xf) << 0));
66 reg | ((func & 0xf) << 4));
72 reg | ((func & 0xf) << 8));
78 reg | ((func & 0xf) << 12));
84 reg | ((func & 0xf) << 0));
90 reg | ((func & 0xf) << 4));
96 reg | ((func & 0xf) << 8));
102 reg | ((func & 0xf) << 12));
108 reg | ((func & 0xf) << 0));
114 reg | ((func & 0xf) << 4));
120 reg | ((func & 0xf) << 8));
126 reg | ((func & 0xf) << 12));
132 reg | ((func & 0xf) << 0));
143 static int gpio_set_pull_up(
struct wm8350 *wm8350,
int gpio,
int up)
155 static int gpio_set_pull_down(
struct wm8350 *wm8350,
int gpio,
int down)
167 static int gpio_set_polarity(
struct wm8350 *wm8350,
int gpio,
int pol)
179 static int gpio_set_invert(
struct wm8350 *wm8350,
int gpio,
int invert)
189 int pol,
int pull,
int invert,
int debounce)
193 if (gpio_set_pull_up(wm8350, gpio, 0))
195 if (gpio_set_pull_down(wm8350, gpio, 0))
198 if (gpio_set_pull_down(wm8350, gpio, 0))
200 if (gpio_set_pull_up(wm8350, gpio, 1))
203 if (gpio_set_pull_up(wm8350, gpio, 0))
205 if (gpio_set_pull_down(wm8350, gpio, 1))
209 if (gpio_set_invert(wm8350, gpio, invert))
211 if (gpio_set_polarity(wm8350, gpio, pol))
213 if (wm8350_gpio_set_debounce(wm8350, gpio, debounce))
215 if (gpio_set_dir(wm8350, gpio, dir))
217 return gpio_set_func(wm8350, gpio, func);