linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dong Aisheng <dongas86@gmail.com>
To: jmondi <jacopo@jmondi.org>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Andy Shevchenko <andy.shevchenko@gmail.com>,
	Jacopo Mondi <jacopo+renesas@jmondi.org>,
	Chris Brandt <Chris.Brandt@renesas.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	Linux-Renesas <linux-renesas-soc@vger.kernel.org>,
	"linux-gpio@vger.kernel.org" <linux-gpio@vger.kernel.org>,
	devicetree <devicetree@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Dong Aisheng <aisheng.dong@nxp.com>
Subject: Re: [PATCH v5 01/10] pinctrl: generic: Add bi-directional and output-enable
Date: Mon, 19 Jun 2017 23:43:33 +0800	[thread overview]
Message-ID: <CAA+hA=SKfgW3N6MbZbRvXD__na1Ts3Dpam=m0z78jj7FsRFESg@mail.gmail.com> (raw)
In-Reply-To: <20170615111124.GD22030@w540>

Hi Jmondi,

On Thu, Jun 15, 2017 at 7:11 PM, jmondi <jacopo@jmondi.org> wrote:
> Hi Dong,
>
> On Tue, Jun 13, 2017 at 02:25:08PM +0800, Dong Aisheng wrote:
>> On Mon, Jun 12, 2017 at 5:44 PM, jmondi <jacopo@jmondi.org> wrote:
>> > Fair enough :)
>> >
>> > I'll try to keep this short: I don't like "output-enable", and at the
>> > same time I don't think "output-high" and "output-low" fit well for
>> > this purpose, as they electrically means something different from what
>> > our (and IMX) use case is: enabling/disabling input/output
>> > buffers internal to pin controller/gpio block HW and not driving a value
>> > there.
>> >
>> > This seems clear to me from the "GPIO mode pitfalls" section of
>> > pinctrl.txt documentation examples and from the fact that generic bindings
>> > did not expose an "output" flag because if you drive an output line, you
>> > reasonably either drive it high or low.
>> >
>> > Unfortunately I cannot convince myself that the same reasons apply
>> > to the input use case.  Enabling input on a pin implies the pinctrl/gpio driver
>> > has to enable any input buffer required to use that pin as a properly
>> > working input line, and enabling an input buffer implies being able to sense
>> > the line value from there, so I don't see that much use for "input-buffer-enable"
>> > alone.
>> >
>> > So, even if bindings could look a bit weird as there won't be a direct
>> > matching between properties names used to enable input/output buffers,
>> > my vote is to add "output-buffer-enable" only, and keep using the
>> > already there "input-enable" properties for the input use case.
>> >
>>
>> Yes, it may be a bit weird.
>> I'm not pad internal details expert and can't tell much difference between
>> output-enable and output-buffer-enable.
>> I just feel a bit confuse if only using output-buffer-enable.
>
> Yes it is, and I actually like your proposal, I was just trying to
> make sure I was not confusing the property semantic with its
> real-world effect.
>
> If no one as different opinions on this, I can send a patch later to
> add output-enable only, or since you have almost done it down here you
> can do the same resusing what you have proposed below.

Please feel free to do it.
Just one thing, may be we could also add PIN_CONFIG_OUTPUT_ENABLE
as well.

