public inbox for linux-hwmon@vger.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Trent Piepho <tpiepho@impinj.com>
Cc: "m.felsch@pengutronix.de" <m.felsch@pengutronix.de>,
	"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: Tue, 30 Oct 2018 13:11:47 -0700	[thread overview]
Message-ID: <20181030201147.GB28185@roeck-us.net> (raw)
In-Reply-To: <1540928050.30311.94.camel@impinj.com>

On Tue, Oct 30, 2018 at 07:34:11PM +0000, Trent Piepho wrote:
> On Tue, 2018-10-30 at 18:00 +0100, Marco Felsch wrote:
> > On 18-10-30 06:13, Guenter Roeck wrote:
> > > On 10/30/18 3:47 AM, Marco Felsch wrote:
> > > > 
> > hwmon-gpio-simple sounds ok for me.
> > 
> > > The most difficult part of such a driver would probably be to define acceptable
> > > devicetree properties.
> > 
> > That's true! One possible solution could be:
> > 
> > hwmon_dev {
> > 	compatible = "hwmon-gpio-simple";
> > 	name = "gpio-generic-hwmon";
> > 	update-interval-ms = 100;
> > 
> > 	hwmon-gpio-simple,dev@0 {
> > 		reg = <0>;
> > 		gpio = <gpio3 15 GPIO_ACTIVE_LOW>;
> > 		hwmon-gpio-simple,type = "in";
> > 		hwmon-gpio-simple,report = "crit_alarm";
> > 	};
> > 
> > 	hwmon-gpio-simple,dev@1 {
> > 		reg = <1>;
> > 		gpio = <gpio3 19 GPIO_ACTIVE_LOW>;
> > 		hwmon-gpio-simple,type = "temp";
> > 		hwmon-gpio-simple,report = "alarm";
> > 	};
> > };
> 
> Here's some options:
> 
> hwmon_dev {
> 	/* Orthogonal to existing "gpio-fan" binding. */
> 	compatible = "gpio-alarm";
> 	/* Standard DT property for GPIO users is [<name>-]gpios */
> 	alarm-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>,
> 	              <&gpio3 19 GPIO_ACTIVE_LOW>;
> 	/* A <prop>-names property is also a DT standard */
>         alarm-gpios-names = "in0", "temp0";

temp1, and it would have to specify which alarm, but, yes, that would
be better.

> };
> 
> The driver can create hwmon alarm attribute(s) based on the name(s).  I
> used "alarm" as it seemed to fit the pattern established by the "fan"
> driver.  Both the gpio-fan and gpio-alarm driver use gpios, but I think
> considering them one driver for that reason does not make sense.
> 
> The names are very Linuxy, something that is not liked in DT bindings. 
> It also doesn't extend well if you need to add more attributes to each
> alarm.  Here's something that's more like what I did for the gpio-leds
> binding.
> 
> hwmon_dev {
> 	compatible = "gpio-alarm";
> 	voltage@0 {
> 		label = "Battery Voltage Low";
> 		type = "voltage";
> 		alarm-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
> 	};
> 	cputemp@0 {
> 		label = "CPU Temperature Critical";
> 		type = "temperature";
> 		interrupt-parent = <&gpio3>;
> 		interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
> 	};

Even better, though the type of alarm (generic, min, max, lcrit, crit,
cap, emergency, fault) is still needed. That needs to be specified by
some explicit means, not with a label (though having a label is ok).

There could also be more than one alarm per sensor (eg in0_lcrit_alarm,
in0_min_alarm, in0_max_alarm, in0_crit_alarm), all of which would share
a single label. Something like

#define GPIO_ALARM_GENERIC	0
#define GPIO_ALARM_MIN		1
...

	voltage@0 {
		label = "Battery Voltage";
		type = "voltage";
		alarm-type = <GPIO_ALARM_LCRIT, GPIO_ALARM_CRIT>;
		alarm-gpios = <&gpio3 15 GPIO_ACTIVE_LOW
				&gpio3 16 GPIO_ACTIVE_LOW>;
	};

with some better (acceptable) values for "alarm-type" and the actual fields. 

Guenter

> };
> 
> Supporting interrupts instead of just a gpio would allow for edge
> triggering.      
> 
> I can also see that someone might want to create some kind of time
> based hysteresis for circuits that don't have that.  While it would be
> very easy to add a "linux,debounce = <1000>;" property, I imagine that
> would be rejected as configuration in the DT binding.

  reply	other threads:[~2018-10-31  5:06 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 [this message]
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
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=20181030201147.GB28185@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=dmitry.torokhov@gmail.com \
    --cc=jdelvare@suse.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=m.felsch@pengutronix.de \
    --cc=tpiepho@impinj.com \
    /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