mirror_ubuntu-kernels/drivers/platform/x86
Lars Hofhansl 14232c6e78 platform/x86: thinkpad_acpi: Add support for dual fan control
This adds dual fan control for the following models:
P50, P51, P52, P70, P71, P72, P1 gen1, P2 gen2, X1E gen1 and X1E gen2.

Both fans are controlled together as if they were a single fan.

Tested on an X1 Extreme Gen1, an X1 Extreme Gen2, and a P50.

The patch is defensive, it adds only specific supported machines, and falls
back to the old behavior if both fans cannot be controlled.

Background:
I tested the BIOS default behavior on my X1E gen2 and both fans are always
changed together. So rather than adding controls for each fan, this controls
both fans together as the BIOS would do.

This was inspired by a discussion on dual fan support for the thinkfan tool
(see link below). All BIOS IDs are taken from there. The X1E gen2 ID is
verified on my machine.

Thanks to GitHub users voidworker and civic9 for the earlier patches and
BIOS IDs, and to users peter-stoll and sassman for testing the patch on
their machines.

BugLink: https://github.com/vmatare/thinkfan/issues/58
Signed-off-by: Lars Hofhansl <larsh@apache.org>
[andy: massaged commit message to capitalize ID and convert to BugLink]
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-04-27 12:52:29 +03:00
..
intel_speed_select_if platform-drivers-x86 for v5.7-1 2020-03-31 16:43:40 -07:00
acer-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acer-wmi.c platform/x86: acer-wmi: Switch to acpi_dev_get_first_match_dev() 2019-07-30 14:12:51 +03:00
acerhdf.c treewide: Rename Peter Feuerer to Peter Kaestle 2019-10-21 12:17:23 +03:00
alienware-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
amilo-rfkill.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
apple-gmux.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
asus-laptop.c platform-drivers-x86 for v5.5-1 2019-12-01 18:24:25 -08:00
asus-nb-wmi.c platform/x86: asus-nb-wmi: Do not load on Asus T100TA and T200TA 2020-04-24 13:00:19 +03:00
asus-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
asus-wmi.c platform/x86: asus_wmi: Fix return value of fan_boost_mode_store 2020-03-20 14:44:46 +02:00
asus-wmi.h platform/x86: asus-wmi: Only Tell EC the OS will handle display hotkeys from asus_nb_wmi 2019-06-12 11:54:16 +03:00
classmate-laptop.c platform/x86: classmate-laptop: remove unused variable 2019-10-15 10:55:10 +03:00
compal-laptop.c platform/x86: compal-laptop: Initialize "value" in ec_read_u8() 2019-09-07 21:16:09 +03:00
dcdbas.c docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
dcdbas.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 287 2019-06-05 17:36:37 +02:00
dell_rbu.c platform/x86: dell_rbu: Unify format of the printed messages 2020-02-10 17:47:38 +02:00
dell-laptop.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-rbtn.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-rbtn.h change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-smbios-base.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-smbios-smm.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-smbios-wmi.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
dell-smbios.h change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-smo8800.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
dell-wmi-aio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dell-wmi-descriptor.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
dell-wmi-descriptor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dell-wmi-led.c
dell-wmi.c change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
eeepc-laptop.c platform/x86: eeepc-laptop: Use pr_warn instead of pr_warning 2019-10-18 15:00:48 +02:00
eeepc-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
fujitsu-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
fujitsu-tablet.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 414 2019-06-05 17:37:14 +02:00
gpd-pocket-fan.c platform/x86: GPD pocket fan: Fix error message when temp-limits are out of range 2020-03-20 14:44:47 +02:00
hdaps.c platform/x86: hdaps: switch to using polled mode of input devices 2019-10-15 10:55:09 +03:00
hp_accel.c platform/x86: hp_accel: Add support for HP ZBook 17 G5 2019-07-29 18:31:48 +03:00
hp-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
hp-wmi.c platform/x86: hp-wmi: Make buffer for HPWMI_FEATURE2_QUERY 128 bytes 2019-12-20 19:00:50 +02:00
huawei-wmi.c platform/x86: huawei-wmi: Remove unnecessary battery mutex 2019-10-21 12:17:30 +03:00
i2c-multi-instantiate.c platform/x86: i2c-multi-instantiate: Replace zero-length array with flexible-array member 2020-02-28 12:44:11 +02:00
ibm_rtl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ideapad-laptop.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
intel_atomisp2_pm.c platform/x86: intel_atomisp2_pm: Spelling fixes 2020-01-10 11:57:22 +02:00
intel_bxtwc_tmu.c platform/x86: intel_bxtwc_tmu: Remove dev_err() usage after platform_get_irq() 2019-08-01 18:03:02 +03:00
intel_cht_int33fe_common.c platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_common.h platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_microb.c platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_typec.c platform/x86: intel_cht_int33fe: Fix spelling issues 2020-04-20 14:47:45 +03:00
intel_chtdc_ti_pwrbtn.c platform/x86: intel_chtdc_ti_pwrbtn: Add SPDX identifier 2018-09-27 12:18:16 +03:00
intel_int0002_vgpio.c Additional power management updates for 5.7-rc1 2020-04-06 10:14:39 -07:00
intel_ips.c platform/x86: intel_ips: Convert to use DEFINE_SHOW_ATTRIBUTE macro 2018-12-03 21:40:03 +02:00
intel_ips.h platform/x86: intel-ips: Use the correct style for SPDX License Identifier 2020-01-10 11:57:21 +02:00
intel_menlow.c platform/x86: intel_menlow: switch to use <linux/units.h> helpers 2020-01-31 10:30:40 -08:00
intel_mid_powerbtn.c platform/x86: intel_mid_powerbtn: Convert to use new SCU IPC API 2020-04-24 11:17:32 +01:00
intel_mid_thermal.c platform/x86: intel_mid_thermal: Convert to use SPDX identifier 2018-09-27 12:18:17 +03:00
intel_mrfld_pwrbtn.c platform/x86: Add support for Basin Cove power button 2019-05-09 00:33:03 +03:00
intel_oaktrail.c platform/x86: intel_oaktrail: Use pr_warn instead of pr_warning 2019-10-18 15:01:35 +02:00
intel_pmc_core_pltdrv.c platform/x86: Convert to new CPU match macros 2020-03-24 21:33:00 +01:00
intel_pmc_core.c platform/x86: intel_pmc_core: Change Jasper Lake S0ix debug reg map back to ICL 2020-04-24 12:45:18 +03:00
intel_pmc_core.h platform/x86: intel_pmc_core: Make pmc_core_substate_res_show() generic 2020-03-20 15:39:49 +02:00
intel_punit_ipc.c platform/x86: intel_punit_ipc: Drop useless label 2019-10-27 02:10:57 +03:00
intel_scu_ipc.c platform/x86: intel_scu_ipc: Add managed function to register SCU IPC 2020-04-24 11:17:44 +01:00
intel_scu_ipcutil.c platform/x86: intel_scu_ipcutil: Convert to use new SCU IPC API 2020-04-24 11:17:41 +01:00
intel_scu_pcidrv.c platform/x86: intel_pmc_ipc: Move PCI IDs to intel_scu_pcidrv.c 2020-04-24 11:18:25 +01:00
intel_telemetry_core.c platform/x86: intel_telemetry: Add telemetry_get_pltdata() 2020-04-24 11:18:30 +01:00
intel_telemetry_debugfs.c platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
intel_telemetry_pltdrv.c platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
intel_turbo_max_3.c platform/x86: Convert to new CPU match macros 2020-03-24 21:33:00 +01:00
intel-hid.c Additional ACPI updates for 5.7-rc1 2020-04-06 10:35:06 -07:00
intel-rst.c platform/x86: intel-rst: Convert to use SPDX identifier 2018-09-27 12:18:19 +03:00
intel-smartconnect.c platform/x86: intel-smartconnect: Convert to use SPDX identifier 2018-09-27 12:18:19 +03:00
intel-uncore-frequency.c platform/x86/intel-uncore-freq: make uncore_root_kobj static 2020-04-17 16:48:06 +03:00
intel-vbtn.c platform/x86: intel-vbtn: Move MODULE_DEVICE_TABLE() closer to the table 2020-02-10 11:12:18 +02:00
intel-wmi-thunderbolt.c platform/x86: wmi: add context argument to the probe function 2019-06-17 15:22:47 +03:00
Kconfig platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
lg-laptop.c platform/x86: Add LG Gram laptop special features driver 2018-10-19 19:21:57 +03:00
Makefile platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
mlx-platform.c platform/x86: mlx-platform: Add support for next generation systems 2020-01-13 21:02:46 +02:00
msi-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
msi-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
mxm-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
panasonic-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 392 2019-06-05 17:37:11 +02:00
pcengines-apuv2.c platform/x86: pcengines-apuv2: Spelling fixes in the driver 2019-12-20 19:01:59 +02:00
peaq-wmi.c platform/x86: peaq-wmi: switch to using polled mode of input devices 2019-10-15 10:55:09 +03:00
pmc_atom.c platform/x86: pmc_atom: Add Lex 2I385SW to critclk_systems DMI table 2020-02-10 17:47:38 +02:00
samsung-laptop.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
samsung-q10.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
sony-laptop.c platform/x86: sony-laptop: Use scnprintf() for avoiding potential buffer overflow 2020-03-20 14:44:47 +02:00
surface3_button.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
surface3_power.c platform/x86: surface3_power: Fix a NULL vs IS_ERR() check in probe 2020-04-17 16:47:26 +03:00
surface3-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
surfacepro3_button.c platform/x86: surfacepro3_button: Fix device check 2019-07-28 12:58:40 +03:00
system76_acpi.c platform/x86: Add System76 ACPI driver 2019-10-15 10:55:11 +03:00
tc1100-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
thinkpad_acpi.c platform/x86: thinkpad_acpi: Add support for dual fan control 2020-04-27 12:52:29 +03:00
topstar-laptop.c
toshiba_acpi.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
toshiba_bluetooth.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
toshiba_haps.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
toshiba-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
touchscreen_dmi.c platform/x86: touchscreen_dmi: Add info for the ONDA V891 v5 tablet 2020-04-23 17:05:51 +03:00
wmi-bmof.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
wmi.c platform/x86: wmi: Describe function parameters 2020-04-23 17:03:54 +03:00
xiaomi-wmi.c platform/x86: wmi: Make two functions static 2020-04-17 16:47:26 +03:00
xo1-rfkill.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
xo15-ebook.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00