All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael Walle" <mwalle@kernel.org>
To: "Ioana Ciornei" <ioana.ciornei@nxp.com>
Cc: "Linus Walleij" <linus.walleij@linaro.org>,
	"Andrew Lunn" <andrew@lunn.ch>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-gpio@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Shawn Guo" <shawnguo@kernel.org>, "Lee Jones" <lee@kernel.org>,
	"Frank Li" <Frank.Li@nxp.com>
Subject: Re: [PATCH 4/9] gpio: regmap: add the .get_direction() callback
Date: Tue, 15 Jul 2025 14:51:03 +0200	[thread overview]
Message-ID: <DBCN4NYM5NF3.S9SFP077EKFK@kernel.org> (raw)
In-Reply-To: <c4ff34jwaiyby52ambcxtu2mrjlkcv44scjsveb6s6pvaps33u@bvl3wz6mvsuo>

[-- Attachment #1: Type: text/plain, Size: 2430 bytes --]

Hi,

> > > Then the core can use is_fixed_direction() together
> > > with gpio_get_direction() to check if it can do
> > > a certain set_direction().
> > >
> > > Pseudocode:
> > >
> > > mydir = get_direction(line)
> > > if (is_fixed_direction(line) && (mydir != requested_dir)
> > >   return -ERROR;
> > 
> > You don't need a .is_fixed_direction(). You can deduce that if only
> > .get_direction() is set in the gpio-regmap config.
> > 
> > mydir = get_direction(line)
> > if (!config->set_direction && mydir != requested_dir)
> >   return -ERROR;
>
> This implies that gpio_regmap_config gets two new callbacks
> .get_direction() and .set_direction() and that in case .set_direction()
> is set in gpio-regmap config, then its used directly from
> gpio_regmap_set_direction(), right?

Yes. Or just .get_direction() for now and assume that .set_direction
is NULL, i.e. it just covers your use case for the fixed direction.

.. Oh I just noticed that this will really limit the use to either
all or nothing. You cannot mix set user defined directions with
fixed directions. Linus' .is_fixed_direction() will allow that.

Though I wonder if we really want to let the user override
.get_direction() and .set_direction(). I still prefer the bitmap.

> > That or either Andrew's idea of setting a bitmap within the
> > gpio-regmap config which already tells the gpio-regmap core and then
> > amend gpio_regmap_get_direction() to return that fixed direction if
> > that bitmap is not NULL.
>
> Even though at first glance I was under the impression that the bitmap
> solution is cleaner, how big should the bitmap be knows only the final
> gpio driver. Without this information, we cannot know the bitmap size so
> that we can use the DECLARE_BITMAP macro in gpio-regmap config.

Actually, I had the same thought. But there is also bitmap_alloc()
and friends, no? And the gpio-regmap config contains the ngpios.

In gpio_regmap_get_direction():

if (gpio->fixed_direction_output && test_bit(offset, gpio->fixed_direction_output))
	return GPIO_LINE_DIRECTION_OUT;

Which implies that once .fixed_direction is set it will always be
checked. So if someone in the future wants to mix and match
.fixed_direction with .reg_dir_{in,out}_base we have to add a second
bitmap which tells you what pins are fixed.

You'd probably need to make sure offset is smaller than ngpio.

-michael

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 297 bytes --]

  reply	other threads:[~2025-07-15 14:02 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-09 11:26 [PATCH 0/9] drivers: gpio: and the QIXIS FPGA GPIO controller Ioana Ciornei
2025-07-09 11:26 ` [PATCH 1/9] dt-bindings: gpio: add bindings for the QIXIS FPGA based " Ioana Ciornei
2025-07-09 12:14   ` Krzysztof Kozlowski
2025-07-09 13:55     ` Ioana Ciornei
2025-07-09 14:11       ` Krzysztof Kozlowski
2025-07-10 22:01   ` Rob Herring
2025-07-15 12:19     ` Ioana Ciornei
2025-07-09 11:26 ` [PATCH 2/9] dt-bindings: fsl,fpga-qixis-i2c: extend support to also cover the LX2160ARDB FPGA Ioana Ciornei
2025-07-09 12:17   ` Krzysztof Kozlowski
2025-07-09 14:31     ` Ioana Ciornei
2025-07-10 22:04     ` Rob Herring
2025-07-09 11:26 ` [PATCH 3/9] mfd: simple-mfd-i2c: add compatible string for LX2160ARDB Ioana Ciornei
2025-07-09 11:26 ` [PATCH 4/9] gpio: regmap: add the .get_direction() callback Ioana Ciornei
2025-07-09 15:01   ` Michael Walle
2025-07-14 13:17     ` Ioana Ciornei
2025-07-09 15:09   ` Andrew Lunn
2025-07-09 15:36     ` Michael Walle
2025-07-10  9:23     ` Ioana Ciornei
2025-07-11 17:43     ` Linus Walleij
2025-07-11 17:45       ` Andrew Lunn
2025-07-11 18:06         ` Linus Walleij
2025-07-14  6:36           ` Michael Walle
2025-07-15 11:38             ` Ioana Ciornei
2025-07-15 12:51               ` Michael Walle [this message]
2025-07-09 11:26 ` [PATCH 5/9] drivers: gpio: add QIXIS FPGA GPIO controller Ioana Ciornei
2025-07-09 15:17   ` Andrew Lunn
2025-07-10 10:01     ` Ioana Ciornei
2025-07-10 14:12       ` Andrew Lunn
2025-07-09 11:26 ` [PATCH 6/9] arm64: dts: lx2160a-rdb: describe the QIXIS FPGA and two child GPIO controllers Ioana Ciornei
2025-07-09 11:26 ` [PATCH 7/9] arm64: dts: ls1046a-qds: describe the FPGA based GPIO controller Ioana Ciornei
2025-07-09 11:26 ` [PATCH 8/9] arm64: dts: lx2160a-rdb: fully describe the two SFP+ cages Ioana Ciornei
2025-07-09 11:26 ` [PATCH 9/9] arm64: dts: ls1046a-qds: describe the two on-board " Ioana Ciornei

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=DBCN4NYM5NF3.S9SFP077EKFK@kernel.org \
    --to=mwalle@kernel.org \
    --cc=Frank.Li@nxp.com \
    --cc=andrew@lunn.ch \
    --cc=brgl@bgdev.pl \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=ioana.ciornei@nxp.com \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=shawnguo@kernel.org \
    /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.