.../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/hid/hid-sensor-hub.c | 21 +- drivers/hwmon/Kconfig | 12 + drivers/hwmon/Makefile | 1 + drivers/hwmon/qnap-mcu-hwmon.c | 364 ++++++++++++++++++ drivers/input/misc/Kconfig | 12 + drivers/input/misc/Makefile | 1 + drivers/input/misc/qnap-mcu-input.c | 153 ++++++++ drivers/leds/Kconfig | 11 + drivers/leds/Makefile | 1 + drivers/leds/leds-qnap-mcu.c | 227 +++++++++++ drivers/mfd/Kconfig | 13 + drivers/mfd/Makefile | 2 + drivers/mfd/qnap-mcu.c | 338 ++++++++++++++++ include/linux/mfd/core.h | 2 +- include/linux/mfd/qnap-mcu.h | 26 ++ 20 files changed, 1316 insertions(+), 8 deletions(-) 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
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 v9:
- add Acks + cc-stable to HID patch
- make timeout-value a constant in core mfd-driver
- some flush serdev before sending a new command
changes in v8:
- patch for hid-sensor hub to not do wonky stuff with an old
platform-data copy
I hope my reading of the situation is correct here, but that
initial platform_data really seemed wrong
mfd:
- flush serial before writing a new command
- wait for send to complete before starting the receive wait-timeout
- set expected length to 0 directly when the reply is complete
not after leaving the receive callback
changes in v7:
- use ASCII representation in commands where possible instead of hex vals
- drop get_variant function and use mfd platform-data instead
mfd:
- a lot of style improvements
leds:
- name variables better (value -> brightness, num -> num_err_led)
- handle preservation of blink mode more effectively
- snprintf -> scnprintf
- drop duplicate "failed to register ... LED" messages
changes in v6:
- format mcu commands arrays in single lines (Lee)
mfd:
- drop obsolete remain kdoc for the removed
reply_lock (kernel test robot)
changes in v5:
binding:
- add Conor's Reviewed-by
mfd:
Address comments from Lee
- improve commit message
- improve Kconfig help text
- sort headers alphabetical
- style and spelling improvements
- constants for magic numbers
- drop reply assignment, the mcu only replies to commands sent to it,
so there should only ever be one command in fligth.
hwmon:
Add Acked-by from Guenter and address some remarks
- don't allow empty fan subnode
- use num var directly when getting cooling levels, without using ret
intermediate
- use dev_err_probe in thermal init function
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
Heiko Stuebner (9):
HID: hid-sensor-hub: don't use stale platform-data on remove
mfd: core: make platform_data pointer const in struct mfd_cell
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/hid/hid-sensor-hub.c | 21 +-
drivers/hwmon/Kconfig | 12 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/qnap-mcu-hwmon.c | 364 ++++++++++++++++++
drivers/input/misc/Kconfig | 12 +
drivers/input/misc/Makefile | 1 +
drivers/input/misc/qnap-mcu-input.c | 153 ++++++++
drivers/leds/Kconfig | 11 +
drivers/leds/Makefile | 1 +
drivers/leds/leds-qnap-mcu.c | 227 +++++++++++
drivers/mfd/Kconfig | 13 +
drivers/mfd/Makefile | 2 +
drivers/mfd/qnap-mcu.c | 338 ++++++++++++++++
include/linux/mfd/core.h | 2 +-
include/linux/mfd/qnap-mcu.h | 26 ++
20 files changed, 1316 insertions(+), 8 deletions(-)
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.45.2
On Thu, 07 Nov 2024 12:47:03 +0100, Heiko Stuebner wrote:
> 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.
>
> [...]
Applied, thanks!
[1/9] HID: hid-sensor-hub: don't use stale platform-data on remove
commit: e079a120f31e3f9c00180aa13c1df18cc138f7fe
[2/9] mfd: core: make platform_data pointer const in struct mfd_cell
commit: 8f4009ad901c44f0428dbde654c4dd1fb29c863b
[3/9] dt-bindings: mfd: add binding for qnap,ts433-mcu devices
commit: 8877bcff3e3b4f08a1fc0232dbfdaeda085cfdf3
[4/9] mfd: add base driver for qnap-mcu devices
commit: 944ca826f69e4723853b3876875b03aeafe67b60
[5/9] leds: add driver for LEDs from qnap-mcu devices
commit: fe6a21ee38f12e3e5f9adbd2f9a840be105b943f
[6/9] Input: add driver for the input part of qnap-mcu devices
commit: 4b27e0da257371d3d141fae38fdbdc3c3a67bce6
[7/9] hwmon: add driver for the hwmon parts of qnap-mcu devices
commit: 41755872a8a8ab8d1644459d9634c53b743fe2be
[8/9] arm64: dts: rockchip: hook up the MCU on the QNAP TS433
(no commit info)
[9/9] arm64: dts: rockchip: set hdd led labels on qnap-ts433
(no commit info)
--
Lee Jones [李琼斯]
On Thu, 12 Dec 2024, Lee Jones wrote: > On Thu, 07 Nov 2024 12:47:03 +0100, Heiko Stuebner wrote: > > 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. > > > > [...] > > Applied, thanks! > > [1/9] HID: hid-sensor-hub: don't use stale platform-data on remove > commit: e079a120f31e3f9c00180aa13c1df18cc138f7fe > [2/9] mfd: core: make platform_data pointer const in struct mfd_cell > commit: 8f4009ad901c44f0428dbde654c4dd1fb29c863b > [3/9] dt-bindings: mfd: add binding for qnap,ts433-mcu devices > commit: 8877bcff3e3b4f08a1fc0232dbfdaeda085cfdf3 > [4/9] mfd: add base driver for qnap-mcu devices > commit: 944ca826f69e4723853b3876875b03aeafe67b60 > [5/9] leds: add driver for LEDs from qnap-mcu devices > commit: fe6a21ee38f12e3e5f9adbd2f9a840be105b943f > [6/9] Input: add driver for the input part of qnap-mcu devices > commit: 4b27e0da257371d3d141fae38fdbdc3c3a67bce6 > [7/9] hwmon: add driver for the hwmon parts of qnap-mcu devices > commit: 41755872a8a8ab8d1644459d9634c53b743fe2be Once build testing is complete, I'll send out a PR. Note to self: ib-mfd-hid-hwmon-input-leds-6.14 -- Lee Jones [李琼斯]
Am Donnerstag, 12. Dezember 2024, 18:19:54 CET schrieb Lee Jones: > On Thu, 12 Dec 2024, Lee Jones wrote: > > > On Thu, 07 Nov 2024 12:47:03 +0100, Heiko Stuebner wrote: > > > 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. > > > > > > [...] > > > > Applied, thanks! > > > > [1/9] HID: hid-sensor-hub: don't use stale platform-data on remove > > commit: e079a120f31e3f9c00180aa13c1df18cc138f7fe > > [2/9] mfd: core: make platform_data pointer const in struct mfd_cell > > commit: 8f4009ad901c44f0428dbde654c4dd1fb29c863b > > [3/9] dt-bindings: mfd: add binding for qnap,ts433-mcu devices > > commit: 8877bcff3e3b4f08a1fc0232dbfdaeda085cfdf3 > > [4/9] mfd: add base driver for qnap-mcu devices > > commit: 944ca826f69e4723853b3876875b03aeafe67b60 > > [5/9] leds: add driver for LEDs from qnap-mcu devices > > commit: fe6a21ee38f12e3e5f9adbd2f9a840be105b943f > > [6/9] Input: add driver for the input part of qnap-mcu devices > > commit: 4b27e0da257371d3d141fae38fdbdc3c3a67bce6 > > [7/9] hwmon: add driver for the hwmon parts of qnap-mcu devices > > commit: 41755872a8a8ab8d1644459d9634c53b743fe2be > > Once build testing is complete, I'll send out a PR. thanks a lot for picking up the driver patches. Heiko
On Thu, 12 Dec 2024, Lee Jones wrote: > On Thu, 07 Nov 2024 12:47:03 +0100, Heiko Stuebner wrote: > > 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. > > > > [...] > > Applied, thanks! > > [1/9] HID: hid-sensor-hub: don't use stale platform-data on remove > commit: e079a120f31e3f9c00180aa13c1df18cc138f7fe > [2/9] mfd: core: make platform_data pointer const in struct mfd_cell > commit: 8f4009ad901c44f0428dbde654c4dd1fb29c863b > [3/9] dt-bindings: mfd: add binding for qnap,ts433-mcu devices > commit: 8877bcff3e3b4f08a1fc0232dbfdaeda085cfdf3 > [4/9] mfd: add base driver for qnap-mcu devices > commit: 944ca826f69e4723853b3876875b03aeafe67b60 > [5/9] leds: add driver for LEDs from qnap-mcu devices > commit: fe6a21ee38f12e3e5f9adbd2f9a840be105b943f > [6/9] Input: add driver for the input part of qnap-mcu devicesj > commit: 4b27e0da257371d3d141fae38fdbdc3c3a67bce6 > [7/9] hwmon: add driver for the hwmon parts of qnap-mcu devices > commit: 41755872a8a8ab8d1644459d9634c53b743fe2be > [8/9] arm64: dts: rockchip: hook up the MCU on the QNAP TS433 > (no commit info) > [9/9] arm64: dts: rockchip: set hdd led labels on qnap-ts433 > (no commit info) As you can see, I have _not_ applied these two DTS patches. -- Lee Jones [李琼斯]
Enjoy!
The following changes since commit 40384c840ea1944d7c5a392e8975ed088ecf0b37:
Linux 6.13-rc1 (2024-12-01 14:28:56 -0800)
are available in the Git repository at:
ssh://git@gitolite.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git tags/ib-mfd-hid-hwmon-input-leds-v6.14
for you to fetch changes up to 9855caf5d4eb1d8b8bba60be256186ea8e0f907c:
hwmon: add driver for the hwmon parts of qnap-mcu devices (2024-12-17 13:14:48 +0000)
----------------------------------------------------------------
Immutable branch between MFD, HID, HWMON, Input and LEDs due for the v6.14 merge window
----------------------------------------------------------------
Heiko Stuebner (7):
HID: hid-sensor-hub: don't use stale platform-data on remove
mfd: core: Make platform_data pointer const in struct mfd_cell
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
.../devicetree/bindings/mfd/qnap,ts433-mcu.yaml | 42 +++
Documentation/hwmon/index.rst | 1 +
Documentation/hwmon/qnap-mcu-hwmon.rst | 27 ++
MAINTAINERS | 9 +
drivers/hid/hid-sensor-hub.c | 21 +-
drivers/hwmon/Kconfig | 12 +
drivers/hwmon/Makefile | 1 +
drivers/hwmon/qnap-mcu-hwmon.c | 364 +++++++++++++++++++++
drivers/input/misc/Kconfig | 12 +
drivers/input/misc/Makefile | 1 +
drivers/input/misc/qnap-mcu-input.c | 153 +++++++++
drivers/leds/Kconfig | 11 +
drivers/leds/Makefile | 1 +
drivers/leds/leds-qnap-mcu.c | 227 +++++++++++++
drivers/mfd/Kconfig | 13 +
drivers/mfd/Makefile | 2 +
drivers/mfd/qnap-mcu.c | 338 +++++++++++++++++++
include/linux/mfd/core.h | 2 +-
include/linux/mfd/qnap-mcu.h | 26 ++
19 files changed, 1255 insertions(+), 8 deletions(-)
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
--
Lee Jones [李琼斯]
On Thu, 07 Nov 2024 12:47:03 +0100, Heiko Stuebner wrote:
> 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.
>
> [...]
Applied, thanks!
[8/9] arm64: dts: rockchip: hook up the MCU on the QNAP TS433
commit: 989e3dd871349e76919911ac628e97ff6cb1ad51
[9/9] arm64: dts: rockchip: set hdd led labels on qnap-ts433
commit: 47f34eab58294d7bb2583f9519b4022e74d56437
Best regards,
--
Heiko Stuebner <heiko@sntech.de>
© 2016 - 2026 Red Hat, Inc.