diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2011-11-16 04:24:39 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-01-03 03:10:04 -0500 |
commit | b4e3ac74d5cd4152f2ec6b3280b1ff3428952f7f (patch) | |
tree | b1dc770b28ac3dcdf2fd2b770827e4112804155e /drivers/pinctrl | |
parent | f812f0f53e5643c06b929ce3299cbaffb307c488 (diff) |
pinctrl/coh901: driver to request its pins
This makes the COH 901 driver request muxing of its GPIO pins
from the pinmux-u300 driver using the standard API calls.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r-- | drivers/pinctrl/Kconfig | 2 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-coh901.c | 21 |
2 files changed, 22 insertions, 1 deletions
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig index e087f0219f48..e963da41e948 100644 --- a/drivers/pinctrl/Kconfig +++ b/drivers/pinctrl/Kconfig | |||
@@ -32,7 +32,7 @@ config PINMUX_U300 | |||
32 | 32 | ||
33 | config PINCTRL_COH901 | 33 | config PINCTRL_COH901 |
34 | bool "ST-Ericsson U300 COH 901 335/571 GPIO" | 34 | bool "ST-Ericsson U300 COH 901 335/571 GPIO" |
35 | depends on GPIOLIB && ARCH_U300 | 35 | depends on GPIOLIB && ARCH_U300 && PINMUX_U300 |
36 | help | 36 | help |
37 | Say yes here to support GPIO interface on ST-Ericsson U300. | 37 | Say yes here to support GPIO interface on ST-Ericsson U300. |
38 | The names of the two IP block variants supported are | 38 | The names of the two IP block variants supported are |
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c index 4035778852b0..69fb7072a23e 100644 --- a/drivers/pinctrl/pinctrl-coh901.c +++ b/drivers/pinctrl/pinctrl-coh901.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/gpio.h> | 22 | #include <linux/gpio.h> |
23 | #include <linux/list.h> | 23 | #include <linux/list.h> |
24 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
25 | #include <linux/pinctrl/pinmux.h> | ||
25 | #include <mach/gpio-u300.h> | 26 | #include <mach/gpio-u300.h> |
26 | 27 | ||
27 | /* | 28 | /* |
@@ -351,6 +352,24 @@ static inline struct u300_gpio *to_u300_gpio(struct gpio_chip *chip) | |||
351 | return container_of(chip, struct u300_gpio, chip); | 352 | return container_of(chip, struct u300_gpio, chip); |
352 | } | 353 | } |
353 | 354 | ||
355 | static int u300_gpio_request(struct gpio_chip *chip, unsigned offset) | ||
356 | { | ||
357 | /* | ||
358 | * Map back to global GPIO space and request muxing, the direction | ||
359 | * parameter does not matter for this controller. | ||
360 | */ | ||
361 | int gpio = chip->base + offset; | ||
362 | |||
363 | return pinmux_request_gpio(gpio); | ||
364 | } | ||
365 | |||
366 | static void u300_gpio_free(struct gpio_chip *chip, unsigned offset) | ||
367 | { | ||
368 | int gpio = chip->base + offset; | ||
369 | |||
370 | pinmux_free_gpio(gpio); | ||
371 | } | ||
372 | |||
354 | static int u300_gpio_get(struct gpio_chip *chip, unsigned offset) | 373 | static int u300_gpio_get(struct gpio_chip *chip, unsigned offset) |
355 | { | 374 | { |
356 | struct u300_gpio *gpio = to_u300_gpio(chip); | 375 | struct u300_gpio *gpio = to_u300_gpio(chip); |
@@ -483,6 +502,8 @@ static int u300_gpio_config(struct gpio_chip *chip, unsigned offset, | |||
483 | static struct gpio_chip u300_gpio_chip = { | 502 | static struct gpio_chip u300_gpio_chip = { |
484 | .label = "u300-gpio-chip", | 503 | .label = "u300-gpio-chip", |
485 | .owner = THIS_MODULE, | 504 | .owner = THIS_MODULE, |
505 | .request = u300_gpio_request, | ||
506 | .free = u300_gpio_free, | ||
486 | .get = u300_gpio_get, | 507 | .get = u300_gpio_get, |
487 | .set = u300_gpio_set, | 508 | .set = u300_gpio_set, |
488 | .direction_input = u300_gpio_direction_input, | 509 | .direction_input = u300_gpio_direction_input, |