All of lore.kernel.org
 help / color / mirror / Atom feed
From: cbouatmailru@gmail.com (Anton Vorontsov)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] gpio: Add simple poweroff-gpio driver
Date: Mon, 12 Nov 2012 11:17:08 -0800	[thread overview]
Message-ID: <20121112191708.GA21040@lizard> (raw)
In-Reply-To: <50A146E7.2040608@wwwdotorg.org>

On Mon, Nov 12, 2012 at 11:58:47AM -0700, Stephen Warren wrote:
[...]
> >>>>> Unfortunately, not all GPIO bindings support active high/low flags in
> >>>>> the GPIO specifier. As such, the flags there are basically useless.
> >>>>> Other bindings (e.g. IIRC the fixed-regulator binding) have added a
> >>>>> separate active-high property to indicate the GPIO polarity. This
> >>>>> binding should probably follow suite.
> > 
> > Should the gpio driver fix its bindings then?.. Polarity is a quite
> > generic concept of a GPIO, and flags are there for a reason. I'd rather
> > prefer having
> 
> There is no "GPIO driver" to fix; each GPIO driver has its own bindings,
> and unfortunately, some of the GPIO binding authors chose not to include
> any flags cell in the GPIO specifier (e.g. Samsung ARM SoCs IIRC, but
> there are probably more).

They didn't read this? :)

int of_gpio_simple_xlate(struct gpio_chip *gc,
                         const struct of_phandle_args *gpiospec, u32 *flags)
{
        /*
         * We're discouraging gpio_cells < 2, since that way you'll have to
         * write your own xlate function (that will have to retrive the GPIO
         * number and the flags from a single gpio cell -- this is possible,
         * but not recommended).
         */
        if (gc->of_gpio_n_cells < 2) {
                WARN_ON(1);
                return -EINVAL;
        }

They should have gotten the WARN_ON().

If not, if they do have the second cell, then they still can encode the
flags. Just change the bindings in a backwards-compatible way.

And even if they have just one cell, just as the comment above says, they
still can add the polarity flag -- add it into the gpio number specifier.
0x0001 -- GPIO 1, 0x1001 -- GPIO 1, polarity inverted. In the gpio driver
they have to mask the flags (by implementing their own xlate), of course.

A few "broken" (but fixable) drivers/bindings is not the reason change the
whole concept, or declare a long-standing API as 'not suitable for generic
code'. At least it was meant exactly to be suitable for a generic code. :)

Thanks,
Anton.

WARNING: multiple messages have this Message-ID (diff)
From: Anton Vorontsov <cbouatmailru-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
	Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	jm-Pj/HzkgeCk7QXOPxS62xeg@public.gmane.org,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	gmbnomis-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH 1/3] gpio: Add simple poweroff-gpio driver
Date: Mon, 12 Nov 2012 11:17:08 -0800	[thread overview]
Message-ID: <20121112191708.GA21040@lizard> (raw)
In-Reply-To: <50A146E7.2040608-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>

On Mon, Nov 12, 2012 at 11:58:47AM -0700, Stephen Warren wrote:
[...]
> >>>>> Unfortunately, not all GPIO bindings support active high/low flags in
> >>>>> the GPIO specifier. As such, the flags there are basically useless.
> >>>>> Other bindings (e.g. IIRC the fixed-regulator binding) have added a
> >>>>> separate active-high property to indicate the GPIO polarity. This
> >>>>> binding should probably follow suite.
> > 
> > Should the gpio driver fix its bindings then?.. Polarity is a quite
> > generic concept of a GPIO, and flags are there for a reason. I'd rather
> > prefer having
> 
> There is no "GPIO driver" to fix; each GPIO driver has its own bindings,
> and unfortunately, some of the GPIO binding authors chose not to include
> any flags cell in the GPIO specifier (e.g. Samsung ARM SoCs IIRC, but
> there are probably more).

They didn't read this? :)

