From: Guenter Roeck <linux@roeck-us.net>
To: Gianni Vialetto <gianni@rootcube.net>
Cc: nouveau@lists.freedesktop.org, lm-sensors@lm-sensors.org
Subject: Re: [lm-sensors] hwmon: question about the sysfs interface
Date: Mon, 14 Jul 2014 17:25:56 +0000 [thread overview]
Message-ID: <20140714172556.GA3753@roeck-us.net> (raw)
In-Reply-To: <20140714164728.GA1041@elysium.lan>
On Mon, Jul 14, 2014 at 06:47:28PM +0200, Gianni Vialetto wrote:
> Hello guys,
>
> For a patch to this nouveau bug [1] I'm trying to implement the sysfs
> interface for two properties (linear_min and linear_max) nouveau uses
> internally to decide when to raise the fan speed. The initial idea was
> to have them as custom sysfs attributes, but I was advised to try to
> fit them into the hwmon sysfs interface.
>
> And this is when I hit a little roadblock. If my understanding is
> correct (and I'm not ashamed to admit it probably isn't) trip points
> are used to tie together a specific fan speed to a specific
> temperature. Unfortunately nouveau does not quite work that way: those
> two properties above mark the temperature the driver uses to decide
> when to start and stop the *scaling* of the fan speed (from a specific
> minimum value all the way to 100%).
>
> Now, could I strech the trip point definition above to mean that a
> trip point specify a *minimum* value for the fan speed at a specific
> temperature, and that the driver can decide to use an higher speed as
> needed when the temperature goes above the one specified in the trip
> point without fear of breaking some convention/userspace tool that
> expect a constant fan speed? Is this an acceptable/correct usage for
> the interface?
>
For automatic fan control we don't really have a well defined ABI.
Part of the problem is that the mechanisms used by various chips are
quite different.
Please have a look into Documentation/hwmon/nct6775. It is by far
the driver with the most comprehensive fan control mechanisms and
attributes. Would any of the attributes or atribute groups in this
driver meet your needs ? I could imagine that pwm1_target_temp
for the upper temperature limit and pwm1_temp_tolerance for the difference
between upper and lower limit might do. Then there are other attributes
such as pxm1_start, pwm1_floor, pwm1_step, and pwm1_max which you
could use to control pwm values further is that is possible with the
driver.
An alternative would be to use two sets of pwm_auto_point attributes,
where the first set specifies the start pwm limit and the second
specifies the upper temperature and limit. So you would have something
like
pwm1_auto_point1_pwm pwm at low temperature
pwm1_auto_point1_temp low temperature
pwm1_auto_point2_pwm pwm at high temperature
pwm1_auto_point2_temp high temperature
After all, there is no requirement that pwm must exactly match the configured
value; the above only means that the chip uses those values to calculate
the necessary fan speed. In addition to that, you could still have some
of the other attributes as needed, such as pwm1_min, pwm1_max, and so on.
Hope this helps,
Guenter
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
WARNING: multiple messages have this Message-ID (diff)
From: Guenter Roeck <linux@roeck-us.net>
To: Gianni Vialetto <gianni@rootcube.net>
Cc: nouveau@lists.freedesktop.org, lm-sensors@lm-sensors.org
Subject: Re: hwmon: question about the sysfs interface
Date: Mon, 14 Jul 2014 10:25:56 -0700 [thread overview]
Message-ID: <20140714172556.GA3753@roeck-us.net> (raw)
In-Reply-To: <20140714164728.GA1041@elysium.lan>
On Mon, Jul 14, 2014 at 06:47:28PM +0200, Gianni Vialetto wrote:
> Hello guys,
>
> For a patch to this nouveau bug [1] I'm trying to implement the sysfs
> interface for two properties (linear_min and linear_max) nouveau uses
> internally to decide when to raise the fan speed. The initial idea was
> to have them as custom sysfs attributes, but I was advised to try to
> fit them into the hwmon sysfs interface.
>
> And this is when I hit a little roadblock. If my understanding is
> correct (and I'm not ashamed to admit it probably isn't) trip points
> are used to tie together a specific fan speed to a specific
> temperature. Unfortunately nouveau does not quite work that way: those
> two properties above mark the temperature the driver uses to decide
> when to start and stop the *scaling* of the fan speed (from a specific
> minimum value all the way to 100%).
>
> Now, could I strech the trip point definition above to mean that a
> trip point specify a *minimum* value for the fan speed at a specific
> temperature, and that the driver can decide to use an higher speed as
> needed when the temperature goes above the one specified in the trip
> point without fear of breaking some convention/userspace tool that
> expect a constant fan speed? Is this an acceptable/correct usage for
> the interface?
>
For automatic fan control we don't really have a well defined ABI.
Part of the problem is that the mechanisms used by various chips are
quite different.
Please have a look into Documentation/hwmon/nct6775. It is by far
the driver with the most comprehensive fan control mechanisms and
attributes. Would any of the attributes or atribute groups in this
driver meet your needs ? I could imagine that pwm1_target_temp
for the upper temperature limit and pwm1_temp_tolerance for the difference
between upper and lower limit might do. Then there are other attributes
such as pxm1_start, pwm1_floor, pwm1_step, and pwm1_max which you
could use to control pwm values further is that is possible with the
driver.
An alternative would be to use two sets of pwm_auto_point attributes,
where the first set specifies the start pwm limit and the second
specifies the upper temperature and limit. So you would have something
like
pwm1_auto_point1_pwm pwm at low temperature
pwm1_auto_point1_temp low temperature
pwm1_auto_point2_pwm pwm at high temperature
pwm1_auto_point2_temp high temperature
After all, there is no requirement that pwm must exactly match the configured
value; the above only means that the chip uses those values to calculate
the necessary fan speed. In addition to that, you could still have some
of the other attributes as needed, such as pwm1_min, pwm1_max, and so on.
Hope this helps,
Guenter
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
next prev parent reply other threads:[~2014-07-14 17:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-14 16:47 [lm-sensors] hwmon: question about the sysfs interface Gianni Vialetto
2014-07-14 16:47 ` Gianni Vialetto
2014-07-14 17:25 ` Guenter Roeck [this message]
2014-07-14 17:25 ` Guenter Roeck
[not found] ` <20140714172556.GA3753-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2014-07-17 6:29 ` [lm-sensors] " Gianni Vialetto
2014-07-17 6:29 ` Gianni Vialetto
[not found] ` <20140717062929.GA1487-kWTPUKa9AM/hXIiyNabO3w@public.gmane.org>
2014-07-17 6:42 ` Guenter Roeck
2014-07-17 6:42 ` Guenter Roeck
[not found] ` <53C7704E.4060705-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2014-07-17 8:07 ` [lm-sensors] [Nouveau] " Martin Peres
2014-07-17 8:07 ` [lm-sensors] " Martin Peres
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=20140714172556.GA3753@roeck-us.net \
--to=linux@roeck-us.net \
--cc=gianni@rootcube.net \
--cc=lm-sensors@lm-sensors.org \
--cc=nouveau@lists.freedesktop.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.