Skip to content

Commit

Permalink
hwmon: add driver for the hwmon parts of qnap-mcu devices
Browse files Browse the repository at this point in the history
The MCU can be found on network-attached-storage devices made by QNAP
and provides access to fan control including reading back its RPM as
well as reading the temperature of the NAS case.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20241107114712.538976-8-heiko@sntech.de
Signed-off-by: Lee Jones <lee@kernel.org>
  • Loading branch information
Heiko Stuebner authored and Lee Jones committed Dec 17, 2024
1 parent bb7e361 commit 9855caf
Show file tree
Hide file tree
Showing 6 changed files with 406 additions and 0 deletions.
1 change: 1 addition & 0 deletions Documentation/hwmon/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ Hardware Monitoring Kernel Drivers
pxe1610
pwm-fan
q54sj108a2
qnap-mcu-hwmon
raspberrypi-hwmon
sbrmi
sbtsi_temp
Expand Down
27 changes: 27 additions & 0 deletions Documentation/hwmon/qnap-mcu-hwmon.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
Kernel driver qnap-mcu-hwmon
============================

This driver enables the use of the hardware monitoring and fan control
of the MCU used on some QNAP network attached storage devices.

Author: Heiko Stuebner <heiko@sntech.de>

Description
-----------

The driver implements a simple interface for driving the fan controlled by
setting its PWM output value and exposes the fan rpm and case-temperature
to user space through hwmon's sysfs interface.

The fan rotation speed returned via the optional 'fan1_input' is calculated
inside the MCU device.

The driver provides the following sensor accesses in sysfs:

=============== ======= =======================================================
fan1_input ro fan tachometer speed in RPM
pwm1 rw relative speed (0-255), 255=max. speed.
temp1_input ro Measured temperature in millicelsius
=============== ======= =======================================================
1 change: 1 addition & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -19108,6 +19108,7 @@ F: drivers/media/tuners/qm1d1c0042*
QNAP MCU DRIVER
M: Heiko Stuebner <heiko@sntech.de>
S: Maintained
F: drivers/hwmon/qnap-mcu-hwmon.c
F: drivers/input/misc/qnap-mcu-input.c
F: drivers/leds/leds-qnap-mcu.c
F: drivers/mfd/qnap-mcu.c
Expand Down
12 changes: 12 additions & 0 deletions drivers/hwmon/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1822,6 +1822,18 @@ config SENSORS_PWM_FAN
This driver can also be built as a module. If so, the module
will be called pwm-fan.

config SENSORS_QNAP_MCU_HWMON
tristate "QNAP MCU hardware monitoring"
depends on MFD_QNAP_MCU
depends on THERMAL || THERMAL=n
help
Say yes here to enable support for fan and temperature sensor
connected to a QNAP MCU, as found in a number of QNAP network
attached storage devices.

This driver can also be built as a module. If so, the module
will be called qnap-mcu-hwmon.

config SENSORS_RASPBERRYPI_HWMON
tristate "Raspberry Pi voltage monitor"
depends on RASPBERRYPI_FIRMWARE || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
Expand Down
1 change: 1 addition & 0 deletions drivers/hwmon/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ obj-$(CONFIG_SENSORS_POWERZ) += powerz.o
obj-$(CONFIG_SENSORS_POWR1220) += powr1220.o
obj-$(CONFIG_SENSORS_PT5161L) += pt5161l.o
obj-$(CONFIG_SENSORS_PWM_FAN) += pwm-fan.o
obj-$(CONFIG_SENSORS_QNAP_MCU_HWMON) += qnap-mcu-hwmon.o
obj-$(CONFIG_SENSORS_RASPBERRYPI_HWMON) += raspberrypi-hwmon.o
obj-$(CONFIG_SENSORS_SBTSI) += sbtsi_temp.o
obj-$(CONFIG_SENSORS_SBRMI) += sbrmi.o
Expand Down
Loading

0 comments on commit 9855caf

Please sign in to comment.