summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/sh-pfc/gpio.c
diff options
context:
space:
mode:
authorLaurent Pinchart2013-02-14 17:36:56 +0100
committerLaurent Pinchart2013-03-15 13:33:39 +0100
commita68fdca9b0447a0e7a85ee378510509be8b70d90 (patch)
tree2818288e43d82e8c6c7f829775800da3b59c3930 /drivers/pinctrl/sh-pfc/gpio.c
parentsh-pfc: Share the PORT_10_REV, PORT_32 and PORT_32_REV definitions (diff)
downloadkernel-qcow2-linux-a68fdca9b0447a0e7a85ee378510509be8b70d90.tar.gz
kernel-qcow2-linux-a68fdca9b0447a0e7a85ee378510509be8b70d90.tar.xz
kernel-qcow2-linux-a68fdca9b0447a0e7a85ee378510509be8b70d90.zip
sh-pfc: Use pinmux identifiers in the pin muxing API
The PFC core exposes a sh_pfc_config_gpio() function that configures pinmuxing for a given GPIO (either a real GPIO or a function GPIO). Handling of real and function GPIOs belong to the GPIO layer, move the GPIO number to mark translation to the caller and rename the function to sh_pfc_config_mux(). Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Acked-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/sh-pfc/gpio.c')
-rw-r--r--drivers/pinctrl/sh-pfc/gpio.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/pinctrl/sh-pfc/gpio.c b/drivers/pinctrl/sh-pfc/gpio.c
index 454c965ea555..3ad938fd7ecc 100644
--- a/drivers/pinctrl/sh-pfc/gpio.c
+++ b/drivers/pinctrl/sh-pfc/gpio.c
@@ -135,23 +135,21 @@ static void gpio_pin_setup(struct sh_pfc_chip *chip)
static int gpio_function_request(struct gpio_chip *gc, unsigned offset)
{
struct sh_pfc *pfc = gpio_to_pfc(gc);
- unsigned int gpio = gc->base + offset;
+ unsigned int mark = pfc->info->func_gpios[offset].enum_id;
unsigned long flags;
int ret = -EINVAL;
pr_notice_once("Use of GPIO API for function requests is deprecated, convert to pinctrl\n");
- if (pfc->info->func_gpios[offset].enum_id == 0)
+ if (mark == 0)
return ret;
spin_lock_irqsave(&pfc->lock, flags);
- if (sh_pfc_config_gpio(pfc, gpio, PINMUX_TYPE_FUNCTION,
- GPIO_CFG_DRYRUN))
+ if (sh_pfc_config_mux(pfc, mark, PINMUX_TYPE_FUNCTION, GPIO_CFG_DRYRUN))
goto done;
- if (sh_pfc_config_gpio(pfc, gpio, PINMUX_TYPE_FUNCTION,
- GPIO_CFG_REQ))
+ if (sh_pfc_config_mux(pfc, mark, PINMUX_TYPE_FUNCTION, GPIO_CFG_REQ))
goto done;
ret = 0;
@@ -164,12 +162,12 @@ done:
static void gpio_function_free(struct gpio_chip *gc, unsigned offset)
{
struct sh_pfc *pfc = gpio_to_pfc(gc);
- unsigned int gpio = gc->base + offset;
+ unsigned int mark = pfc->info->func_gpios[offset].enum_id;
unsigned long flags;
spin_lock_irqsave(&pfc->lock, flags);
- sh_pfc_config_gpio(pfc, gpio, PINMUX_TYPE_FUNCTION, GPIO_CFG_FREE);
+ sh_pfc_config_mux(pfc, mark, PINMUX_TYPE_FUNCTION, GPIO_CFG_FREE);
spin_unlock_irqrestore(&pfc->lock, flags);
}