All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: "Gregory CLEMENT" <gregory.clement@free-electrons.com>,
	"Timur Tabi" <timur@codeaurora.org>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"Antoine Ténart" <antoine.tenart@free-electrons.com>,
	"Miquèl Raynal" <miquel.raynal@free-electrons.com>,
	"Nadav Haklai" <nadavh@marvell.com>
Subject: Re: linux-next regression caused by "gpiolib: request the gpio before querying its direction"
Date: Thu, 31 Aug 2017 09:18:12 +0200	[thread overview]
Message-ID: <20170831091812.6f7d417e@windsurf.lan> (raw)
In-Reply-To: <CACRpkdbxdkHukALfYMrM7w=1KNJKLBhGebbkEpMb3C3+nCfWOA@mail.gmail.com>

Hello,

On Thu, 31 Aug 2017 09:08:45 +0200, Linus Walleij wrote:

> > However, even the "reference" pinctrl-single.c implementation does it,
> > in pcs_request_gpio().  
> 
> Yeah so we have unclear semantics on this and that is just a fact of
> life. It's a bit of pain as maintainer because I sometimes don't know
> what to do when something makes superficial sense and the only thing
> I can do is to toss it into linux-next and see what happens.
> 
> Look what happened :D
> 
> If the semantics should be changed, all drivers must be changed consistently
> in a larger patch series, so until then, we revert this and leave it as it is.
> 
> Now this is reverted anyways.

Thanks for taking action on this. Regarding the semantics, the
kerneldoc comment says:

 * @gpio_request_enable: requests and enables GPIO on a certain pin.
 *      Implement this only if you can mux every pin individually as GPIO. The
 *      affected GPIO range is passed along with an offset(pin number) into that
 *      specific GPIO range - function selectors and pin groups are orthogonal
 *      to this, the core will however make sure the pins do not collide.
 * @gpio_disable_free: free up GPIO muxing on a certain pin, the reverse of
 *      @gpio_request_enable

So the ->gpio_request_enable() comment is not super clear, but the
->gpio_disable_free() explicitly says "free up GPIO muxing", which
would mean the ->gpio_request_enable() hook has muxed the pin as GPIO.
Things could be clearer, but I believe it's quite clear the intent is
that the ->gpio_request_enable() should mux the pin as a GPIO at the HW
level.

Note that on my side, I've however not been convinced by this semantic:
I find it weird that when you request a GPIO, it gets automatically
muxed as such, without an explicit pinctrl configuration in the DT.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

WARNING: multiple messages have this Message-ID (diff)
From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
To: linux-arm-kernel@lists.infradead.org
Subject: linux-next regression caused by "gpiolib: request the gpio before querying its direction"
Date: Thu, 31 Aug 2017 09:18:12 +0200	[thread overview]
Message-ID: <20170831091812.6f7d417e@windsurf.lan> (raw)
In-Reply-To: <CACRpkdbxdkHukALfYMrM7w=1KNJKLBhGebbkEpMb3C3+nCfWOA@mail.gmail.com>

Hello,

On Thu, 31 Aug 2017 09:08:45 +0200, Linus Walleij wrote:

> > However, even the "reference" pinctrl-single.c implementation does it,
> > in pcs_request_gpio().  
> 
> Yeah so we have unclear semantics on this and that is just a fact of
> life. It's a bit of pain as maintainer because I sometimes don't know
> what to do when something makes superficial sense and the only thing
> I can do is to toss it into linux-next and see what happens.
> 
> Look what happened :D
> 
> If the semantics should be changed, all drivers must be changed consistently
> in a larger patch series, so until then, we revert this and leave it as it is.
> 
> Now this is reverted anyways.

Thanks for taking action on this. Regarding the semantics, the
kerneldoc comment says:

 * @gpio_request_enable: requests and enables GPIO on a certain pin.
 *      Implement this only if you can mux every pin individually as GPIO. The
 *      affected GPIO range is passed along with an offset(pin number) into that
 *      specific GPIO range - function selectors and pin groups are orthogonal
 *      to this, the core will however make sure the pins do not collide.
 * @gpio_disable_free: free up GPIO muxing on a certain pin, the reverse of
 *      @gpio_request_enable

So the ->gpio_request_enable() comment is not super clear, but the
->gpio_disable_free() explicitly says "free up GPIO muxing", which
would mean the ->gpio_request_enable() hook has muxed the pin as GPIO.
Things could be clearer, but I believe it's quite clear the intent is
that the ->gpio_request_enable() should mux the pin as a GPIO at the HW
level.

Note that on my side, I've however not been convinced by this semantic:
I find it weird that when you request a GPIO, it gets automatically
muxed as such, without an explicit pinctrl configuration in the DT.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

  reply	other threads:[~2017-08-31  7:18 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-30  9:24 linux-next regression caused by "gpiolib: request the gpio before querying its direction" Thomas Petazzoni
2017-08-30  9:24 ` Thomas Petazzoni
2017-08-30 12:31 ` Timur Tabi
2017-08-30 12:31   ` Timur Tabi
2017-08-30 13:59   ` Gregory CLEMENT
2017-08-30 13:59     ` Gregory CLEMENT
2017-08-30 14:17     ` Thomas Petazzoni
2017-08-30 14:17       ` Thomas Petazzoni
2017-08-30 14:22       ` Timur Tabi
2017-08-30 14:22         ` Timur Tabi
2017-08-30 14:32         ` Thomas Petazzoni
2017-08-30 14:32           ` Thomas Petazzoni
2017-08-30 16:24           ` jmondi
2017-08-30 16:24             ` jmondi
2017-08-30 19:38             ` Geert Uytterhoeven
2017-08-30 19:38               ` Geert Uytterhoeven
2017-08-31  7:08       ` Linus Walleij
2017-08-31  7:08         ` Linus Walleij
2017-08-31  7:18         ` Thomas Petazzoni [this message]
2017-08-31  7:18           ` Thomas Petazzoni
2017-08-31  7:30           ` Geert Uytterhoeven
2017-08-31  7:30             ` Geert Uytterhoeven
2017-08-31  9:22             ` Russell King - ARM Linux
2017-08-31  9:22               ` Russell King - ARM Linux
2017-08-31  9:39               ` Thomas Petazzoni
2017-08-31  9:39                 ` Thomas Petazzoni
2017-08-31 18:39                 ` Timur Tabi
2017-08-31 18:39                   ` Timur Tabi
2017-08-31  9:50               ` Geert Uytterhoeven
2017-08-31  9:50                 ` Geert Uytterhoeven
2017-08-31 13:05                 ` Timur Tabi
2017-08-31 13:05                   ` Timur Tabi
2017-08-31 10:08               ` Maxime Ripard
2017-08-31 10:08                 ` Maxime Ripard
2017-08-31  7:04 ` Linus Walleij
2017-08-31  7:04   ` Linus Walleij

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=20170831091812.6f7d417e@windsurf.lan \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=antoine.tenart@free-electrons.com \
    --cc=gregory.clement@free-electrons.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=miquel.raynal@free-electrons.com \
    --cc=nadavh@marvell.com \
    --cc=timur@codeaurora.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.