Commit 42ac68e3 authored by Aleksa Savic's avatar Aleksa Savic Committed by Guenter Roeck

hwmon: Add driver for Gigabyte AORUS Waterforce AIO coolers

This driver exposes hardware sensors of the Gigabyte AORUS Waterforce
all-in-one CPU liquid coolers, which communicate through a proprietary
USB HID protocol. Report offsets were initially discovered in [1] and
confirmed by me on a Waterforce X240 by observing the sent reports from
the official software.

Available sensors are pump and fan speed in RPM, as well as coolant
temperature. Also available through debugfs is the firmware version.

Attaching a fan is optional and allows it to be controlled from the
device. If it's not connected, the fan-related sensors will report
zeroes.

The addressable RGB LEDs and LCD screen are not supported in this
driver and should be controlled through userspace tools.

[1]: https://github.com/liquidctl/liquidctl/issues/167Signed-off-by: default avatarAleksa Savic <savicaleksa83@gmail.com>
Link: https://lore.kernel.org/r/20231207122402.107032-1-savicaleksa83@gmail.comSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 7ae587eb
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver gigabyte_waterforce
=================================
Supported devices:
* Gigabyte AORUS WATERFORCE X240
* Gigabyte AORUS WATERFORCE X280
* Gigabyte AORUS WATERFORCE X360
Author: Aleksa Savic
Description
-----------
This driver enables hardware monitoring support for the listed Gigabyte Waterforce
all-in-one CPU liquid coolers. Available sensors are pump and fan speed in RPM, as
well as coolant temperature. Also available through debugfs is the firmware version.
Attaching a fan is optional and allows it to be controlled from the device. If
it's not connected, the fan-related sensors will report zeroes.
The addressable RGB LEDs and LCD screen are not supported in this driver and should
be controlled through userspace tools.
Usage notes
-----------
As these are USB HIDs, the driver can be loaded automatically by the kernel and
supports hot swapping.
Sysfs entries
-------------
=========== =============================================
fan1_input Fan speed (in rpm)
fan2_input Pump speed (in rpm)
temp1_input Coolant temperature (in millidegrees Celsius)
=========== =============================================
Debugfs entries
---------------
================ =======================
firmware_version Device firmware version
================ =======================
...@@ -73,6 +73,7 @@ Hardware Monitoring Kernel Drivers ...@@ -73,6 +73,7 @@ Hardware Monitoring Kernel Drivers
ftsteutates ftsteutates
g760a g760a
g762 g762
gigabyte_waterforce
gsc-hwmon gsc-hwmon
gl518sm gl518sm
gxp-fan-ctrl gxp-fan-ctrl
......
...@@ -8916,6 +8916,13 @@ F: Documentation/filesystems/gfs2* ...@@ -8916,6 +8916,13 @@ F: Documentation/filesystems/gfs2*
F: fs/gfs2/ F: fs/gfs2/
F: include/uapi/linux/gfs2_ondisk.h F: include/uapi/linux/gfs2_ondisk.h
GIGABYTE WATERFORCE SENSOR DRIVER
M: Aleksa Savic <savicaleksa83@gmail.com>
L: linux-hwmon@vger.kernel.org
S: Maintained
F: Documentation/hwmon/gigabyte_waterforce.rst
F: drivers/hwmon/gigabyte_waterforce.c
GIGABYTE WMI DRIVER GIGABYTE WMI DRIVER
M: Thomas Weißschuh <thomas@weissschuh.net> M: Thomas Weißschuh <thomas@weissschuh.net>
L: platform-driver-x86@vger.kernel.org L: platform-driver-x86@vger.kernel.org
......
...@@ -664,6 +664,16 @@ config SENSORS_FTSTEUTATES ...@@ -664,6 +664,16 @@ config SENSORS_FTSTEUTATES
This driver can also be built as a module. If so, the module This driver can also be built as a module. If so, the module
will be called ftsteutates. will be called ftsteutates.
config SENSORS_GIGABYTE_WATERFORCE
tristate "Gigabyte Waterforce X240/X280/X360 AIO CPU coolers"
depends on USB_HID
help
If you say yes here you get support for hardware monitoring for the
Gigabyte Waterforce X240/X280/X360 all-in-one CPU liquid coolers.
This driver can also be built as a module. If so, the module
will be called gigabyte_waterforce.
config SENSORS_GL518SM config SENSORS_GL518SM
tristate "Genesys Logic GL518SM" tristate "Genesys Logic GL518SM"
depends on I2C depends on I2C
......
...@@ -80,6 +80,7 @@ obj-$(CONFIG_SENSORS_FSCHMD) += fschmd.o ...@@ -80,6 +80,7 @@ obj-$(CONFIG_SENSORS_FSCHMD) += fschmd.o
obj-$(CONFIG_SENSORS_FTSTEUTATES) += ftsteutates.o obj-$(CONFIG_SENSORS_FTSTEUTATES) += ftsteutates.o
obj-$(CONFIG_SENSORS_G760A) += g760a.o obj-$(CONFIG_SENSORS_G760A) += g760a.o
obj-$(CONFIG_SENSORS_G762) += g762.o obj-$(CONFIG_SENSORS_G762) += g762.o
obj-$(CONFIG_SENSORS_GIGABYTE_WATERFORCE) += gigabyte_waterforce.o
obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o
obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o
obj-$(CONFIG_SENSORS_GSC) += gsc-hwmon.o obj-$(CONFIG_SENSORS_GSC) += gsc-hwmon.o
......
This diff is collapsed.
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