>>
>> If enable both input and output, it becomes:
>> pinctrl_xxx: gpios_xxx_grp {
>>         pins = <
>>                 ULP1_PAD_PTD0__PTD0
>>         >;
>>         input-enable;
>>         output-buffer-enable;
>>         bias-pull-up;
>> };
>>
>> How about still use output-enable in pairs to input-enable but explain more
>> in comments?
>> Aslo update 'input-enable' comment to 'enable input buffer'.
>> e.g.
>> diff --git a/drivers/pinctrl/pinconf-generic.c
>> b/drivers/pinctrl/pinconf-generic.c
>> index 720a19f..96c83a4 100644
>> --- a/drivers/pinctrl/pinconf-generic.c
>> +++ b/drivers/pinctrl/pinconf-generic.c
>> @@ -172,6 +172,7 @@ static const struct pinconf_generic_params dt_params[] = {
>>         { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
>>         { "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 },
>>         { "low-power-enable", PIN_CONFIG_LOW_POWER_MODE, 1 },
>> +       { "output-enable", PIN_CONFIG_OUTPUT_ENABLE, 1 },
>>         { "output-high", PIN_CONFIG_OUTPUT, 1, },
>>         { "output-low", PIN_CONFIG_OUTPUT, 0, },
>>         { "power-source", PIN_CONFIG_POWER_SOURCE, 0 },
>> diff --git a/include/linux/pinctrl/pinconf-generic.h
>> b/include/linux/pinctrl/pinconf-generic.h
>> index 7620eb1..d30f4fe 100644
>> --- a/include/linux/pinctrl/pinconf-generic.h
>> +++ b/include/linux/pinctrl/pinconf-generic.h
>> @@ -59,9 +59,9 @@
>>   *     which means it will wait for signals to settle when reading inputs. The
>>   *     argument gives the debounce time in usecs. Setting the
>>   *     argument to zero turns debouncing off.
>> - * @PIN_CONFIG_INPUT_ENABLE: enable the pin's input.  Note that this does not
>> - *     affect the pin's ability to drive output.  1 enables input, 0 disables
>> - *     input.
>> + * @PIN_CONFIG_INPUT_ENABLE: enable the pin's input buffer.  Note
>> that this does
>> + *     not affect the pin's ability to drive output.
>> + *     1 enables input, 0 disables input.
>
> I would not mention the "input buffer" here, as enabling input implies enabling
> the buffer if you want to read values from there. Actually I guess
> there may be platforms where buffer enabling may be implicit, so I
> would leave this out and let drivers handle it internally.
>

I'm fine with it.

Regards
Dong Aisheng

>>   * @PIN_CONFIG_INPUT_SCHMITT: this will configure an input pin to run in
>>   *     schmitt-trigger mode. If the schmitt-trigger has adjustable hysteresis,
>>   *     the threshold value is given on a custom format as argument when
>> @@ -73,6 +73,9 @@
>>   *     operation, if several modes of operation are supported these can be
>>   *     passed in the argument on a custom form, else just use argument 1
>>   *     to indicate low power mode, argument 0 turns low power mode off.
>> + * @PIN_CONFIG_OUTPUT_ENABLE: only enable the pin's output buffer, not driving
>> + *     a value.
>> + *     1 enables output buffer, 0 disables output buffer.
>>   * @PIN_CONFIG_OUTPUT: this will configure the pin as an output. Use argument
>>   *     1 to indicate high level, argument 0 to indicate low level. (Please
>>   *     see Documentation/pinctrl.txt, section "GPIO mode pitfalls" for a
>>
>> Or
>> invent both input-buffer-enable and output-buffer-enable and
>> deprecated input-enable?
>>
>> Andy,
>> how about your comments?
>>
>> Regards
>> Dong Aisheng
>>
>> > Thanks
>> >    j
>> >
>> >>
>> >> Yours,
>> >> Linus Walleij

  reply	other threads:[~2017-06-19 15:43 UTC|newest]

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-27  8:19 [PATCH v5 00/10] Renesas RZ/A1 pin and gpio controller Jacopo Mondi
2017-04-27  8:19 ` [PATCH v5 01/10] pinctrl: generic: Add bi-directional and output-enable Jacopo Mondi
     [not found]   ` <1493281194-5200-2-git-send-email-jacopo+renesas-AW8dsiIh9cEdnm+yROfE0A@public.gmane.org>
2017-04-27 14:56     ` Andy Shevchenko
     [not found]       ` <CAHp75Vcy1OE+9htFx9k3kQhGARQPT1C0gg3SEKZd7ULu_vkUMA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-28  8:32         ` Linus Walleij
2017-04-28 10:09           ` Geert Uytterhoeven
2017-05-07  7:50             ` Linus Walleij
2017-04-28 12:07           ` Chris Brandt
2017-04-28 12:15             ` Andy Shevchenko
2017-04-28 13:18               ` Chris Brandt
     [not found]                 ` <SG2PR06MB11658EC3A3A80C57E6F539AC8A130-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-04-28 14:53                   ` Andy Shevchenko
2017-04-28 15:16                     ` Chris Brandt
2017-04-28 15:37                       ` Andy Shevchenko
2017-04-28 16:46                         ` Chris Brandt
2017-05-07  7:52                     ` Linus Walleij
2017-05-08 16:01                       ` jmondi
2017-05-08 16:08                         ` Andy Shevchenko
2017-05-08 17:02                           ` Chris Brandt
     [not found]                             ` <SG2PR06MB1165C1109F74DF1F15E171D48AEE0-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-05-08 18:26                               ` Andy Shevchenko
2017-05-08 20:05                                 ` Chris Brandt
     [not found]                           ` <CAHp75VfOMKOhpkec+htA6DRQhivpSmNXy1=Ayig1W+ZC84gTLw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-05-08 17:25                             ` jmondi
2017-05-08 17:47                               ` Andy Shevchenko
2017-05-09  9:55                                 ` jmondi
2017-05-08 21:19                               ` Linus Walleij
2017-05-09 10:54                                 ` Geert Uytterhoeven
2017-05-12  9:00                                   ` Linus Walleij
2017-05-12  9:04                                   ` Linus Walleij
     [not found]                                     ` <CACRpkdYsE1oeDp1HnYAFMKG2iPTg06cAtD41vxrmZPP70MJQdA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-05-12 11:11                                       ` Geert Uytterhoeven
2017-05-12 12:13                                         ` Chris Brandt
2017-05-12 12:25                                           ` Geert Uytterhoeven
2017-05-12 12:57                                             ` Chris Brandt
2017-05-12 11:44                                     ` Chris Brandt
2017-05-23 10:08                                 ` Dong Aisheng
     [not found]                                   ` <CAA+hA=Q9hwe7_xL440Reoi7z7m8-SScZ5E057419KSA7dQK=tQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-05-23 18:37                                     ` jmondi
2017-05-29  8:45                                       ` Linus Walleij
2017-05-29 10:42                                         ` jmondi
2017-05-30 14:12                                           ` Chris Brandt
2017-06-09  7:26                                           ` Dong Aisheng
2017-06-09  7:50                                             ` jmondi
2017-06-11 21:45                                               ` Linus Walleij
     [not found]                                                 ` <CACRpkdZ=hNJLyV94FyRBSR3Dk8NLe-jEo3qbUKDya6ruqG3KNQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-06-12  9:44                                                   ` jmondi
2017-06-13  6:25                                                     ` Dong Aisheng
2017-06-15 11:11                                                       ` jmondi
2017-06-19 15:43                                                         ` Dong Aisheng [this message]
2017-04-27  8:19 ` [PATCH v5 03/10] pinctrl: Renesas RZ/A1 pin and gpio controller Jacopo Mondi
2017-04-27  8:37   ` Geert Uytterhoeven
2017-04-27  8:19 ` [PATCH v5 06/10] arm: dts: r7s72100: Add pin controller node Jacopo Mondi
     [not found] ` <1493281194-5200-1-git-send-email-jacopo+renesas-AW8dsiIh9cEdnm+yROfE0A@public.gmane.org>
2017-04-27  8:19   ` [PATCH v5 02/10] pinctrl: generic: Add macros to unpack properties Jacopo Mondi
     [not found]     ` <1493281194-5200-3-git-send-email-jacopo+renesas-AW8dsiIh9cEdnm+yROfE0A@public.gmane.org>
2017-04-27  8:37       ` Geert Uytterhoeven
2017-04-28  8:16     ` Linus Walleij
2017-04-28 10:06       ` Geert Uytterhoeven
     [not found]       ` <CACRpkdbkBtJGJ_5MVy2QSAa0zcKVm=_H+vC_kH4AUcX58TiaLg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-28 12:49         ` jmondi
2017-04-28 16:23       ` Andy Shevchenko
2017-04-27  8:19   ` [PATCH v5 04/10] dt-bindings: pinctrl: Add RZ/A1 bindings doc Jacopo Mondi
2017-04-27  8:37     ` Geert Uytterhoeven
     [not found]     ` <1493281194-5200-5-git-send-email-jacopo+renesas-AW8dsiIh9cEdnm+yROfE0A@public.gmane.org>
2017-04-28 21:03       ` Rob Herring
2017-04-27  8:19   ` [PATCH v5 05/10] arm: dts: dt-bindings: Add Renesas RZ/A1 pinctrl header Jacopo Mondi
2017-04-27  8:38     ` Geert Uytterhoeven
2017-04-28  5:19       ` Simon Horman
2017-04-27  8:19   ` [PATCH v5 07/10] arm: dts: genmai: Add SCIF2 pin group Jacopo Mondi
2017-04-28  5:21     ` Simon Horman
2017-04-27  8:19   ` [PATCH v5 08/10] arm: dts: genmai: Add RIIC2 " Jacopo Mondi
2017-04-27  8:19 ` [PATCH v5 09/10] arm: dts: genmai: Add user led device nodes Jacopo Mondi
2017-04-27  8:19 ` [PATCH v5 10/10] arm: dts: genmai: Add ethernet pin group Jacopo Mondi
2017-04-27  9:56   ` Geert Uytterhoeven
2017-04-27 10:48     ` Chris Brandt
2017-04-28  5:22       ` Simon Horman
2017-04-28  7:18       ` Geert Uytterhoeven
     [not found]         ` <CAMuHMdU2CvipQQQ8-wxsiniHZJQmUMHv-t52Pw=sHD3YTd7Yug-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-04-28 14:48           ` Chris Brandt
     [not found]             ` <SG2PR06MB11650F50D93653212039A4348A130-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-05-05 12:06               ` Linus Walleij
2017-05-05 12:20                 ` Geert Uytterhoeven
2017-05-05 12:45                 ` Chris Brandt
     [not found]                   ` <SG2PR06MB1165D80A4642F5A2F27FB6AA8AEB0-ESzmfEwOt/xoAsOJh7vwSm0DtJ1/0DrXvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-05-11 13:48                     ` Linus Walleij
2017-04-28  8:49   ` Linus Walleij
2017-04-28 13:50     ` Chris Brandt
2017-04-27  8:42 ` [PATCH v5 00/10] Renesas RZ/A1 pin and gpio controller Geert Uytterhoeven
2017-04-28  5:22   ` Simon Horman
2017-04-28  7:24   ` jmondi
2017-04-28  7:30     ` Geert Uytterhoeven
2017-04-28  7:31     ` Simon Horman

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='CAA+hA=SKfgW3N6MbZbRvXD__na1Ts3Dpam=m0z78jj7FsRFESg@mail.gmail.com' \
    --to=dongas86@gmail.com \
    --cc=Chris.Brandt@renesas.com \
    --cc=aisheng.dong@nxp.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=geert+renesas@glider.be \
    --cc=jacopo+renesas@jmondi.org \
    --cc=jacopo@jmondi.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@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 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).