On 8/29/21 3:03 AM, Luke Jones wrote:
On Sun, Aug 29 2021 at 11:57:55 +0200, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
Hi Luke,
On 8/29/21 9:14 AM, Luke D. Jones wrote:
Add support for custom fan curves found on some ASUS ROG laptops.
- V1
+ Initial patch work
- V2
+ Don't fail and remove wmi driver if error from
asus_wmi_evaluate_method_buf() if error is -ENODEV
- V3
+ Store the "default" fan curves
+ Call throttle_thermal_policy_write() if a curve is erased to ensure
that the factory default for a profile is applied again
- V4
+ Do not apply default curves by default. Testers have found that the
default curves don't quite match actual no-curve behaviours
+ Add method to enable/disable curves for each profile
- V5
+ Remove an unrequired function left over from previous iterations
+ Ensure default curves are applied if user writes " " to a curve path
+ Rename "active_fan_curve_profiles" to "enabled_fan_curve_profiles" to
better reflect the behavious of this setting
+ Move throttle_thermal_policy_write_*pu_curves() and rename to
fan_curve_*pu_write()
+ Merge fan_curve_check_valid() and fan_curve_write()
+ Remove some leftover debug statements
- V6
+ Refactor data structs to store array or u8 instead of strings.
This affects the entire patch except the enabled_fan_curves block
+ Use sysfs_match_string in enabled_fan_curve block
+ Add some extra comments to describe things
+ Allow some variation in how fan curve input can be formatted
+ Use SENSOR_DEVICE_ATTR_2_RW() to reduce the amount of lines per
fan+profile combo drastically
Thank you for your continued work on this. I read in the discussin of v5
that you discussed using the standard auto_point#_pwm, auto_point#_temp
pairs. I see here that you have decided to not go that route, may I ask
why ?
Sure, primary reason is because the RPM for the fans is in percentage so it didn't really make sense to me to use that format.
Also if the max for that is 255 then I'd need to introduce scaling to make match what the ACPI method expects (max 100). But yeah, auto_point#_pwm changes the meaning.
Bad argument. That is true for other controllers as well. You could
just scale it up and down as needed.
The whole point of an ABI is that it is standardized.
If others would [be permitted to] follow your line of argument,
we would not have a useful ABI because "my chip provides/needs
data in some other format".
Guenter