linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Linus Walleij <linus.walleij@linaro.org>,
	Bartosz Golaszewski <bgolaszewski@baylibre.com>,
	linux-gpio@vger.kernel.org
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: [PATCH v5 07/17] gpiolib: Extract gpio_set_config_with_argument_optional() helper
Date: Mon,  9 Nov 2020 22:53:22 +0200	[thread overview]
Message-ID: <20201109205332.19592-8-andriy.shevchenko@linux.intel.com> (raw)
In-Reply-To: <20201109205332.19592-1-andriy.shevchenko@linux.intel.com>

This function is useful for internal use in GPIO library.
There will be new user coming, prepare a helper for the new comer
and the existing ones.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/gpio/gpiolib.c | 50 ++++++++++++++++++++++--------------------
 1 file changed, 26 insertions(+), 24 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 0691ecbd9a16..4558af08df23 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -2105,6 +2105,30 @@ static int gpio_set_config_with_argument(struct gpio_desc *desc,
 	return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
 }
 
+static int gpio_set_config_with_argument_optional(struct gpio_desc *desc,
+						  enum pin_config_param mode,
+						  u32 argument)
+{
+	struct device *dev = &desc->gdev->dev;
+	int gpio = gpio_chip_hwgpio(desc);
+	int ret;
+
+	ret = gpio_set_config_with_argument(desc, mode, argument);
+	if (ret != -ENOTSUPP)
+		return ret;
+
+	switch (mode) {
+	case PIN_CONFIG_PERSIST_STATE:
+		if (ret)
+			dev_dbg(dev, "Persistence not supported for GPIO %d\n", gpio);
+		break;
+	default:
+		break;
+	}
+
+	return 0;
+}
+
 static int gpio_set_config(struct gpio_desc *desc, enum pin_config_param mode)
 {
 	return gpio_set_config_with_argument(desc, mode, 0);
@@ -2114,7 +2138,6 @@ static int gpio_set_bias(struct gpio_desc *desc)
 {
 	enum pin_config_param bias;
 	unsigned int arg;
-	int ret;
 
 	if (test_bit(FLAG_BIAS_DISABLE, &desc->flags))
 		bias = PIN_CONFIG_BIAS_DISABLE;
@@ -2136,11 +2159,7 @@ static int gpio_set_bias(struct gpio_desc *desc)
 		break;
 	}
 
-	ret = gpio_set_config_with_argument(desc, bias, arg);
-	if (ret != -ENOTSUPP)
-		return ret;
-
-	return 0;
+	return gpio_set_config_with_argument_optional(desc, bias, arg);
 }
 
 /**
@@ -2382,10 +2401,6 @@ EXPORT_SYMBOL_GPL(gpiod_set_debounce);
 int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
 {
 	enum pin_config_param mode = PIN_CONFIG_PERSIST_STATE;
-	struct gpio_chip *gc;
-	unsigned long packed;
-	int gpio;
-	int rc;
 
 	VALIDATE_DESC(desc);
 	/*
@@ -2395,20 +2410,7 @@ int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
 	assign_bit(FLAG_TRANSITORY, &desc->flags, transitory);
 
 	/* If the driver supports it, set the persistence state now */
-	gc = desc->gdev->chip;
-	if (!gc->set_config)
-		return 0;
-
-	packed = pinconf_to_config_packed(mode, !transitory);
-	gpio = gpio_chip_hwgpio(desc);
-	rc = gpio_do_set_config(gc, gpio, packed);
-	if (rc == -ENOTSUPP) {
-		dev_dbg(&desc->gdev->dev, "Persistence not supported for GPIO %d\n",
-				gpio);
-		return 0;
-	}
-
-	return rc;
+	return gpio_set_config_with_argument_optional(desc, mode, !transitory);
 }
 EXPORT_SYMBOL_GPL(gpiod_set_transitory);
 
-- 
2.28.0


  parent reply	other threads:[~2020-11-09 20:53 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-09 20:53 [PATCH v5 00/17] gpiolib: acpi: pin configuration fixes Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 01/17] gpiolib: Replace unsigned by unsigned int Andy Shevchenko
2020-11-11 15:17   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 02/17] gpiolib: add missed break statement Andy Shevchenko
2020-11-11 15:18   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 03/17] gpiolib: use proper API to pack pin configuration parameters Andy Shevchenko
2020-11-11 15:23   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 04/17] gpiolib: Add temporary variable to gpiod_set_transitory() for cleaner code Andy Shevchenko
2020-11-11 15:32   ` Mika Westerberg
2020-11-11 15:40     ` Andy Shevchenko
2020-11-11 19:24       ` Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 05/17] gpiolib: Extract gpio_set_config_with_argument() for future use Andy Shevchenko
2020-11-11 15:33   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 06/17] gpiolib: move bias related code from gpio_set_config() to gpio_set_bias() Andy Shevchenko
2020-11-11 15:33   ` Mika Westerberg
2020-11-09 20:53 ` Andy Shevchenko [this message]
2020-11-11 15:35   ` [PATCH v5 07/17] gpiolib: Extract gpio_set_config_with_argument_optional() helper Mika Westerberg
2020-11-11 15:42   ` Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 08/17] gpiolib: Extract gpio_set_debounce_timeout() for internal use Andy Shevchenko
2020-11-11 15:39   ` Mika Westerberg
2020-11-11 15:46     ` Andy Shevchenko
2020-11-11 15:52       ` Mika Westerberg
2020-11-11 16:15         ` Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 09/17] gpiolib: acpi: Respect bias settings for GpioInt() resource Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 10/17] gpiolib: acpi: Use named item for enum gpiod_flags variable Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 11/17] gpiolib: acpi: Take into account debounce settings Andy Shevchenko
2020-11-11 15:41   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 12/17] gpiolib: acpi: Move acpi_gpio_to_gpiod_flags() upper in the code Andy Shevchenko
2020-11-11 15:49   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 13/17] gpiolib: acpi: Make acpi_gpio_to_gpiod_flags() usable for GpioInt() Andy Shevchenko
2020-11-11 15:50   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 14/17] gpiolib: acpi: Extract acpi_request_own_gpiod() helper Andy Shevchenko
2020-11-11 15:51   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 15/17] gpiolib: acpi: Convert pin_index to be u16 Andy Shevchenko
2020-11-11 15:55   ` Mika Westerberg
2020-11-09 20:53 ` [PATCH v5 16/17] gpiolib: acpi: Use BIT() macro to increase readability Andy Shevchenko
2020-11-11 15:57   ` Mika Westerberg
2020-11-11 17:01     ` Andy Shevchenko
2020-11-09 20:53 ` [PATCH v5 17/17] gpiolib: acpi: Make Intel GPIO tree official for GPIO ACPI work Andy Shevchenko
2020-11-11 19:27   ` Andy Shevchenko
2020-11-12  7:00     ` Mika Westerberg
2020-11-17 20:48       ` Linus Walleij
2020-11-10 14:08 ` [PATCH v5 00/17] gpiolib: acpi: pin configuration fixes Hans de Goede
2020-11-10 14:14   ` Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201109205332.19592-8-andriy.shevchenko@linux.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=hdegoede@redhat.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).