public inbox for linux-hwmon@vger.kernel.org
 help / color / mirror / Atom feed
From: Trent Piepho <tpiepho@impinj.com>
To: "m.felsch@pengutronix.de" <m.felsch@pengutronix.de>
Cc: "linux@roeck-us.net" <linux@roeck-us.net>,
	"dmitry.torokhov@gmail.com" <dmitry.torokhov@gmail.com>,
	"linux-hwmon@vger.kernel.org" <linux-hwmon@vger.kernel.org>,
	"jdelvare@suse.com" <jdelvare@suse.com>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>
Subject: Re: [PATCH v2 2/2] hwmon: add generic GPIO brownout support
Date: Fri, 2 Nov 2018 23:05:20 +0000	[thread overview]
Message-ID: <1541199919.30311.224.camel@impinj.com> (raw)
In-Reply-To: <20181102063803.blsavuxhi5i2vgog@pengutronix.de>

On Fri, 2018-11-02 at 07:38 +0100, Marco Felsch wrote:
> On 18-11-01 18:21, Trent Piepho wrote:
> > On Thu, 2018-11-01 at 08:14 -0700, Guenter Roeck wrote:
> > > On Thu, Nov 01, 2018 at 03:53:12PM +0100, Marco Felsch wrote:
> > > > 
> > > > > 
> > > > > Isn't that configurable with devicetree flags ? I don't think a driver
> > > > > should get involved in deciding the active edge.
> > > > 
> > > > No, AFAIK we can only specify the active level types for gpios. This
> > > > made sense to me, because I saw no gpio-controller which support
> > > > 'edge-level' reporting (however it will be called) currently.
> > 
> > Interrupts types are specific to each interrupt controller, but there
> > is a standard set of flags that, AFAIK, every Linux controller uses. 
> > These include IRQ_TYPE_EDGE_BOTH, IRQ_TYPE_EDGE_RISING,
> > IRQ_TYPE_LEVEL_HIGH, and so on.
> > 
> > So you can support hardware that is inherently edge or level triggered.
> 
> I've been spoken about gpio-controllers and AFAIK there are no edge
> types. Interrupt-Controller are a different story, as you pointed out
> above.

You can use edge triggering with gpios.  Just try writing "rising" or
"falling" into /sys/class/gpio/gpioX/edge

It's level you can't do sysfs.  The irq masking necessary isn't
supported to get it to work in a useful way, i.e. without a live-lock
IRQ loop.

But you can in the kernel.

Normal process is to call gpiod_to_irq() and then use standard IRQF
flags to select level, edge, etc.

> Too fast state changes sounds like a glitch. Anyway, IMHO we should

Linux has no hard real-time guarantee about interrupt latency, so
there's no way you can be sure each interrupt is processed before the
next.

Trying to track level by interrupting on both edges doesn't work well. 
You get out of sync and stuck waiting for something that's already
happened.

> support support both interrupts and gpios. If the users use gpios they
> have to poll the gpio, as Guenter pointed out, else we register a
> irq-handler.

If gpio(d?)_to_irq returns a valid value, why poll?  It usually works
to call this.  Plenty of call sites in the kernel that use it and don't
fallback to polling if it doesn't work.

I think it's fine to call gpiod_to_irq() and fail if that fails, and
let a polling fallback be written if and when the need arises.

  reply	other threads:[~2018-11-02 23:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-29 14:35 [PATCH v2 0/2] Add GPIO brownout detection support Marco Felsch
2018-10-29 14:35 ` [PATCH v2 1/2] dt-binding: hwmon: add gpio-brownout bindings Marco Felsch
2018-10-29 14:35 ` [PATCH v2 2/2] hwmon: add generic GPIO brownout support Marco Felsch
2018-10-29 19:52   ` Guenter Roeck
2018-10-29 21:16     ` Trent Piepho
2018-10-30  1:12       ` Guenter Roeck
2018-10-30 10:47         ` Marco Felsch
2018-10-30 13:13           ` Guenter Roeck
2018-10-30 17:00             ` Marco Felsch
2018-10-30 19:34               ` Trent Piepho
2018-10-30 20:11                 ` Guenter Roeck
2018-11-01 10:40                   ` Marco Felsch
2018-11-01 13:01                     ` Guenter Roeck
2018-11-01 14:53                       ` Marco Felsch
2018-11-01 15:14                         ` Guenter Roeck
2018-11-01 18:21                           ` Trent Piepho
2018-11-02  6:38                             ` Marco Felsch
2018-11-02 23:05                               ` Trent Piepho [this message]
2018-11-05  8:19                                 ` Marco Felsch
2018-11-06 20:50                                   ` Trent Piepho
2018-11-07  9:35                                     ` Marco Felsch
2018-11-07 18:07                                       ` Trent Piepho
2018-11-01 13:02                     ` Guenter Roeck
2018-11-01 14:58                       ` Marco Felsch
2018-11-01 15:08                         ` Guenter Roeck
2018-11-01 17:41                     ` Trent Piepho
2018-11-02  6:48                       ` Marco Felsch
2018-10-30 19:56               ` Guenter Roeck
2018-11-01  9:44                 ` Marco Felsch
2018-10-30 18:54           ` Trent Piepho
2018-10-30 18:49         ` Trent Piepho
2018-10-30 20:13           ` Guenter Roeck

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=1541199919.30311.224.camel@impinj.com \
    --to=tpiepho@impinj.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jdelvare@suse.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=m.felsch@pengutronix.de \
    /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