All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs
@ 2019-11-07 23:01 Leonid Maksymchuk
  2019-11-07 23:03 ` [PATCH v3 1/3] asus_wmi: Fix return value of fan_boost_mode_store Leonid Maksymchuk
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Leonid Maksymchuk @ 2019-11-07 23:01 UTC (permalink / raw)
  To: linux-kernel
  Cc: platform-driver-x86, acpi4asus-user, chiu, yurii.pavlovskyi,
	kristian, andy, dvhart, corentin.chary, Leonid Maksymchuk

Hi,

this patch series adds support of ASUS TUF laptops on Ryzen CPUs to existing
asus_wmi platform driver and also fixes minor bug.

v2: fixed indentation.
v3: patches 2/3 and 3/3 are refactored.

Leonid Maksymchuk (3):
  asus_wmi: Fix return value of fan_boost_mode_store
  asus_wmi: Support fan boost mode on FX505DY/FX705DY
  asus_wmi: Set default fan boost mode to normal

 drivers/platform/x86/asus-wmi.c            | 55 ++++++++++++++++------
 include/linux/platform_data/x86/asus-wmi.h |  1 +
 2 files changed, 42 insertions(+), 14 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/3] asus_wmi: Fix return value of fan_boost_mode_store
  2019-11-07 23:01 [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
@ 2019-11-07 23:03 ` Leonid Maksymchuk
  2019-11-07 23:04 ` [PATCH v3 2/3] asus_wmi: Support fan boost mode on FX505DY/FX705DY Leonid Maksymchuk
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Leonid Maksymchuk @ 2019-11-07 23:03 UTC (permalink / raw)
  To: linux-kernel
  Cc: platform-driver-x86, acpi4asus-user, chiu, yurii.pavlovskyi,
	kristian, andy, dvhart, corentin.chary, Leonid Maksymchuk

Function fan_boost_mode_store should return number of bytes written
but instead it returns return value of kstrtou8 which is 0 if
conversion is succefull. This leads to infinite loop after any
write to it's SysFS entry.

Fixes: b096f626a682 ("platform/x86: asus-wmi: Switch fan boost mode")
Signed-off-by: Leonid Maksymchuk <leonmaxx@gmail.com>
---
 drivers/platform/x86/asus-wmi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 821b08e01635..723aa4d969dc 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -1718,7 +1718,7 @@ static ssize_t fan_boost_mode_store(struct device *dev,
 	asus->fan_boost_mode = new_mode;
 	fan_boost_mode_write(asus);
 
-	return result;
+	return count;
 }
 
 // Fan boost mode: 0 - normal, 1 - overboost, 2 - silent
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/3] asus_wmi: Support fan boost mode on FX505DY/FX705DY
  2019-11-07 23:01 [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
  2019-11-07 23:03 ` [PATCH v3 1/3] asus_wmi: Fix return value of fan_boost_mode_store Leonid Maksymchuk
