All of lore.kernel.org
 help / color / mirror / Atom feed
From: Janani Sunil <janani.sunil@analog.com>
To: "Nuno Sá" <nuno.sa@analog.com>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"David Lechner" <dlechner@baylibre.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Olivier Moysan" <olivier.moysan@foss.st.com>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Linus Walleij" <linusw@kernel.org>,
	"Bartosz Golaszewski" <brgl@kernel.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Shuah Khan" <skhan@linuxfoundation.org>,
	"Michael Walle" <mwalle@kernel.org>
Cc: linux@analog.com, linux-iio@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org, linux-doc@vger.kernel.org,
	jananisunil.dev@gmail.com,
	"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>,
	"Janani Sunil" <janani.sunil@analog.com>,
	"Andy Shevchenko" <andriy.shevchenko@intel.com>
Subject: [PATCH v5 17/20] gpio: regmap: Use regmap_test_bits() for single bit reads
Date: Fri, 28 Aug 2026 17:30:40 +0200	[thread overview]
Message-ID: <20260828-ad7768-driver-v5-17-e33ca6f841a2@analog.com> (raw)
In-Reply-To: <20260828-ad7768-driver-v5-0-e33ca6f841a2@analog.com>

Use regmap_test_bits() when reading a single GPIO value from a normal
register and when reading the direction bit.

Reviewed-by: Linus Walleij <linusw@kernel.org>
Reviewed-by: Michael Walle <mwalle@kernel.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Janani Sunil <janani.sunil@analog.com>
---
 drivers/gpio/gpio-regmap.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
index 51b4d69b8740..0012e03d0d4e 100644
--- a/drivers/gpio/gpio-regmap.c
+++ b/drivers/gpio/gpio-regmap.c
@@ -83,11 +83,11 @@ static int gpio_regmap_get(struct gpio_chip *chip, unsigned int offset)
 	if (ret)
 		return ret;
 
+	if (gpio->reg_dat_base != gpio->reg_set_base)
+		return regmap_test_bits(gpio->regmap, reg, mask);
+
 	/* ensure we don't spoil any register cache with pin input values */
-	if (gpio->reg_dat_base == gpio->reg_set_base)
-		ret = regmap_read_bypassed(gpio->regmap, reg, &val);
-	else
-		ret = regmap_read(gpio->regmap, reg, &val);
+	ret = regmap_read_bypassed(gpio->regmap, reg, &val);
 	if (ret)
 		return ret;
 
@@ -157,7 +157,7 @@ static int gpio_regmap_get_direction(struct gpio_chip *chip,
 				     unsigned int offset)
 {
 	struct gpio_regmap *gpio = gpiochip_get_data(chip);
-	unsigned int base, val, reg, mask;
+	unsigned int base, reg, mask;
 	int invert, ret;
 
 	if (gpio_regmap_fixed_direction(gpio, offset)) {
@@ -186,14 +186,14 @@ static int gpio_regmap_get_direction(struct gpio_chip *chip,
 	if (ret)
 		return ret;
 
-	ret = regmap_read(gpio->regmap, reg, &val);
-	if (ret)
+	ret = regmap_test_bits(gpio->regmap, reg, mask);
+	if (ret < 0)
 		return ret;
 
-	if (!!(val & mask) ^ invert)
+	if (ret ^ invert)
 		return GPIO_LINE_DIRECTION_OUT;
-	else
-		return GPIO_LINE_DIRECTION_IN;
+
+	return GPIO_LINE_DIRECTION_IN;
 }
 
 static int gpio_regmap_try_direction_fixed(struct gpio_regmap *gpio,

-- 
2.43.0


  parent reply	other threads:[~2026-08-28 15:32 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-28 15:30 [PATCH v5 00/20] iio: adc: Add AD7768/AD7768-4 ADC driver support Janani Sunil
2026-08-28 15:30 ` [PATCH v5 01/20] iio: adc: adi-axi-adc: Initialize state mutex Janani Sunil
2026-08-28 15:30 ` [PATCH v5 02/20] dt-bindings: iio: adc: Add AD7768 Janani Sunil
2026-08-28 15:30 ` [PATCH v5 03/20] iio: backend: Add support for CRC Janani Sunil
2026-08-28 15:30 ` [PATCH v5 04/20] iio: adc: adi-axi-adc: " Janani Sunil
2026-08-28 15:30 ` [PATCH v5 05/20] iio: adc: Add AD7768 and AD7768-4 core support Janani Sunil
2026-08-31  9:04   ` Andy Shevchenko
2026-08-31 15:20     ` Janani Sunil
2026-09-01  7:19       ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 06/20] iio: adc: ad7768: Validate master clock rate Janani Sunil
2026-08-28 15:30 ` [PATCH v5 07/20] iio: adc: ad7768: Add power mode helper Janani Sunil
2026-08-31  4:44   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 08/20] iio: adc: ad7768: Derive output data rates Janani Sunil
2026-08-31  8:09   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 09/20] iio: adc: ad7768: Configure channel sampling profiles Janani Sunil
2026-08-31  8:18   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 10/20] iio: adc: ad7768: Add sampling frequency controls Janani Sunil
2026-08-31  8:24   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 11/20] iio: adc: ad7768: Add per-channel filter controls Janani Sunil
2026-08-28 15:30 ` [PATCH v5 12/20] iio: adc: ad7768: Wait for digital filters to settle Janani Sunil
2026-08-31  7:45   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 13/20] iio: adc: ad7768: Add calibration controls Janani Sunil
2026-08-31  8:26   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 14/20] iio: adc: ad7768: Add per-channel conversion delay Janani Sunil
2026-08-31  8:30   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 15/20] iio: adc: ad7768: Add VCM regulator support Janani Sunil
2026-08-28 15:30 ` [PATCH v5 16/20] iio: adc: ad7768: Register GPIO auxiliary device Janani Sunil
2026-08-31  8:33   ` Andy Shevchenko
2026-08-28 15:30 ` Janani Sunil [this message]
2026-09-02 13:48   ` [PATCH v5 17/20] gpio: regmap: Use regmap_test_bits() for single bit reads Bartosz Golaszewski
2026-09-03 12:08     ` Janani Sunil
2026-08-28 15:30 ` [PATCH v5 18/20] gpio: regmap: Add optional runtime PM support Janani Sunil
2026-08-31  7:15   ` Andy Shevchenko
2026-08-28 15:30 ` [PATCH v5 19/20] gpio: ad7768: Add AD7768 GPIO auxiliary driver Janani Sunil
2026-08-28 15:30 ` [PATCH v5 20/20] Documentation: iio: Add AD7768 Documentation Janani Sunil
2026-08-29 18:19 ` [PATCH v5 00/20] iio: adc: Add AD7768/AD7768-4 ADC driver support Jonathan Cameron
2026-08-30  7:12   ` Andy Shevchenko
2026-09-01  8:32 ` Bartosz Golaszewski
2026-09-01 15:44   ` Jonathan Cameron

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=20260828-ad7768-driver-v5-17-e33ca6f841a2@analog.com \
    --to=janani.sunil@analog.com \
    --cc=Michael.Hennerich@analog.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=andy@kernel.org \
    --cc=brgl@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=jananisunil.dev@gmail.com \
    --cc=jic23@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linusw@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@analog.com \
    --cc=mwalle@kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=olivier.moysan@foss.st.com \
    --cc=p.zabel@pengutronix.de \
    --cc=robh@kernel.org \
    --cc=skhan@linuxfoundation.org \
    --cc=u.kleine-koenig@baylibre.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.