int of_gpio_simple_xlate(struct gpio_chip *gc,
                         const struct of_phandle_args *gpiospec, u32 *flags)
{
        /*
         * We're discouraging gpio_cells < 2, since that way you'll have to
         * write your own xlate function (that will have to retrive the GPIO
         * number and the flags from a single gpio cell -- this is possible,
         * but not recommended).
         */
        if (gc->of_gpio_n_cells < 2) {
                WARN_ON(1);
                return -EINVAL;
        }

They should have gotten the WARN_ON().

If not, if they do have the second cell, then they still can encode the
flags. Just change the bindings in a backwards-compatible way.

And even if they have just one cell, just as the comment above says, they
still can add the polarity flag -- add it into the gpio number specifier.
0x0001 -- GPIO 1, 0x1001 -- GPIO 1, polarity inverted. In the gpio driver
they have to mask the flags (by implementing their own xlate), of course.

A few "broken" (but fixable) drivers/bindings is not the reason change the
whole concept, or declare a long-standing API as 'not suitable for generic
code'. At least it was meant exactly to be suitable for a generic code. :)

Thanks,
Anton.

  reply	other threads:[~2012-11-12 19:17 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-11 16:21 [PATCH 0/3] GPIO driver to turn power off Andrew Lunn
2012-11-11 16:21 ` Andrew Lunn
2012-11-11 16:21 ` [PATCH 1/3] gpio: Add simple poweroff-gpio driver Andrew Lunn
2012-11-11 16:21   ` Andrew Lunn
2012-11-11 22:03   ` Stephen Warren
2012-11-11 22:03     ` Stephen Warren
2012-11-12  8:25     ` Andrew Lunn
2012-11-12  8:25       ` Andrew Lunn
2012-11-12 16:17       ` Stephen Warren
2012-11-12 16:17         ` Stephen Warren
2012-11-12 18:19         ` Andrew Lunn
2012-11-12 18:19           ` Andrew Lunn
2012-11-12 18:43           ` Anton Vorontsov
2012-11-12 18:43             ` Anton Vorontsov
2012-11-12 18:58             ` Stephen Warren
2012-11-12 18:58               ` Stephen Warren
2012-11-12 19:17               ` Anton Vorontsov [this message]
2012-11-12 19:17                 ` Anton Vorontsov
2012-11-15 10:35               ` Linus Walleij
2012-11-15 10:35                 ` Linus Walleij
2012-11-15 10:59                 ` Anton Vorontsov
2012-11-15 10:59                   ` Anton Vorontsov
2012-11-15 11:10                   ` Linus Walleij
2012-11-15 11:10                     ` Linus Walleij
2012-11-21 13:17                     ` Grant Likely
2012-11-21 13:17                       ` Grant Likely
2012-11-15 18:00                   ` Stephen Warren
2012-11-15 18:00                     ` Stephen Warren
2012-11-12  1:00   ` Linus Walleij
2012-11-12  1:00     ` Linus Walleij
2012-11-12  1:12     ` Anton Vorontsov
2012-11-12  1:12       ` Anton Vorontsov
2012-11-12  6:07       ` Andrew Lunn
2012-11-12  6:07         ` Andrew Lunn
2012-11-12  6:53         ` Anton Vorontsov
2012-11-12  6:53           ` Anton Vorontsov
2012-11-15 18:05   ` Grant Likely
2012-11-15 18:05     ` Grant Likely
2012-11-15 18:11     ` Jamie Lentin
2012-11-15 18:11       ` Jamie Lentin
2012-11-15 18:21       ` Grant Likely
2012-11-15 18:21         ` Grant Likely
2012-11-21 13:20         ` Grant Likely
2012-11-21 13:20           ` Grant Likely
2012-11-11 16:21 ` [PATCH 2/3] ARM: Kirkwood: Convert DNSKW to use gpio-poweroff Andrew Lunn
2012-11-11 16:21   ` Andrew Lunn
2012-11-11 16:21 ` [PATCH 3/3] ARM: Kirkwood: Convert IB62x0 " Andrew Lunn
2012-11-11 16:21   ` Andrew Lunn

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=20121112191708.GA21040@lizard \
    --to=cbouatmailru@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.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.