Commit ec0e8fc4 authored by Hans de Goede's avatar Hans de Goede

platform/x86: thinkpad_acpi: Disable DYTC CQL mode around switching to balanced mode

Testing has shown that setting /sys/firmware/acpi/platform_profile to
"balanced" when /sys/bus/platform/devices/thinkpad_acpi/dytc_lapmode
reports 1, causes dytc_lapmode to get reset to 0 and then it becomes
stuck at 0 for aprox. 30 minutes even if the laptop is used on a lap.

Disabling CQL (when enabled) before issuing the DYTC_CMD_RESET to get
back to balanced mode and re-enabling it afterwards again, like the
code already does when switching to low-power / performance mode fixes
this.

Fixes: c3bfcd4c ("platform/x86: thinkpad_acpi: Add platform profile support")
Tested-by: default avatarMark Pearson <markpearson@lenovo.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210321113108.7069-1-hdegoede@redhat.com
parent 3d677f12
...@@ -10187,8 +10187,13 @@ static int dytc_profile_set(struct platform_profile_handler *pprof, ...@@ -10187,8 +10187,13 @@ static int dytc_profile_set(struct platform_profile_handler *pprof,
return err; return err;
if (profile == PLATFORM_PROFILE_BALANCED) { if (profile == PLATFORM_PROFILE_BALANCED) {
/* To get back to balanced mode we just issue a reset command */ /*
err = dytc_command(DYTC_CMD_RESET, &output); * To get back to balanced mode we need to issue a reset command.
* Note we still need to disable CQL mode before hand and re-enable
* it afterwards, otherwise dytc_lapmode gets reset to 0 and stays
* stuck at 0 for aprox. 30 minutes.
*/
err = dytc_cql_command(DYTC_CMD_RESET, &output);
if (err) if (err)
goto unlock; goto unlock;
} else { } else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment