[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240302170147.13026-1-ivor@iwanders.net>
Date: Sat, 2 Mar 2024 12:01:46 -0500
From: Ivor Wanders <ivor@...nders.net>
To: Maximilian Luz <luzmaximilian@...il.com>,
Hans de Goede <hdegoede@...hat.com>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
platform-driver-x86@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: Ivor Wanders <ivor@...nders.net>
Subject: [PATCH 0/1] platform/surface: platform_profile: add fan profile switching
This patch adds functionality that switches the fan profile when the
platform profile is switched on the Microsoft Surface Pro 9.
Previously, the fan profile was not changed and that results in poor
thermal performance. This makes the behaviour and functionality identical
to what the Windows drivers do.
A plot of the different responses to system load, as well as recordings
from the SSAM bus can be found at [1]. Based on discussions with
Maximilian Luz there this patch proposes the following changes:
In surface_aggregator_registry:
- Rename ssam_node_tmp_pprof to ssam_node_tmp_perf_profile for clarity.
- Introduce ssam_node_tmp_perf_profile_with_fan that has the has_fan
boolean property set.
- Use the new ssam_node_tmp_perf_profile_with_fan for the Surface Pro 9.
In the platform profile module:
- Rename ssam_tmp_profile_device to ssam_platform_profile_device to make it
clear it handles more than just the TMP subsystem.
- Rename the enum conversion method to make distinction between TMP and FAN
clear.
- Add enum and set function & request for the fan profile.
- Ensure that if the module's has_fan boolean is true, the fan profile is
switched whenever the platform profile changes.
[1]: https://github.com/linux-surface/kernel/pull/145
Ivor Wanders (1):
platform/surface: platform_profile: add fan profile switching
.../surface/surface_aggregator_registry.c | 36 +++++---
.../surface/surface_platform_profile.c | 86 ++++++++++++++++---
2 files changed, 99 insertions(+), 23 deletions(-)
--
2.17.1
Powered by blists - more mailing lists