summaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2011-01-13 08:37:24 +0100
committerTakashi Iwai <tiwai@suse.de>2011-01-13 08:37:24 +0100
commit6db9a0f326d3144d790d9479309df480a8f562e4 (patch)
tree650a8950c35c087278ecee1b8d123f75f601ebc8 /drivers/gpio
parentMerge branch 'topic/hda' into for-linus (diff)
parentMerge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/br... (diff)
downloadlinux-6db9a0f326d3144d790d9479309df480a8f562e4.tar.xz
linux-6db9a0f326d3144d790d9479309df480a8f562e4.zip
Merge branch 'topic/asoc' into for-linus
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/wm8994-gpio.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/gpio/wm8994-gpio.c b/drivers/gpio/wm8994-gpio.c
index 618398e4ed8e..c822baacd8fc 100644
--- a/drivers/gpio/wm8994-gpio.c
+++ b/drivers/gpio/wm8994-gpio.c
@@ -35,6 +35,29 @@ static inline struct wm8994_gpio *to_wm8994_gpio(struct gpio_chip *chip)
return container_of(chip, struct wm8994_gpio, gpio_chip);
}
+static int wm8994_gpio_request(struct gpio_chip *chip, unsigned offset)
+{
+ struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
+ struct wm8994 *wm8994 = wm8994_gpio->wm8994;
+
+ switch (wm8994->type) {
+ case WM8958:
+ switch (offset) {
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 6:
+ return -EINVAL;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return 0;
+}
+
static int wm8994_gpio_direction_in(struct gpio_chip *chip, unsigned offset)
{
struct wm8994_gpio *wm8994_gpio = to_wm8994_gpio(chip);
@@ -136,6 +159,7 @@ static void wm8994_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
static struct gpio_chip template_chip = {
.label = "wm8994",
.owner = THIS_MODULE,
+ .request = wm8994_gpio_request,
.direction_input = wm8994_gpio_direction_in,
.get = wm8994_gpio_get,
.direction_output = wm8994_gpio_direction_out,