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>
This commit is contained in:
parent
f812f0f53e
commit
b4e3ac74d5
2 changed files with 22 additions and 1 deletions
|
@ -32,7 +32,7 @@ config PINMUX_U300
|
||||||
|
|
||||||
config PINCTRL_COH901
|
config PINCTRL_COH901
|
||||||
bool "ST-Ericsson U300 COH 901 335/571 GPIO"
|
bool "ST-Ericsson U300 COH 901 335/571 GPIO"
|
||||||
depends on GPIOLIB && ARCH_U300
|
depends on GPIOLIB && ARCH_U300 && PINMUX_U300
|
||||||
help
|
help
|
||||||
Say yes here to support GPIO interface on ST-Ericsson U300.
|
Say yes here to support GPIO interface on ST-Ericsson U300.
|
||||||
The names of the two IP block variants supported are
|
The names of the two IP block variants supported are
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/pinctrl/pinmux.h>
|
||||||
#include <mach/gpio-u300.h>
|
#include <mach/gpio-u300.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -351,6 +352,24 @@ static inline struct u300_gpio *to_u300_gpio(struct gpio_chip *chip)
|
||||||
return container_of(chip, struct u300_gpio, chip);
|
return container_of(chip, struct u300_gpio, chip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int u300_gpio_request(struct gpio_chip *chip, unsigned offset)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Map back to global GPIO space and request muxing, the direction
|
||||||
|
* parameter does not matter for this controller.
|
||||||
|
*/
|
||||||
|
int gpio = chip->base + offset;
|
||||||
|
|
||||||
|
return pinmux_request_gpio(gpio);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void u300_gpio_free(struct gpio_chip *chip, unsigned offset)
|
||||||
|
{
|
||||||
|
int gpio = chip->base + offset;
|
||||||
|
|
||||||
|
pinmux_free_gpio(gpio);
|
||||||
|
}
|
||||||
|
|
||||||
static int u300_gpio_get(struct gpio_chip *chip, unsigned offset)
|
static int u300_gpio_get(struct gpio_chip *chip, unsigned offset)
|
||||||
{
|
{
|
||||||
struct u300_gpio *gpio = to_u300_gpio(chip);
|
struct u300_gpio *gpio = to_u300_gpio(chip);
|
||||||
|
@ -483,6 +502,8 @@ static int u300_gpio_config(struct gpio_chip *chip, unsigned offset,
|
||||||
static struct gpio_chip u300_gpio_chip = {
|
static struct gpio_chip u300_gpio_chip = {
|
||||||
.label = "u300-gpio-chip",
|
.label = "u300-gpio-chip",
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
.request = u300_gpio_request,
|
||||||
|
.free = u300_gpio_free,
|
||||||
.get = u300_gpio_get,
|
.get = u300_gpio_get,
|
||||||
.set = u300_gpio_set,
|
.set = u300_gpio_set,
|
||||||
.direction_input = u300_gpio_direction_input,
|
.direction_input = u300_gpio_direction_input,
|
||||||
|
|
Loading…
Add table
Reference in a new issue