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