@ 2019-11-07 23:04 ` Leonid Maksymchuk
  2019-11-07 23:04 ` [PATCH v3 3/3] asus_wmi: Set default fan boost mode to normal Leonid Maksymchuk
  2019-11-08 16:10 ` [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
  3 siblings, 0 replies; 5+ messages in thread
From: Leonid Maksymchuk @ 2019-11-07 23:04 UTC (permalink / raw)
  To: linux-kernel
  Cc: platform-driver-x86, acpi4asus-user, chiu, yurii.pavlovskyi,
	kristian, andy, dvhart, corentin.chary, Leonid Maksymchuk

On ASUS FX505DY/FX705DY laptops fan boost mode is same as in other
TUF laptop models but have different ACPI device ID and different hotkey
code.

Signed-off-by: Leonid Maksymchuk <leonmaxx@gmail.com>
---
 drivers/platform/x86/asus-wmi.c            | 42 +++++++++++++++-------
 include/linux/platform_data/x86/asus-wmi.h |  1 +
 2 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 723aa4d969dc..311658807dfe 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -61,6 +61,7 @@ MODULE_LICENSE("GPL");
 #define NOTIFY_KBD_BRTDWN		0xc5
 #define NOTIFY_KBD_BRTTOGGLE		0xc7
 #define NOTIFY_KBD_FBM			0x99
+#define NOTIFY_KBD_FBM_2		0xae
 
 #define ASUS_WMI_FNLOCK_BIOS_DISABLED	BIT(0)
 
@@ -195,6 +196,7 @@ struct asus_wmi {
 	int agfn_pwm;
 
 	bool fan_boost_mode_available;
+	u32 fan_boost_mode_dev_id;
 	u8 fan_boost_mode_mask;
 	u8 fan_boost_mode;
 
@@ -1611,31 +1613,46 @@ static int asus_wmi_fan_init(struct asus_wmi *asus)
 
 /* Fan mode *******************************************************************/
 
-static int fan_boost_mode_check_present(struct asus_wmi *asus)
+static int fan_boost_mode_check_device(struct asus_wmi *asus, u32 dev_id)
 {
 	u32 result;
 	int err;
 
-	asus->fan_boost_mode_available = false;
+	err = asus_wmi_get_devstate(asus, dev_id, &result);
 
-	err = asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_FAN_BOOST_MODE,
-				    &result);
-	if (err) {
-		if (err == -ENODEV)
-			return 0;
-		else
-			return err;
-	}
+	if (err)
+		return err;
 
 	if ((result & ASUS_WMI_DSTS_PRESENCE_BIT) &&
 			(result & ASUS_FAN_BOOST_MODES_MASK)) {
 		asus->fan_boost_mode_available = true;
+		asus->fan_boost_mode_dev_id = dev_id;
 		asus->fan_boost_mode_mask = result & ASUS_FAN_BOOST_MODES_MASK;
 	}
 
 	return 0;
 }
 
+static int fan_boost_mode_check_present(struct asus_wmi *asus)
+{
+	int err;
+
+	asus->fan_boost_mode_available = false;
+	err = fan_boost_mode_check_device(asus, ASUS_WMI_DEVID_FAN_BOOST_MODE);
+
+	if (err && err != -ENODEV)
+		return err;
+	else if (asus->fan_boost_mode_available)
+		return 0;
+
+	err = fan_boost_mode_check_device(asus,
+					  ASUS_WMI_DEVID_FAN_BOOST_MODE_2);
+	if (err == -ENODEV)
+		return 0;
+
+	return err;
+}
+
 static int fan_boost_mode_write(struct asus_wmi *asus)
 {
 	int err;
@@ -1645,7 +1662,7 @@ static int fan_boost_mode_write(struct asus_wmi *asus)
 	value = asus->fan_boost_mode;
 
 	pr_info("Set fan boost mode: %u\n", value);
-	err = asus_wmi_set_devstate(ASUS_WMI_DEVID_FAN_BOOST_MODE, value,
+	err = asus_wmi_set_devstate(asus->fan_boost_mode_dev_id, value,
 				    &retval);
 	if (err) {
 		pr_warn("Failed to set fan boost mode: %d\n", err);
@@ -2000,7 +2017,8 @@ static void asus_wmi_handle_event_code(int code, struct asus_wmi *asus)
 		return;
 	}
 
-	if (asus->fan_boost_mode_available && code == NOTIFY_KBD_FBM) {
+	if (asus->fan_boost_mode_available &&
+			(code == NOTIFY_KBD_FBM || code == NOTIFY_KBD_FBM_2)) {
 		fan_boost_mode_switch_next(asus);
 		return;
 	}
diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h
index 60249e22e844..714782b193b3 100644
--- a/include/linux/platform_data/x86/asus-wmi.h
+++ b/include/linux/platform_data/x86/asus-wmi.h
@@ -58,6 +58,7 @@
 #define ASUS_WMI_DEVID_LIGHT_SENSOR	0x00050022 /* ?? */
 #define ASUS_WMI_DEVID_LIGHTBAR		0x00050025
 #define ASUS_WMI_DEVID_FAN_BOOST_MODE	0x00110018
+#define ASUS_WMI_DEVID_FAN_BOOST_MODE_2	0x00120075
 
 /* Misc */
 #define ASUS_WMI_DEVID_CAMERA		0x00060013
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 3/3] asus_wmi: Set default fan boost mode to normal
  2019-11-07 23:01 [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
  2019-11-07 23:03 ` [PATCH v3 1/3] asus_wmi: Fix return value of fan_boost_mode_store Leonid Maksymchuk
  2019-11-07 23:04 ` [PATCH v3 2/3] asus_wmi: Support fan boost mode on FX505DY/FX705DY Leonid Maksymchuk
@ 2019-11-07 23:04 ` Leonid Maksymchuk
  2019-11-08 16:10 ` [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
  3 siblings, 0 replies; 5+ messages in thread
From: Leonid Maksymchuk @ 2019-11-07 23:04 UTC (permalink / raw)
  To: linux-kernel
  Cc: platform-driver-x86, acpi4asus-user, chiu, yurii.pavlovskyi,
	kristian, andy, dvhart, corentin.chary, Leonid Maksymchuk

Set default fan boost mode to normal for multiple reasons:

1) existing code assumes that laptop started in normal mode and that is
   not always correct.
2) FX705DY/FX505DY starts in silent mode and under heavy CPU load it
   overheats and drops CPU frequency to 399MHz [1]. Setting fan mode to
   normal avoids overheating.

[1] Link: https://bugzilla.kernel.org/show_bug.cgi?id=203733

Signed-off-by: Leonid Maksymchuk <leonmaxx@gmail.com>
---
 drivers/platform/x86/asus-wmi.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 311658807dfe..435e1420fb40 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -1678,6 +1678,15 @@ static int fan_boost_mode_write(struct asus_wmi *asus)
 	return 0;
 }
 
+static int fan_boost_mode_set_default(struct asus_wmi *asus)
+{
+	if (!asus->fan_boost_mode_available)
+		return 0;
+
+	asus->fan_boost_mode = ASUS_FAN_BOOST_MODE_NORMAL;
+	return fan_boost_mode_write(asus);
+}
+
 static int fan_boost_mode_switch_next(struct asus_wmi *asus)
 {
 	u8 mask = asus->fan_boost_mode_mask;
@@ -2454,6 +2463,7 @@ static int asus_wmi_add(struct platform_device *pdev)
 	err = fan_boost_mode_check_present(asus);
 	if (err)
 		goto fail_fan_boost_mode;
+	fan_boost_mode_set_default(asus);
 
 	err = asus_wmi_sysfs_init(asus->platform_device);
 	if (err)
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs
  2019-11-07 23:01 [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
                   ` (2 preceding siblings ...)
  2019-11-07 23:04 ` [PATCH v3 3/3] asus_wmi: Set default fan boost mode to normal Leonid Maksymchuk
@ 2019-11-08 16:10 ` Leonid Maksymchuk
  3 siblings, 0 replies; 5+ messages in thread
From: Leonid Maksymchuk @ 2019-11-08 16:10 UTC (permalink / raw)
  To: linux-kernel
  Cc: platform-driver-x86, acpi4asus-user, chiu, yurii.pavlovskyi,
	kristian, andy, dvhart, corentin.chary

Please ignore this patch set, I'm working on v4 right now.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-11-08 16:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-07 23:01 [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk
2019-11-07 23:03 ` [PATCH v3 1/3] asus_wmi: Fix return value of fan_boost_mode_store Leonid Maksymchuk
2019-11-07 23:04 ` [PATCH v3 2/3] asus_wmi: Support fan boost mode on FX505DY/FX705DY Leonid Maksymchuk
2019-11-07 23:04 ` [PATCH v3 3/3] asus_wmi: Set default fan boost mode to normal Leonid Maksymchuk
2019-11-08 16:10 ` [PATCH v3 0/3] asus_wmi: Support of ASUS TUF laptops on Ryzen CPUs Leonid Maksymchuk

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.