linux-stable/drivers
Mark Pearson ab5c05ba24 platform/x86: thinkpad_acpi: Add dual fan probe
[ Upstream commit bf779aaf56 ]

Instead of having quirks for systems that have a second fan it would
be nice to detect this setup.
Unfortunately, confirmed by the Lenovo FW team, there is no way to
retrieve this information from the EC or BIOS. Recommendation was to
attempt to read the fan and if successful then assume a 2nd fan is
present.

The fans are also supposed to spin up on boot for some time, so in
theory we could check for a speed > 0. In testing this seems to hold
true but as I couldn't test on all platforms I've avoided implementing
this. It also breaks for the corner case where you load the module
once the fans are idle.

Tested on P1G4, P1G3, X1C9 and T14 (no fans) and it works correctly.
For the platforms with dual fans where it was confirmed to work I have
removed the quirks. Potentially this could be done for all platforms
but I've left untested platforms in for now. On these platforms the
fans will be enabled and then detected - so no impact.

Signed-off-by: Mark Pearson <markpearson@lenovo.com>
Link: https://lore.kernel.org/r/20220222185137.4325-1-markpearson@lenovo.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-04-13 19:27:19 +02:00
..
accessibility speakup-dectlk: Restore pitch setting 2022-02-08 12:15:04 +01:00
acpi ACPI: CPPC: Avoid out of bounds access when parsing _CPC data 2022-04-08 13:58:58 +02:00
amba
android Merge 5.16-rc8 into char-misc-next 2022-01-03 13:44:38 +01:00
ata ata: pata_hpt37x: disable primary channel on HPT371 2022-02-23 09:39:37 +09:00
atm atm: eni: Add check for dma_map_single 2022-03-15 11:01:52 +00:00
auxdisplay auxdisplay: lcd2s: Use proper API to free the instance of charlcd object 2022-03-03 00:30:31 +01:00
base PM: core: keep irq flags in device_pm_check_callbacks() 2022-04-08 13:58:38 +02:00
bcma
block Revert "nbd: fix possible overflow on 'first_minor' in nbd_dev_add()" 2022-04-08 13:59:04 +02:00
bluetooth Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt 2022-04-08 13:58:20 +02:00
bus mips: cdmm: Fix refcount leak in mips_cdmm_phys_base 2022-04-08 13:58:17 +02:00
cdrom cdrom: simplify subdirectory registration with register_sysctl() 2022-01-22 08:33:35 +02:00
char hwrng: cavium - fix NULL but dereferenced coccicheck error 2022-04-08 13:58:37 +02:00
clk clk: Initialize orphan req_rate 2022-04-08 13:58:32 +02:00
clocksource clocksource: acpi_pm: fix return value of __setup handler 2022-04-08 13:57:38 +02:00
comedi
connector connector/cn_proc: Use task_is_in_init_pid_ns() 2022-01-26 18:57:09 -08:00
counter counter: Stop using dev_get_drvdata() to get the counter device 2022-03-15 19:24:13 +01:00
cpufreq cpufreq: qcom-cpufreq-nvmem: fix reading of PVS Valid fuse 2022-04-08 13:58:24 +02:00
cpuidle cpuidle: qcom-spm: Check if any CPU is managed by SPM 2022-04-08 13:57:46 +02:00
crypto crypto: hisilicon/sec - not need to enable sm4 extra mode at HW V3 2022-04-08 13:58:36 +02:00
cxl cxl/port: Hold port reference until decoder release 2022-04-08 13:58:07 +02:00
dax dax: make sure inodes are flushed before destroy cache 2022-04-08 13:58:07 +02:00
dca
devfreq
dio
dma dmaengine: hisi_dma: fix MSI allocate fail when reload hisi_dma 2022-04-08 13:58:27 +02:00
dma-buf udmabuf: validate ubuf->pagecount 2022-04-08 13:57:56 +02:00
edac EDAC: Fix calculation of returned address and next offset in edac_align_ptr() 2022-02-15 15:54:46 +01:00
eisa
extcon extcon: Deduplicate code in extcon_set_state_sync() 2021-12-24 15:27:52 +09:00
firewire
firmware firmware: google: Properly state IOMEM dependency 2022-04-08 13:58:30 +02:00
fpga
fsi fsi: Aspeed: Fix a potential double free 2022-04-08 13:58:24 +02:00
gnss
gpio Revert "gpio: Revert regression in sysfs-gpio (gpiolib.c)" 2022-03-15 09:59:08 -07:00
gpu drm/amdkfd: make CRAT table missing message informational only 2022-04-13 19:27:17 +02:00
greybus greybus: svc: fix an error handling bug in gb_svc_hello() 2022-04-08 13:57:16 +02:00
hid HID: apple: Report Magic Keyboard 2021 with fingerprint reader battery over USB 2022-04-13 19:27:15 +02:00
hsi
hv hv_balloon: rate-limit "Unhandled message" warning 2022-04-08 13:58:14 +02:00
hwmon hwmon: (pmbus) Add Vin unit off handling 2022-04-08 13:57:38 +02:00
hwspinlock
hwtracing coresight: syscfg: Fix memleak on registration failure in cscfg_create_device 2022-04-08 13:57:14 +02:00
i2c i2c: mux: demux-pinctrl: do not deactivate a master that is not active 2022-04-08 13:58:21 +02:00
i3c i3c: master: dw: check return of dw_i3c_master_get_free_pos() 2022-01-13 02:05:50 +01:00
idle
iio iio: adc: Add check for devm_request_threaded_irq 2022-04-08 13:58:26 +02:00
infiniband RDMA/rtrs-clt: Do stop and failover outside reconnect work. 2022-04-13 19:27:10 +02:00
input Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads" 2022-04-08 13:57:21 +02:00
interconnect
iommu iommu/arm-smmu-v3: fix event handling soft lockup 2022-04-13 19:27:13 +02:00
ipack
irqchip irqchip/nvic: Release nvic_base upon failure 2022-04-08 13:58:37 +02:00
isdn isdn: hfcpci: check the return value of dma_set_mask() in setup_hw() 2022-03-07 11:27:12 +00:00
leds LED updates for 5.17. Nothing major is happening here. 2022-01-12 16:59:22 -08:00
macintosh macintosh/mac_hid.c: simplify subdirectory registration with register_sysctl() 2022-01-22 08:33:35 +02:00
mailbox mailbox: imx: fix wakeup failure from freeze mode 2022-04-08 13:58:55 +02:00
mcb
md dm: requeue IO if mapping table not yet available 2022-04-13 19:27:17 +02:00
media media: ov6650: Fix crop rectangle affected by set format 2022-04-08 13:59:02 +02:00
memory memory: emif: check the pointer temp in get_device_details() 2022-04-08 13:57:50 +02:00
memstick memstick/mspro_block: fix handling of read-only devices 2022-04-08 13:58:36 +02:00
message scsi: message: fusion: mptctl: Use dma_alloc_coherent() 2022-01-10 10:33:52 -05:00
mfd mfd: asic3: Add missing iounmap() on error asic3_mfd_probe 2022-04-08 13:58:22 +02:00
misc kgdbts: fix return value of __setup handler 2022-04-08 13:58:30 +02:00
mmc mmc: rtsx: Fix build errors/warnings for unused variable 2022-04-08 13:59:04 +02:00
most
mtd ubi: fastmap: Return error code if memory allocation fails in add_aeb() 2022-04-08 13:59:02 +02:00
mux
net macvtap: advertise link netns via netlink 2022-04-13 19:27:19 +02:00
nfc NFC: port100: fix use-after-free in port100_send_complete 2022-03-09 19:59:34 -08:00
ntb ntb: intel: fix port config status offset for SPR 2022-01-28 10:19:16 -05:00
nubus proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
nvdimm nvdimm/region: Fix default alignment for small regions 2022-04-08 13:58:27 +02:00
nvme nvme: fix the read-only state for zoned namespaces with unsupposed features 2022-04-08 13:58:53 +02:00
nvmem nvmem: core: Fix a conflict between MTD and NVMEM on wp-gpios property 2022-02-21 17:59:25 +01:00
of of/fdt: move elfcorehdr reservation early for crash dump kernel 2022-02-17 17:13:52 -06:00
opp
parisc parisc: Fix sglist access in ccio-dma.c 2022-01-28 10:15:34 +01:00
parport
pci PCI: pciehp: Add Qualcomm quirk for Command Completed erratum 2022-04-13 19:27:14 +02:00
pcmcia pci-v5.17-changes 2022-01-16 08:08:11 +02:00
perf perf/arm-cmn: Update watchpoint format 2022-04-08 13:57:37 +02:00
phy phy: phy-brcm-usb: fixup BCM4908 support 2022-04-08 13:58:25 +02:00
pinctrl pinctrl: canonical rsel resistance selection property 2022-04-08 13:59:02 +02:00
platform platform/x86: thinkpad_acpi: Add dual fan probe 2022-04-13 19:27:19 +02:00
pnp proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
power power: supply: axp288_fuel_gauge: Use acpi_quirk_skip_acpi_ac_and_battery() 2022-04-13 19:27:18 +02:00
powercap powercap/dtpm_cpu: Reset per_cpu variable in the release function 2022-04-08 13:58:37 +02:00
pps pps: clients: gpio: Propagate return value from pps_gpio_probe 2022-04-08 13:58:24 +02:00
ps3
ptp ptp: replace snprintf with sysfs_emit 2022-04-13 19:27:09 +02:00
pwm pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add() 2022-04-08 13:58:23 +02:00
rapidio
ras
regulator regulator: rpi-panel: Handle I2C errors/timing to the Atmel 2022-04-08 13:58:35 +02:00
remoteproc remoteproc: qcom_q6v5_mss: Fix some leaks in q6v5_alloc_memory_region 2022-04-08 13:58:27 +02:00
reset SoC: Add support for StarFive JH7100 RISC-V SoC 2022-01-10 08:32:37 -08:00
rpmsg rpmsg fixes for v5.17-rc1 2022-01-27 11:23:26 +02:00
rtc rtc: wm8350: Handle error for wm8350_register_irq 2022-04-13 19:27:06 +02:00
s390 s390/cio: verify the driver availability for path_event call 2022-02-09 22:55:01 +01:00
sbus
scsi scsi: hisi_sas: Limit users changing debugfs BIST count value 2022-04-13 19:27:18 +02:00
sh
siox
slimbus
soc soc: mediatek: pm-domains: Add wakeup capacity support in power domain 2022-04-08 13:57:49 +02:00
soundwire ASoC: Intel: sof_sdw: fix quirks for 2022 HP Spectre x360 13" 2022-04-08 13:58:45 +02:00
spi spi: mediatek: support tick_delay without enhance_timing 2022-04-08 13:59:02 +02:00
spmi
ssb
staging staging: mt7621-dts: fix pinctrl-0 items to be size-1 items on ethernet 2022-04-08 13:58:59 +02:00
target scsi: target: iscsi: Make sure the np under each tpg is unique 2022-01-24 23:30:24 -05:00
tc
tee OP-TEE fix error return code in probe functions 2022-02-18 17:30:01 +01:00
thermal thermal: int340x: Check for NULL after calling kmemdup() 2022-04-08 13:57:33 +02:00
thunderbolt thunderbolt: Add module parameter for CLx disabling 2021-12-28 10:43:56 +03:00
tty serial: 8250: fix XOFF/XON sending when DMA is used 2022-04-08 13:58:30 +02:00
uio UIO: use default_groups in kobj_type 2021-12-29 10:54:50 +01:00
usb usb: dwc3: pci: Set the swnode from inside dwc3_pci_quirks() 2022-04-13 19:27:15 +02:00
vdpa vdpa/mlx5: Avoid processing works if workqueue was destroyed 2022-04-08 13:59:03 +02:00
vfio vfio/pci: Stub vfio_pci_vga_rw when !CONFIG_VFIO_PCI_VGA 2022-04-13 19:27:17 +02:00
vhost vhost: handle error while adding split ranges to iotlb 2022-04-08 13:58:58 +02:00
video video: fbdev: sm712fb: Fix crash in smtcfb_write() 2022-04-08 13:58:45 +02:00
virt virt: acrn: fix a memory leak in acrn_dev_ioctl() 2022-04-08 13:58:30 +02:00
virtio virtio: use virtio_device_ready() in virtio_device_restore() 2022-04-08 13:58:57 +02:00
visorbus
vlynq
vme
w1
watchdog watchdog: rti-wdt: Add missing pm_runtime_disable() in probe function 2022-04-08 13:58:56 +02:00
xen xen/gnttab: fix gnttab_end_foreign_access() without page specified 2022-03-07 09:48:55 +01:00
zorro proc: remove PDE_DATA() completely 2022-01-22 08:33:37 +02:00
Kconfig
Makefile