linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/7] Drivers to support the MCU on QNAP NAS devices
@ 2024-08-10 18:47 Heiko Stuebner
  2024-08-10 18:47 ` [PATCH v4 1/7] dt-bindings: mfd: add binding for qnap,ts433-mcu devices Heiko Stuebner
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Heiko Stuebner @ 2024-08-10 18:47 UTC (permalink / raw)
  To: lee, jdelvare, linux, dmitry.torokhov, pavel
  Cc: robh, krzk+dt, conor+dt, heiko, ukleinek, devicetree,
	linux-kernel, linux-arm-kernel, linux-rockchip, linux-hwmon,
	linux-input, linux-leds

This implements a set of drivers for the MCU used on QNAP NAS devices.

Of course no documentation for the serial protocol is available, so
thankfully QNAP has a tool on their rescue-inird to talk to the MCU and
I found interceptty [0] to listen to what goes over the serial connection.

In general it looks like there are two different generations in general,
an "EC" device and now this "MCU" - referenced in the strings of the
userspace handlers for those devices.

For the MCU "SPEC3" and "SPEC4" are listed which is configured in
the model.conf of the device. When setting the value from SPEC4 to
SPEC3 on my TS433, the supported commands change, but the command
interface stays the same and especially the version command is the
same.

The binding also does not expose any interals of the device that
might change, so hopefully there shouldn't be big roadblocks to
support different devices, apart from possibly adapting the commands.


changes in v4:
binding:
- move cooling properties into a fan subnode and reference
  fan-common.yaml (Rob)
- dropped Krzysztof's Ack because of this

mfd:
- use correct format-string for size_t (kernel test robot)

input:
- added Dmitry's Ack

hwmon:
- adapted to fan-subnode when reading cooling properties
- dropped Guenter's Ack because of this


changes in v3:
mfd
- use correct power-off priority: default
- constify the cmd-data array in command functions (Dmitry)

leds:
- don't point to temporary buffers for cdev->name (Florian Eckert)

hwmon:
- use clamp_val(), don't try to reimplement (Guenter)
- add Guenter's Ack

input:
address Dmitry's comments
- constify some cmd arrays
- add input-close callback to cancel beep worker
- drop initial input event report


changes in v2:
binding:
- rename to qnap,ts433-mcu.yaml (Krzysztof)
- drop "preserve formatting" indicator (Krzysztof)
- add Krzysztof's Review tag

mfd:
- fix checkpatch --strict CHECKs
- add a MAINTAINERS entry for all qnap-mcu-parts

hwmon:
address Guenter's review comments:
- fix checkpatch strict warnings
  I've kept the devm_thermal_of_cooling_device_register alignment,
  because that line is so long that aligning to the "(" would make
  things way too long and unreadable
- add hwmon documentation
- spelling corrections
- report actual pwm value, not last-set one
- make some cmd arrays static
- drop pwm_enable as the pwm-mode is not controllable
- actually handle error returns from mcu commands
- fix calculation of fan-rpm (I read my notes wrong)
- fix temperature calculation to return millicelsius as expected
- only bail at obviously wrong pwm values, but clamp to min,max
- only register cooling-device if cooling-levels are available


[0] https://github.com/geoffmeyers/interceptty

Heiko Stuebner (7):
  dt-bindings: mfd: add binding for qnap,ts433-mcu devices
  mfd: add base driver for qnap-mcu devices
  leds: add driver for LEDs from qnap-mcu devices
  Input: add driver for the input part of qnap-mcu devices
  hwmon: add driver for the hwmon parts of qnap-mcu devices
  arm64: dts: rockchip: hook up the MCU on the QNAP TS433
  arm64: dts: rockchip: set hdd led labels on qnap-ts433

 .../bindings/mfd/qnap,ts433-mcu.yaml          |  42 ++
 Documentation/hwmon/index.rst                 |   1 +
 Documentation/hwmon/qnap-mcu-hwmon.rst        |  27 ++
 MAINTAINERS                                   |   9 +
 .../boot/dts/rockchip/rk3568-qnap-ts433.dts   |  61 +++
 drivers/hwmon/Kconfig                         |  12 +
 drivers/hwmon/Makefile                        |   1 +
 drivers/hwmon/qnap-mcu-hwmon.c                | 392 ++++++++++++++++++
 drivers/input/misc/Kconfig                    |  12 +
 drivers/input/misc/Makefile                   |   1 +
 drivers/input/misc/qnap-mcu-input.c           | 161 +++++++
 drivers/leds/Kconfig                          |  11 +
 drivers/leds/Makefile                         |   1 +
 drivers/leds/leds-qnap-mcu.c                  | 247 +++++++++++
 drivers/mfd/Kconfig                           |  10 +
 drivers/mfd/Makefile                          |   2 +
 drivers/mfd/qnap-mcu.c                        | 358 ++++++++++++++++
 include/linux/mfd/qnap-mcu.h                  |  28 ++
 18 files changed, 1376 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mfd/qnap,ts433-mcu.yaml
 create mode 100644 Documentation/hwmon/qnap-mcu-hwmon.rst
 create mode 100644 drivers/hwmon/qnap-mcu-hwmon.c
 create mode 100644 drivers/input/misc/qnap-mcu-input.c
 create mode 100644 drivers/leds/leds-qnap-mcu.c
 create mode 100644 drivers/mfd/qnap-mcu.c
 create mode 100644 include/linux/mfd/qnap-mcu.h

-- 
2.39.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2024-08-22 10:10 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-10 18:47 [PATCH v4 0/7] Drivers to support the MCU on QNAP NAS devices Heiko Stuebner
2024-08-10 18:47 ` [PATCH v4 1/7] dt-bindings: mfd: add binding for qnap,ts433-mcu devices Heiko Stuebner
2024-08-12 16:11   ` Conor Dooley
2024-08-10 18:47 ` [PATCH v4 2/7] mfd: add base driver for qnap-mcu devices Heiko Stuebner
2024-08-16 17:13   ` Lee Jones
2024-08-18 21:15     ` Heiko Stübner
2024-08-22 10:10       ` Lee Jones
2024-08-10 18:47 ` [PATCH v4 3/7] leds: add driver for LEDs from " Heiko Stuebner
2024-08-10 18:47 ` [PATCH v4 4/7] Input: add driver for the input part of " Heiko Stuebner
2024-08-10 18:47 ` [PATCH v4 5/7] hwmon: add driver for the hwmon parts " Heiko Stuebner
2024-08-13 16:03   ` Guenter Roeck
2024-08-13 20:39     ` Heiko Stübner
2024-08-10 18:47 ` [PATCH v4 6/7] arm64: dts: rockchip: hook up the MCU on the QNAP TS433 Heiko Stuebner
2024-08-10 18:47 ` [PATCH v4 7/7] arm64: dts: rockchip: set hdd led labels on qnap-ts433 Heiko Stuebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).