From 0c4d86663ba134cfe216eec5dd2c1ed3d52767e6 Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Mon, 9 Nov 2020 22:53:20 +0200
Subject: [PATCH] gpiolib: Extract gpio_set_config_with_argument() for future use
Git-commit: 0c4d86663ba134cfe216eec5dd2c1ed3d52767e6
Patch-mainline: v5.11-rc1
References: bsc#1180682
[ backport note: the patch majorly modified, as gpio_set_config() is kept
as was, while a new function gpio_set_config_with_argument() is added in
a new form with gpio_desc argument -- tiwai ]
In the future we will need to have a separate function
that takes an arbitrary argument value.
Extract gpio_set_config_with_argument() for that purpose.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Takashi Iwai <tiwai@suse.de>
---
drivers/gpio/gpiolib.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -2976,11 +2976,22 @@ static int gpio_do_set_config(struct gpi
return gc->set_config(gc, offset, config);
}
+static int gpio_set_config_with_argument(struct gpio_desc *desc,
+ enum pin_config_param mode,
+ u32 argument)
+{
+ struct gpio_chip *gc = desc->gdev->chip;
+ unsigned long config;
+
+ config = pinconf_to_config_packed(mode, argument);
+ return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
+}
+
static int gpio_set_config(struct gpio_chip *gc, unsigned int offset,
enum pin_config_param mode)
{
unsigned long config;
- unsigned arg;
+ unsigned int arg;
switch (mode) {
case PIN_CONFIG_BIAS_PULL_DOWN: