diff options
author | Scott B | 2021-10-02 09:05:32 -0700 |
---|---|---|
committer | Antoine Viallon | 2021-10-25 10:18:38 +0200 |
commit | 5705d1a16749c69f0cade5f0b20b6305e1a54076 (patch) | |
tree | 588b9983c5cea9e533d2a68b04d9888b36c0f1d6 | |
parent | 7f6975c7e69ef42ecddd265cae593e34e4e845e5 (diff) | |
download | aur-5705d1a16749c69f0cade5f0b20b6305e1a54076.tar.gz |
ROG fan curve patch v14 -> v15
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 4 | ||||
-rw-r--r-- | v15-asus-wmi-Add-support-for-custom-fan-curves.patch (renamed from v14-asus-wmi-Add-support-for-custom-fan-curves.patch) | 97 |
3 files changed, 51 insertions, 54 deletions
@@ -31,7 +31,7 @@ pkgbase = linux-xanmod-rog source = HID-asus-Prevent-Claymore-sending-suspend-event.patch source = HID-asus-Reduce-object-size-by-consolidating-calls.patch source = v5-asus-wmi-Add-support-for-platform_profile.patch - source = v14-asus-wmi-Add-support-for-custom-fan-curves.patch + source = v15-asus-wmi-Add-support-for-custom-fan-curves.patch source = mt76-mt7921-Fix-out-of-order-process-by-invalid-even.patch source = mt76-mt7921-Add-mt7922-support.patch source = 1-1-Bluetooth-btusb-Enable-MSFT-extension-for-Mediatek-Chip-MT7921.patch @@ -68,7 +68,7 @@ pkgbase = linux-xanmod-rog sha256sums = ec317cc2c2c8c1186c4f553fdd010adc013c37600a499802473653fd8e7564df sha256sums = 544464bf0807b324120767d55867f03014a9fda4e1804768ca341be902d7ade4 sha256sums = 4ef12029ea73ca924b6397e1de4911e84d9e77ddaccdab1ef579823d848524e8 - sha256sums = 9d799be6d01a7438ca9999a10137be8fd95348610545c135c6dc9ce2b5afbe29 + sha256sums = 1e547bddf80d201f77da1d876cd280e4d40b377bbd8ebc218f0ba57cd959ff76 sha256sums = 2163cb2e394a013042a40cd3b00dae788603284b20d71e262995366c5534e480 sha256sums = a01cf700d79b983807e2285be1b30df6e02db6adfd9c9027fe2dfa8ca5a74bc9 sha256sums = 9f6b8c3ea6e1c285e0a7efda4d743dbae343bc6ee7ad599a4ab7d380c750bc83 @@ -127,7 +127,7 @@ source=("https://cdn.kernel.org/pub/linux/kernel/v${_branch}/linux-${_major}.tar "HID-asus-Prevent-Claymore-sending-suspend-event.patch" # " "HID-asus-Reduce-object-size-by-consolidating-calls.patch" # awaiting ack "v5-asus-wmi-Add-support-for-platform_profile.patch" # landing in 5.15 - "v14-asus-wmi-Add-support-for-custom-fan-curves.patch" # pending + "v15-asus-wmi-Add-support-for-custom-fan-curves.patch" # pending # mediatek mt7921 bt/wifi patches #"Bluetooth-btusb-Fixed-too-many-in-token-issue-for-Me.patch" @@ -175,7 +175,7 @@ sha256sums=('7e068b5e0d26a62b10e5320b25dce57588cbbc6f781c090442138c9c9c3271b2' 'ec317cc2c2c8c1186c4f553fdd010adc013c37600a499802473653fd8e7564df' '544464bf0807b324120767d55867f03014a9fda4e1804768ca341be902d7ade4' '4ef12029ea73ca924b6397e1de4911e84d9e77ddaccdab1ef579823d848524e8' - '9d799be6d01a7438ca9999a10137be8fd95348610545c135c6dc9ce2b5afbe29' + '1e547bddf80d201f77da1d876cd280e4d40b377bbd8ebc218f0ba57cd959ff76' '2163cb2e394a013042a40cd3b00dae788603284b20d71e262995366c5534e480' 'a01cf700d79b983807e2285be1b30df6e02db6adfd9c9027fe2dfa8ca5a74bc9' '9f6b8c3ea6e1c285e0a7efda4d743dbae343bc6ee7ad599a4ab7d380c750bc83' diff --git a/v14-asus-wmi-Add-support-for-custom-fan-curves.patch b/v15-asus-wmi-Add-support-for-custom-fan-curves.patch index ce6665e3db5d..be11606fad13 100644 --- a/v14-asus-wmi-Add-support-for-custom-fan-curves.patch +++ b/v15-asus-wmi-Add-support-for-custom-fan-curves.patch @@ -1,7 +1,7 @@ -From cfd3291fa2a77bf1029646da5945d83d1021609a Mon Sep 17 00:00:00 2001 +From b9e2eae999333fc1ad9ddf4cf0e36a0eaee239e2 Mon Sep 17 00:00:00 2001 From: "Luke D. Jones" <luke@ljones.dev> Date: Sun, 29 Aug 2021 13:21:23 +1200 -Subject: [PATCH v14 1/1] asus-wmi: Add support for custom fan curves +Subject: [PATCH v15] asus-wmi: Add support for custom fan curves Add support for custom fan curves found on some ASUS ROG laptops. @@ -28,12 +28,12 @@ Notes: Signed-off-by: Luke D. Jones <luke@ljones.dev> --- - drivers/platform/x86/asus-wmi.c | 611 ++++++++++++++++++++- + drivers/platform/x86/asus-wmi.c | 608 ++++++++++++++++++++- include/linux/platform_data/x86/asus-wmi.h | 2 + - 2 files changed, 605 insertions(+), 8 deletions(-) + 2 files changed, 602 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index e14fb5fa7324..7569f34bac3e 100644 +index e14fb5fa7324..8b0ed1969d86 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -106,8 +106,17 @@ module_param(fnlock_default, bool, 0444); @@ -64,27 +64,20 @@ index e14fb5fa7324..7569f34bac3e 100644 u32 arg5; } __packed; -@@ -173,6 +183,19 @@ enum fan_type { +@@ -173,6 +183,12 @@ enum fan_type { FAN_TYPE_SPEC83, /* starting in Spec 8.3, use CPU_FAN_CTRL */ }; -+/* -+ * The related ACPI method for testing availability also returns the factory -+ * default fan curves. We save them here so that a user can reset custom -+ * settings if required. -+ */ +struct fan_curve_data { + bool enabled; + u8 temps[FAN_CURVE_POINTS]; + u8 percents[FAN_CURVE_POINTS]; -+ u8 default_temps[FAN_CURVE_POINTS]; -+ u8 default_percents[FAN_CURVE_POINTS]; +}; + struct asus_wmi { int dsts_id; int spec; -@@ -220,6 +243,10 @@ struct asus_wmi { +@@ -220,6 +236,10 @@ struct asus_wmi { bool throttle_thermal_policy_available; u8 throttle_thermal_policy_mode; @@ -95,7 +88,7 @@ index e14fb5fa7324..7569f34bac3e 100644 struct platform_profile_handler platform_profile_handler; bool platform_profile_support; -@@ -285,6 +312,103 @@ int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, u32 *retval) +@@ -285,6 +305,103 @@ int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, u32 *retval) } EXPORT_SYMBOL_GPL(asus_wmi_evaluate_method); @@ -199,7 +192,7 @@ index e14fb5fa7324..7569f34bac3e 100644 static int asus_wmi_evaluate_method_agfn(const struct acpi_buffer args) { struct acpi_buffer input; -@@ -1806,6 +1930,13 @@ static ssize_t pwm1_enable_store(struct device *dev, +@@ -1806,6 +1923,13 @@ static ssize_t pwm1_enable_store(struct device *dev, } asus->fan_pwm_mode = state; @@ -213,7 +206,7 @@ index e14fb5fa7324..7569f34bac3e 100644 return count; } -@@ -1953,9 +2084,9 @@ static int fan_boost_mode_check_present(struct asus_wmi *asus) +@@ -1953,9 +2077,9 @@ static int fan_boost_mode_check_present(struct asus_wmi *asus) static int fan_boost_mode_write(struct asus_wmi *asus) { @@ -225,7 +218,7 @@ index e14fb5fa7324..7569f34bac3e 100644 value = asus->fan_boost_mode; -@@ -2013,10 +2144,10 @@ static ssize_t fan_boost_mode_store(struct device *dev, +@@ -2013,10 +2137,10 @@ static ssize_t fan_boost_mode_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -238,11 +231,11 @@ index e14fb5fa7324..7569f34bac3e 100644 result = kstrtou8(buf, 10, &new_mode); if (result < 0) { -@@ -2043,6 +2174,458 @@ static ssize_t fan_boost_mode_store(struct device *dev, +@@ -2043,6 +2167,462 @@ static ssize_t fan_boost_mode_store(struct device *dev, // Fan boost mode: 0 - normal, 1 - overboost, 2 - silent static DEVICE_ATTR_RW(fan_boost_mode); -+/* Custom fan curves per-profile **********************************************/ ++/* Custom fan curves *********************************************************/ + +static void fan_curve_copy_from_buf(struct fan_curve_data *data, u8 *buf) +{ @@ -250,14 +243,11 @@ index e14fb5fa7324..7569f34bac3e 100644 + + for (i = 0; i < FAN_CURVE_POINTS; i++) { + data->temps[i] = buf[i]; -+ data->default_temps[i] = buf[i]; + } + + for (i = 0; i < FAN_CURVE_POINTS; i++) { + data->percents[i] = + 255 * buf[i + FAN_CURVE_POINTS] / 100; -+ data->default_percents[i] = -+ 255 * buf[i + FAN_CURVE_POINTS] / 100; + } +} + @@ -291,9 +281,7 @@ index e14fb5fa7324..7569f34bac3e 100644 + return 0; +} + -+/* -+ * Check if capability exists, and populate defaults. -+ */ ++/* Check if capability exists, and populate defaults */ +static int fan_curve_check_present(struct asus_wmi *asus, bool *available, + u32 fan_dev) +{ @@ -312,27 +300,35 @@ index e14fb5fa7324..7569f34bac3e 100644 + return 0; +} + -+static struct fan_curve_data *fan_curve_data_select(struct asus_wmi *asus, ++/* Determine which fan the attribute is for if SENSOR_ATTR */ ++static struct fan_curve_data *fan_curve_attr_select(struct asus_wmi *asus, ++ struct device_attribute *attr) ++{ ++ int index = to_sensor_dev_attr(attr)->index; ++ ++ return &asus->custom_fan_curves[index & FAN_CURVE_DEV_GPU]; ++} ++ ++/* Determine which fan the attribute is for if SENSOR_ATTR_2 */ ++static struct fan_curve_data *fan_curve_attr_2_select(struct asus_wmi *asus, + struct device_attribute *attr) +{ -+ /* Determine which fan the attribute is for */ + int nr = to_sensor_dev_attr_2(attr)->nr; -+ int fan = nr & FAN_CURVE_DEV_GPU; + -+ return &asus->custom_fan_curves[fan]; ++ return &asus->custom_fan_curves[nr & FAN_CURVE_DEV_GPU]; +} + +static ssize_t fan_curve_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ ++ struct sensor_device_attribute_2 *dev_attr = to_sensor_dev_attr_2(attr); + struct asus_wmi *asus = dev_get_drvdata(dev); -+ /* Determine if temperature or pwm */ -+ int nr = to_sensor_dev_attr_2(attr)->nr; + struct fan_curve_data *data; -+ int value, index; ++ int value, index, nr; + -+ data = fan_curve_data_select(asus, attr); -+ index = to_sensor_dev_attr_2(attr)->index; ++ data = fan_curve_attr_2_select(asus, attr); ++ index = dev_attr->index; ++ nr = dev_attr->nr; + + if (nr & FAN_CURVE_PWM_MASK) + value = data->percents[index]; @@ -348,7 +344,7 @@ index e14fb5fa7324..7569f34bac3e 100644 +static int fan_curve_write(struct asus_wmi *asus, + struct device_attribute *attr, u32 fan_dev) +{ -+ struct fan_curve_data *data = fan_curve_data_select(asus, attr); ++ struct fan_curve_data *data = fan_curve_attr_2_select(asus, attr); + u32 arg1 = 0, arg2 = 0, arg3 = 0, arg4 = 0; + u8 *percents = data->percents; + u8 *temps = data->temps; @@ -395,16 +391,16 @@ index e14fb5fa7324..7569f34bac3e 100644 + struct device_attribute *attr, const char *buf, + size_t count) +{ ++ struct sensor_device_attribute_2 *dev_attr = to_sensor_dev_attr_2(attr); + struct asus_wmi *asus = dev_get_drvdata(dev); + struct fan_curve_data *data; + u8 value; + int err; + -+ int index = to_sensor_dev_attr_2(attr)->index; -+ int nr = to_sensor_dev_attr_2(attr)->nr; -+ int pwm = nr & FAN_CURVE_PWM_MASK; ++ int pwm = dev_attr->nr & FAN_CURVE_PWM_MASK; ++ int index = dev_attr->index; + -+ data = fan_curve_data_select(asus, attr); ++ data = fan_curve_attr_2_select(asus, attr); + + err = kstrtou8(buf, 10, &value); + if (err < 0) @@ -430,9 +426,11 @@ index e14fb5fa7324..7569f34bac3e 100644 + struct device_attribute *attr, char *buf) +{ + struct asus_wmi *asus = dev_get_drvdata(dev); -+ struct fan_curve_data *data = fan_curve_data_select(asus, attr); ++ struct fan_curve_data *data; + int out = 2; + ++ data = fan_curve_attr_select(asus, attr); ++ + if (data->enabled) + out = 1; + @@ -461,10 +459,9 @@ index e14fb5fa7324..7569f34bac3e 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + struct fan_curve_data *data; -+ int value; -+ int err; ++ int value, err; + -+ data = fan_curve_data_select(asus, attr); ++ data = fan_curve_attr_select(asus, attr); + + err = kstrtoint(buf, 10, &value); + if (err < 0) @@ -697,7 +694,7 @@ index e14fb5fa7324..7569f34bac3e 100644 /* Throttle thermal policy ****************************************************/ static int throttle_thermal_policy_check_present(struct asus_wmi *asus) -@@ -2053,8 +2636,8 @@ static int throttle_thermal_policy_check_present(struct asus_wmi *asus) +@@ -2053,8 +2633,8 @@ static int throttle_thermal_policy_check_present(struct asus_wmi *asus) asus->throttle_thermal_policy_available = false; err = asus_wmi_get_devstate(asus, @@ -708,7 +705,7 @@ index e14fb5fa7324..7569f34bac3e 100644 if (err) { if (err == -ENODEV) return 0; -@@ -2092,6 +2675,12 @@ static int throttle_thermal_policy_write(struct asus_wmi *asus) +@@ -2092,6 +2672,12 @@ static int throttle_thermal_policy_write(struct asus_wmi *asus) return -EIO; } @@ -721,7 +718,7 @@ index e14fb5fa7324..7569f34bac3e 100644 return 0; } -@@ -2901,7 +3490,7 @@ static int show_call(struct seq_file *m, void *data) +@@ -2901,7 +3487,7 @@ static int show_call(struct seq_file *m, void *data) if (ACPI_FAILURE(status)) return -EIO; @@ -730,7 +727,7 @@ index e14fb5fa7324..7569f34bac3e 100644 if (obj && obj->type == ACPI_TYPE_INTEGER) seq_printf(m, "%#x(%#x, %#x) = %#x\n", asus->debug.method_id, asus->debug.dev_id, asus->debug.ctrl_param, -@@ -3035,6 +3624,10 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -3035,6 +3621,10 @@ static int asus_wmi_add(struct platform_device *pdev) if (err) goto fail_hwmon; @@ -741,7 +738,7 @@ index e14fb5fa7324..7569f34bac3e 100644 err = asus_wmi_led_init(asus); if (err) goto fail_leds; -@@ -3106,6 +3699,7 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -3106,6 +3696,7 @@ static int asus_wmi_add(struct platform_device *pdev) asus_wmi_sysfs_exit(asus->platform_device); fail_sysfs: fail_throttle_thermal_policy: @@ -749,7 +746,7 @@ index e14fb5fa7324..7569f34bac3e 100644 fail_platform_profile_setup: if (asus->platform_profile_support) platform_profile_remove(); -@@ -3131,6 +3725,7 @@ static int asus_wmi_remove(struct platform_device *device) +@@ -3131,6 +3722,7 @@ static int asus_wmi_remove(struct platform_device *device) asus_wmi_debugfs_exit(asus); asus_wmi_sysfs_exit(asus->platform_device); asus_fan_set_auto(asus); |