All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Andy Shevchenko <andriy.shevchenko@intel.com>
Cc: "Janani Sunil" <janani.sunil@analog.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Michael Hennerich" <Michael.Hennerich@analog.com>,
	"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>,
	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>
Subject: Re: [PATCH v3 12/14] gpio: regmap: Add optional runtime PM support
Date: Sun, 16 Aug 2026 18:59:49 +0100	[thread overview]
Message-ID: <20260816185949.4205b507@jic23-huawei> (raw)
In-Reply-To: <an7TBThRam_n7hKg@ashevche-desk.local>

On Fri, 14 Aug 2026 11:34:13 +0300
Andy Shevchenko <andriy.shevchenko@intel.com> wrote:

> On Thu, Aug 13, 2026 at 03:57:05PM +0200, Janani Sunil wrote:
> > Some gpio-regmap consumers share their regmap with a parent device that
> > may be runtime suspended. GPIO register accesses must resume that device
> > first.
> > 
> > Add an optional pm_dev field and acquire it before register translation
> > or access. Release it using runtime autosuspend after each operation.
> > Keep the device active across the complete direction-output sequence and
> > propagate failure when setting the initial output value.  
> 
> ...
> 
> >  static int gpio_regmap_get(struct gpio_chip *chip, unsigned int offset)
> >  {
> >  	struct gpio_regmap *gpio = gpiochip_get_data(chip);  
> 
> >  
> > -	ret = gpio->reg_mask_xlate(gpio, base, offset, &reg, &mask);
> > +	ret = gpio_regmap_runtime_get(gpio);
> >  	if (ret)
> >  		return ret;
> >  
> > +	ret = gpio->reg_mask_xlate(gpio, base, offset, &reg, &mask);
> > +	if (ret)
> > +		goto out_pm_put;
> > +
> >  	/* 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);
> >  		if (ret)
> > -			return ret;
> > +			goto out_pm_put;
> >  
> > -		return !!(val & mask);
> > +		ret = !!(val & mask);
> > +	} else {
> > +		ret = regmap_test_bits(gpio->regmap, reg, mask);
> >  	}
> >  
> > -	return regmap_test_bits(gpio->regmap, reg, mask);
> > +out_pm_put:
> > +	gpio_regmap_runtime_put(gpio);
> > +	return ret;
> >  }  
> 
> Instead of adding ugly goto:s, I would rather define the guard and acquire and
> use in the same way as other PM_RUNTIME_ACQUIRE*() work.
> 
Excellent point Andy.

I was thinking exactly this when looking at v2 just now (and feeling guilty for
being late to the discussion!)

Would need a local GPIO specific variant but that is easy to do - just copy
the way PM_RUNTIME_ACQUIRE*() works.

Given how much it will reduce the code churn + result in a more elegant result
for me this is a necessary change rather than a nice to have.

Thanks,

Jonathan

  reply	other threads:[~2026-08-16 17:59 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-13 13:56 [PATCH v3 00/14] iio: adc: Add AD7768/AD7768-4 ADC driver support Janani Sunil
2026-08-13 13:56 ` [PATCH v3 01/14] dt-bindings: iio: adc: Add AD7768 Janani Sunil
2026-08-16 18:24   ` Jonathan Cameron
2026-08-18  8:27     ` Janani Sunil
2026-08-22  1:45       ` Jonathan Cameron
2026-08-13 13:56 ` [PATCH v3 02/14] iio: backend: Add support for CRC Janani Sunil
2026-08-16 18:27   ` Jonathan Cameron
2026-08-16 18:33     ` Jonathan Cameron
2026-08-13 13:56 ` [PATCH v3 03/14] iio: adc: adi-axi-adc: Initialize state mutex Janani Sunil
2026-08-16 18:29   ` Jonathan Cameron
2026-08-13 13:56 ` [PATCH v3 04/14] iio: adc: adi-axi-adc: Add support for CRC Janani Sunil
2026-08-13 13:56 ` [PATCH v3 05/14] iio: adc: Add AD7768 and AD7768-4 core support Janani Sunil
2026-08-16 19:10   ` Jonathan Cameron
2026-08-24 14:45     ` Philipp Zabel
2026-08-24 15:06       ` Andy Shevchenko
2026-08-13 13:56 ` [PATCH v3 06/14] iio: adc: ad7768: Add configurable sampling modes Janani Sunil
2026-08-16 19:35   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 07/14] iio: adc: ad7768: Add calibration controls Janani Sunil
2026-08-16 19:37   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 08/14] iio: adc: ad7768: Add per-channel conversion delay Janani Sunil
2026-08-13 13:57 ` [PATCH v3 09/14] iio: adc: ad7768: Add VCM regulator support Janani Sunil
2026-08-16 19:46   ` Jonathan Cameron
2026-08-13 13:57 ` [PATCH v3 10/14] iio: adc: ad7768: Register GPIO auxiliary device Janani Sunil
2026-08-13 13:57 ` [PATCH v3 11/14] gpio: regmap: Use regmap_test_bits() for single bit reads Janani Sunil
2026-08-14  7:04   ` Linus Walleij
2026-08-14  7:28   ` Michael Walle
2026-08-14  8:28   ` Andy Shevchenko
2026-08-13 13:57 ` [PATCH v3 12/14] gpio: regmap: Add optional runtime PM support Janani Sunil
2026-08-14  7:07   ` Linus Walleij
2026-08-14  7:30   ` Michael Walle
2026-08-14  8:34   ` Andy Shevchenko
2026-08-16 17:59     ` Jonathan Cameron [this message]
2026-08-13 13:57 ` [PATCH v3 13/14] gpio: ad7768: Add AD7768 GPIO auxiliary driver Janani Sunil
2026-08-14  7:05   ` Linus Walleij
2026-08-14  8:43   ` Andy Shevchenko
2026-08-13 13:57 ` [PATCH v3 14/14] Documentation: iio: Add AD7768 Documentation Janani Sunil
2026-08-14  8:45 ` [PATCH v3 00/14] iio: adc: Add AD7768/AD7768-4 ADC driver support 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=20260816185949.4205b507@jic23-huawei \
    --to=jic23@kernel.org \
    --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=janani.sunil@analog.com \
    --cc=jananisunil.dev@gmail.com \
    --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.