* [PATCH 0/2] Introduce Synology Microp driver
@ 2026-03-06 19:38 Markus Probst
2026-03-06 19:38 ` [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices Markus Probst
2026-03-06 19:38 ` [PATCH 2/2] staging: Add initial synology microp driver Markus Probst
0 siblings, 2 replies; 13+ messages in thread
From: Markus Probst @ 2026-03-06 19:38 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, Danilo Krummrich
Cc: devicetree, linux-kernel, linux-staging, rust-for-linux,
Markus Probst
Synology uses a microcontroller in their NAS devices connected to a
serial port to control certain LEDs, fan speeds, a beeper, to handle
proper shutdown and restart, buttons and fan failures.
This patch series depends on the rust led abstraction [1] and the rust
serdev abstraction [2].
This is only a initial version of the driver able to control LEDs and thus
goes into the staging tree.
The following rust abstractions would be required, to implement the
remaining features:
- hwmon (include/linux/hwmon.h)
- input (include/linux/input.h)
- sysoff handler + hardware protection shutdown (include/linux/reboot.h)
[1] https://lore.kernel.org/rust-for-linux/20260207-rust_leds-v12-0-fdb518417b75@posteo.de/
[2] https://lore.kernel.org/rust-for-linux/20260306-rust_serdev-v2-0-e9b23b42b255@posteo.de/
Signed-off-by: Markus Probst <markus.probst@posteo.de>
---
Markus Probst (2):
dt-bindings: mfd: Add binding for synology,microp devices
staging: Add initial synology microp driver
.../devicetree/bindings/mfd/synology,microp.yaml | 75 +++++++
MAINTAINERS | 6 +
drivers/staging/Kconfig | 2 +
drivers/staging/Makefile | 1 +
drivers/staging/synology_microp/Kconfig | 4 +
drivers/staging/synology_microp/Makefile | 2 +
drivers/staging/synology_microp/TODO | 8 +
drivers/staging/synology_microp/command.rs | 48 +++++
drivers/staging/synology_microp/led.rs | 229 +++++++++++++++++++++
drivers/staging/synology_microp/synology_microp.rs | 73 +++++++
rust/uapi/uapi_helper.h | 2 +
11 files changed, 450 insertions(+)
---
base-commit: 9fad1d148df6f36105159c2503d0ecb1397bc89a
change-id: 20260306-synology_microp_initial-0f7dac7b7496
prerequisite-change-id: 20251217-rust_serdev-ee5481e9085c:v2
prerequisite-patch-id: 52b17274481cc770c257d8f95335293eca32a2c5
prerequisite-patch-id: 680c0509490833f416b17eb3b918bb829ce7b90f
prerequisite-patch-id: 37016d6c07f0da898be02bf30110e8c0a30025d2
prerequisite-patch-id: 3dfc1f7e5ecd3e0dd65d676aeb16f55260847b25
prerequisite-change-id: 20251114-rust_leds-a959f7c2f7f9:v12
prerequisite-patch-id: 42c445ef6981e3a3740dbaaf307f4b810042e46f
prerequisite-patch-id: 90c7b200cca722a592353885e21af069101c4e09
prerequisite-patch-id: c664a52faa3d47000d252eb7603c9c08382e868a
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-06 19:38 [PATCH 0/2] Introduce Synology Microp driver Markus Probst @ 2026-03-06 19:38 ` Markus Probst 2026-03-07 10:20 ` Krzysztof Kozlowski 2026-03-07 15:42 ` Krzysztof Kozlowski 2026-03-06 19:38 ` [PATCH 2/2] staging: Add initial synology microp driver Markus Probst 1 sibling, 2 replies; 13+ messages in thread From: Markus Probst @ 2026-03-06 19:38 UTC (permalink / raw) To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux, Markus Probst Add the Synology Microp devicetree bindings. Those devices are microcontrollers found on Synology NAS devices. They are connected to a serial port on the host device. Those devices are used to control certain LEDs, fan speeds, a beeper, to handle buttons, fan failures and to properly shutdown and reboot the device. Signed-off-by: Markus Probst <markus.probst@posteo.de> --- .../devicetree/bindings/mfd/synology,microp.yaml | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/Documentation/devicetree/bindings/mfd/synology,microp.yaml b/Documentation/devicetree/bindings/mfd/synology,microp.yaml new file mode 100644 index 000000000000..0fcb0b750bf0 --- /dev/null +++ b/Documentation/devicetree/bindings/mfd/synology,microp.yaml @@ -0,0 +1,75 @@ +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mfd/synology,microp.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Synology NAS on-board Microcontroller + +maintainers: + - Markus Probst <markus.probst@posteo.de> + +description: | + Synology devices contain a microcontroller on their device to control + certain leds, fan speeds, a beeper, to properly handle system shutdown + and reboot, buttons and fan failures. + +properties: + compatible: + enum: + - synology,microp + power-led: + $ref: /schemas/leds/common.yaml + unevaluatedProperties: false + status-led: + $ref: /schemas/leds/common.yaml + unevaluatedProperties: false + alert-led: + $ref: /schemas/leds/common.yaml + unevaluatedProperties: false + usb-led: + $ref: /schemas/leds/common.yaml + unevaluatedProperties: false + no-check-fan: + type: boolean + description: | + Disable fan failure check. + + The fan failure event is triggered on the device, even if the fan + has been intentionally set to a low speed. This property prevents a + hardware protection shutdown if a fan failure event is reported. + no-check-cpu-fan: + type: boolean + description: | + Disable cpu fan failure check. + + The cpu fan failure event is triggered on the device, even if the cpu + fan has been intentionally set to a low speed. This property prevents + a hardware protection shutdown if a cpu fan failure event is + reported. + +required: + - compatible + - power-led + - status-led + +additionalProperties: false + +examples: + - | + #include <dt-bindings/leds/common.h> + + uart { + microp { + compatible = "synology,microp"; + + power-led { + color = <LED_COLOR_ID_BLUE>; + function = LED_FUNCTION_POWER; + }; + + status-led { + color = <LED_COLOR_ID_MULTI>; + function = LED_FUNCTION_STATUS; + }; + }; + }; -- 2.52.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-06 19:38 ` [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices Markus Probst @ 2026-03-07 10:20 ` Krzysztof Kozlowski 2026-03-07 14:25 ` Krzysztof Kozlowski ` (2 more replies) 2026-03-07 15:42 ` Krzysztof Kozlowski 1 sibling, 3 replies; 13+ messages in thread From: Krzysztof Kozlowski @ 2026-03-07 10:20 UTC (permalink / raw) To: Markus Probst, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux On 06/03/2026 20:38, Markus Probst wrote: > Add the Synology Microp devicetree bindings. Those devices are > microcontrollers found on Synology NAS devices. They are connected to a > serial port on the host device. A nit, subject: drop second/last, redundant "binding for". The "dt-bindings" prefix is already stating that these are bindings. See also: https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18 > > Those devices are used to control certain LEDs, fan speeds, a beeper, to > handle buttons, fan failures and to properly shutdown and reboot the > device. > > Signed-off-by: Markus Probst <markus.probst@posteo.de> > --- > .../devicetree/bindings/mfd/synology,microp.yaml | 75 ++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/synology,microp.yaml b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > new file mode 100644 > index 000000000000..0fcb0b750bf0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > @@ -0,0 +1,75 @@ > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/synology,microp.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Synology NAS on-board Microcontroller > + > +maintainers: > + - Markus Probst <markus.probst@posteo.de> > + > +description: | Do not need '|' unless you need to preserve formatting. > + Synology devices contain a microcontroller on their device to control > + certain leds, fan speeds, a beeper, to properly handle system shutdown > + and reboot, buttons and fan failures. > + > +properties: > + compatible: > + enum: > + - synology,microp Missing blank line. Look at other bindings how to write one. > + power-led: > + $ref: /schemas/leds/common.yaml > + unevaluatedProperties: false > + status-led: > + $ref: /schemas/leds/common.yaml > + unevaluatedProperties: false > + alert-led: > + $ref: /schemas/leds/common.yaml > + unevaluatedProperties: false > + usb-led: > + $ref: /schemas/leds/common.yaml > + unevaluatedProperties: false That's pretty unreadable code. > + no-check-fan: Vendor prefix > + type: boolean > + description: | > + Disable fan failure check. You described the desired Linux feature or behavior, not the actual hardware. The bindings are about the latter, so instead you need to rephrase the property and its description to match actual hardware capabilities/features/configuration etc. > + > + The fan failure event is triggered on the device, even if the fan > + has been intentionally set to a low speed. This property prevents a > + hardware protection shutdown if a fan failure event is reported. > + no-check-cpu-fan: You described the desired Linux feature or behavior, not the actual hardware. The bindings are about the latter, so instead you need to rephrase the property and its description to match actual hardware capabilities/features/configuration etc. > + type: boolean > + description: | > + Disable cpu fan failure check. > + > + The cpu fan failure event is triggered on the device, even if the cpu > + fan has been intentionally set to a low speed. This property prevents > + a hardware protection shutdown if a cpu fan failure event is > + reported. > + > +required: > + - compatible > + - power-led > + - status-led > + > +additionalProperties: false > + > +examples: > + - | > + #include <dt-bindings/leds/common.h> > + > + uart { Drop, unuesed > + microp { Node names should be generic. See also an explanation and list of examples (not exhaustive) in DT specification: https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation If you cannot find a name matching your device, please check in kernel sources for similar cases or you can grow the spec (via pull request to DT spec repo). > + compatible = "synology,microp"; > + > + power-led { > + color = <LED_COLOR_ID_BLUE>; > + function = LED_FUNCTION_POWER; > + }; > + > + status-led { > + color = <LED_COLOR_ID_MULTI>; > + function = LED_FUNCTION_STATUS; > + }; > + }; > + }; > Best regards, Krzysztof ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-07 10:20 ` Krzysztof Kozlowski @ 2026-03-07 14:25 ` Krzysztof Kozlowski 2026-03-07 14:43 ` Markus Probst 2026-03-07 15:03 ` Markus Probst 2 siblings, 0 replies; 13+ messages in thread From: Krzysztof Kozlowski @ 2026-03-07 14:25 UTC (permalink / raw) To: Markus Probst, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux On 07/03/2026 11:20, Krzysztof Kozlowski wrote: >> + power-led: >> + $ref: /schemas/leds/common.yaml >> + unevaluatedProperties: false >> + status-led: >> + $ref: /schemas/leds/common.yaml >> + unevaluatedProperties: false >> + alert-led: >> + $ref: /schemas/leds/common.yaml >> + unevaluatedProperties: false >> + usb-led: >> + $ref: /schemas/leds/common.yaml >> + unevaluatedProperties: false > > That's pretty unreadable code. ... and could be simpler with patternProperties and regex > Best regards, Krzysztof ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-07 10:20 ` Krzysztof Kozlowski 2026-03-07 14:25 ` Krzysztof Kozlowski @ 2026-03-07 14:43 ` Markus Probst 2026-03-07 15:10 ` Krzysztof Kozlowski 2026-03-07 15:03 ` Markus Probst 2 siblings, 1 reply; 13+ messages in thread From: Markus Probst @ 2026-03-07 14:43 UTC (permalink / raw) To: Krzysztof Kozlowski, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux [-- Attachment #1: Type: text/plain, Size: 5406 bytes --] On Sat, 2026-03-07 at 11:20 +0100, Krzysztof Kozlowski wrote: > On 06/03/2026 20:38, Markus Probst wrote: > > Add the Synology Microp devicetree bindings. Those devices are > > microcontrollers found on Synology NAS devices. They are connected to a > > serial port on the host device. > > A nit, subject: drop second/last, redundant "binding for". The > "dt-bindings" prefix is already stating that these are bindings. > See also: > https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18 > > > > > Those devices are used to control certain LEDs, fan speeds, a beeper, to > > handle buttons, fan failures and to properly shutdown and reboot the > > device. > > > > Signed-off-by: Markus Probst <markus.probst@posteo.de> > > --- > > .../devicetree/bindings/mfd/synology,microp.yaml | 75 ++++++++++++++++++++++ > > 1 file changed, 75 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/mfd/synology,microp.yaml b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > > new file mode 100644 > > index 000000000000..0fcb0b750bf0 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > > @@ -0,0 +1,75 @@ > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mfd/synology,microp.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Synology NAS on-board Microcontroller > > + > > +maintainers: > > + - Markus Probst <markus.probst@posteo.de> > > + > > +description: | > > Do not need '|' unless you need to preserve formatting. > > > + Synology devices contain a microcontroller on their device to control > > + certain leds, fan speeds, a beeper, to properly handle system shutdown > > + and reboot, buttons and fan failures. > > + > > +properties: > > + compatible: > > + enum: > > + - synology,microp > > Missing blank line. Look at other bindings how to write one. > > > + power-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + status-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + alert-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + usb-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > That's pretty unreadable code. > > > + no-check-fan: > > Vendor prefix > > > + type: boolean > > + description: | > > + Disable fan failure check. > > You described the desired Linux feature or behavior, not the actual > hardware. The bindings are about the latter, so instead you need to > rephrase the property and its description to match actual hardware > capabilities/features/configuration etc. > > > + > > + The fan failure event is triggered on the device, even if the fan > > + has been intentionally set to a low speed. This property prevents a > > + hardware protection shutdown if a fan failure event is reported. > > + no-check-cpu-fan: > > You described the desired Linux feature or behavior, not the actual > hardware. The bindings are about the latter, so instead you need to > rephrase the property and its description to match actual hardware > capabilities/features/configuration etc. > > > + type: boolean > > + description: | > > + Disable cpu fan failure check. > > + > > + The cpu fan failure event is triggered on the device, even if the cpu > > + fan has been intentionally set to a low speed. This property prevents > > + a hardware protection shutdown if a cpu fan failure event is > > + reported. > > + > > +required: > > + - compatible > > + - power-led > > + - status-led > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/leds/common.h> > > + > > + uart { > > Drop, unuesed The device uses the serial device bus. Thus the device node needs to be inside a uart device node. The uart node represents a serial device port in that example. This is also done the same way in - Documentation/devicetree/bindings/mfd/qnap,ts433-mcu.yaml - Documentation/devicetree/bindings/net/nfc/marvell,nci.yaml - Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml > > > + microp { > > Node names should be generic. See also an explanation and list of > examples (not exhaustive) in DT specification: > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > If you cannot find a name matching your device, please check in kernel > sources for similar cases or you can grow the spec (via pull request to > DT spec repo). "mcu" seems the most fitting, altough it is not part of the list. It it used here though: - Documentation/devicetree/bindings/mfd/qnap,ts433-mcu.yaml > > > + compatible = "synology,microp"; > > + > > + power-led { > > + color = <LED_COLOR_ID_BLUE>; > > + function = LED_FUNCTION_POWER; > > + }; > > + > > + status-led { > > + color = <LED_COLOR_ID_MULTI>; > > + function = LED_FUNCTION_STATUS; > > + }; > > + }; > > + }; > > > > > Best regards, > Krzysztof Thanks - Markus Probst [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 870 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-07 14:43 ` Markus Probst @ 2026-03-07 15:10 ` Krzysztof Kozlowski 0 siblings, 0 replies; 13+ messages in thread From: Krzysztof Kozlowski @ 2026-03-07 15:10 UTC (permalink / raw) To: Markus Probst, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux On 07/03/2026 15:43, Markus Probst wrote: >>> + >>> +examples: >>> + - | >>> + #include <dt-bindings/leds/common.h> >>> + >>> + uart { >> >> Drop, unuesed > The device uses the serial device bus. Thus the device node needs to be > inside a uart device node. The uart node represents a serial device > port in that example. Still not used. > > This is also done the same way in > - Documentation/devicetree/bindings/mfd/qnap,ts433-mcu.yaml > - Documentation/devicetree/bindings/net/nfc/marvell,nci.yaml > - Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml Plenty of poor examples... > >> >>> + microp { >> >> Node names should be generic. See also an explanation and list of >> examples (not exhaustive) in DT specification: >> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation >> If you cannot find a name matching your device, please check in kernel >> sources for similar cases or you can grow the spec (via pull request to >> DT spec repo). > "mcu" seems the most fitting, altough it is not part of the list. > It it used here though: > - Documentation/devicetree/bindings/mfd/qnap,ts433-mcu.yaml Depending what this is. MCU is generic purpose unit where you load your different FW for different purposes and you have here specific - to handle certain aspects of this entire machine. This looks like EC, so should be called embedded-controller and placed in that directory. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-07 10:20 ` Krzysztof Kozlowski 2026-03-07 14:25 ` Krzysztof Kozlowski 2026-03-07 14:43 ` Markus Probst @ 2026-03-07 15:03 ` Markus Probst 2026-03-07 15:12 ` Krzysztof Kozlowski 2 siblings, 1 reply; 13+ messages in thread From: Markus Probst @ 2026-03-07 15:03 UTC (permalink / raw) To: Krzysztof Kozlowski, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux [-- Attachment #1: Type: text/plain, Size: 5478 bytes --] On Sat, 2026-03-07 at 11:20 +0100, Krzysztof Kozlowski wrote: > On 06/03/2026 20:38, Markus Probst wrote: > > Add the Synology Microp devicetree bindings. Those devices are > > microcontrollers found on Synology NAS devices. They are connected to a > > serial port on the host device. > > A nit, subject: drop second/last, redundant "binding for". The > "dt-bindings" prefix is already stating that these are bindings. > See also: > https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18 > > > > > Those devices are used to control certain LEDs, fan speeds, a beeper, to > > handle buttons, fan failures and to properly shutdown and reboot the > > device. > > > > Signed-off-by: Markus Probst <markus.probst@posteo.de> > > --- > > .../devicetree/bindings/mfd/synology,microp.yaml | 75 ++++++++++++++++++++++ > > 1 file changed, 75 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/mfd/synology,microp.yaml b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > > new file mode 100644 > > index 000000000000..0fcb0b750bf0 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > > @@ -0,0 +1,75 @@ > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mfd/synology,microp.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Synology NAS on-board Microcontroller > > + > > +maintainers: > > + - Markus Probst <markus.probst@posteo.de> > > + > > +description: | > > Do not need '|' unless you need to preserve formatting. > > > + Synology devices contain a microcontroller on their device to control > > + certain leds, fan speeds, a beeper, to properly handle system shutdown > > + and reboot, buttons and fan failures. > > + > > +properties: > > + compatible: > > + enum: > > + - synology,microp > > Missing blank line. Look at other bindings how to write one. > > > + power-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + status-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + alert-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > + usb-led: > > + $ref: /schemas/leds/common.yaml > > + unevaluatedProperties: false > > That's pretty unreadable code. > > > + no-check-fan: > > Vendor prefix In the documentation it says " Nonstandard property names should specify a unique string prefix, such as a stock ticker symbol, identifying the name of the company or organization that defined the property. " I am not sure whether to use synology or linux as vendor prefix here. The property itself was not defined by synology, but the property also is not necessarily specific to linux. The driver has to tell the device whether it should even check for fan failures. The property wouldn't alter behaviour of the driver, but of the device. The device itself would not check for fan failures anymore. Thanks - Markus Probst > > > + type: boolean > > + description: | > > + Disable fan failure check. > > You described the desired Linux feature or behavior, not the actual > hardware. The bindings are about the latter, so instead you need to > rephrase the property and its description to match actual hardware > capabilities/features/configuration etc. > > > + > > + The fan failure event is triggered on the device, even if the fan > > + has been intentionally set to a low speed. This property prevents a > > + hardware protection shutdown if a fan failure event is reported. > > + no-check-cpu-fan: > > You described the desired Linux feature or behavior, not the actual > hardware. The bindings are about the latter, so instead you need to > rephrase the property and its description to match actual hardware > capabilities/features/configuration etc. > > > + type: boolean > > + description: | > > + Disable cpu fan failure check. > > + > > + The cpu fan failure event is triggered on the device, even if the cpu > > + fan has been intentionally set to a low speed. This property prevents > > + a hardware protection shutdown if a cpu fan failure event is > > + reported. > > + > > +required: > > + - compatible > > + - power-led > > + - status-led > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + #include <dt-bindings/leds/common.h> > > + > > + uart { > > Drop, unuesed > > > + microp { > > Node names should be generic. See also an explanation and list of > examples (not exhaustive) in DT specification: > https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > If you cannot find a name matching your device, please check in kernel > sources for similar cases or you can grow the spec (via pull request to > DT spec repo). > > > + compatible = "synology,microp"; > > + > > + power-led { > > + color = <LED_COLOR_ID_BLUE>; > > + function = LED_FUNCTION_POWER; > > + }; > > + > > + status-led { > > + color = <LED_COLOR_ID_MULTI>; > > + function = LED_FUNCTION_STATUS; > > + }; > > + }; > > + }; > > > > > Best regards, > Krzysztof [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 870 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-07 15:03 ` Markus Probst @ 2026-03-07 15:12 ` Krzysztof Kozlowski 0 siblings, 0 replies; 13+ messages in thread From: Krzysztof Kozlowski @ 2026-03-07 15:12 UTC (permalink / raw) To: Markus Probst, Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux On 07/03/2026 16:03, Markus Probst wrote: >>> + usb-led: >>> + $ref: /schemas/leds/common.yaml >>> + unevaluatedProperties: false >> >> That's pretty unreadable code. >> >>> + no-check-fan: >> >> Vendor prefix > > In the documentation it says > > " > Nonstandard property names should specify a unique string prefix, such > as a stock ticker symbol, identifying the name of the company or > organization that defined the property. > " > > I am not sure whether to use synology or linux as vendor prefix here. You cannot have linux prefix - you are not adding bindings for a abstracted/generalized device. > > The property itself was not defined by synology, > > but the property also is not necessarily specific to linux. > The driver has to tell the device whether it should even check for fan > failures. The property wouldn't alter behaviour of the driver, but of Driver stuff so not really suitable for bindings in the first place. > the device. The device itself would not check for fan failures anymore. > > Thanks > - Markus Probst > >> >>> + type: boolean >>> + description: | >>> + Disable fan failure check. >> >> You described the desired Linux feature or behavior, not the actual >> hardware. The bindings are about the latter, so instead you need to >> rephrase the property and its description to match actual hardware >> capabilities/features/configuration etc. Do not ignore the comments. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices 2026-03-06 19:38 ` [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices Markus Probst 2026-03-07 10:20 ` Krzysztof Kozlowski @ 2026-03-07 15:42 ` Krzysztof Kozlowski 1 sibling, 0 replies; 13+ messages in thread From: Krzysztof Kozlowski @ 2026-03-07 15:42 UTC (permalink / raw) To: Markus Probst Cc: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, devicetree, linux-kernel, linux-staging, rust-for-linux On Fri, Mar 06, 2026 at 07:38:28PM +0000, Markus Probst wrote: > Add the Synology Microp devicetree bindings. Those devices are > microcontrollers found on Synology NAS devices. They are connected to a > serial port on the host device. > > Those devices are used to control certain LEDs, fan speeds, a beeper, to > handle buttons, fan failures and to properly shutdown and reboot the > device. > > Signed-off-by: Markus Probst <markus.probst@posteo.de> > --- > .../devicetree/bindings/mfd/synology,microp.yaml | 75 ++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/synology,microp.yaml b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > new file mode 100644 > index 000000000000..0fcb0b750bf0 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/synology,microp.yaml > @@ -0,0 +1,75 @@ > +%YAML 1.2 You we have tools which save you review time. Most important, save maintainers/reviewers time from giving feedback on obvious mistakes. You must use these tools, otherwise maintainers get grumpy by wasting their time. Please run scripts/checkpatch.pl on the patches and fix reported warnings. After that, run also 'scripts/checkpatch.pl --strict' on the patches and (probably) fix more warnings. Some warnings can be ignored, especially from --strict run, but the code here looks like it needs a fix. Feel free to get in touch if the warning is not clear. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/2] staging: Add initial synology microp driver 2026-03-06 19:38 [PATCH 0/2] Introduce Synology Microp driver Markus Probst 2026-03-06 19:38 ` [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices Markus Probst @ 2026-03-06 19:38 ` Markus Probst 2026-03-07 7:15 ` Greg Kroah-Hartman 1 sibling, 1 reply; 13+ messages in thread From: Markus Probst @ 2026-03-06 19:38 UTC (permalink / raw) To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Greg Kroah-Hartman, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich Cc: devicetree, linux-kernel, linux-staging, rust-for-linux, Markus Probst Add a initial synology microp driver, written in Rust, to the staging tree. The driver targets a microcontroller found in Synology NAS devices. It currently only supports controlling of the power led, status led, alert led and usb led. Other components such as fan control or handling on-device buttons will be added once the required rust abstractions are there. --- MAINTAINERS | 6 + drivers/staging/Kconfig | 2 + drivers/staging/Makefile | 1 + drivers/staging/synology_microp/Kconfig | 4 + drivers/staging/synology_microp/Makefile | 2 + drivers/staging/synology_microp/TODO | 8 + drivers/staging/synology_microp/command.rs | 48 +++++ drivers/staging/synology_microp/led.rs | 229 +++++++++++++++++++++ drivers/staging/synology_microp/synology_microp.rs | 73 +++++++ rust/uapi/uapi_helper.h | 2 + 10 files changed, 375 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index e9e83ab552c7..a1f8dec31db2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -25143,6 +25143,12 @@ L: linux-fbdev@vger.kernel.org S: Maintained F: drivers/staging/sm750fb/ +STAGING - SYNOLOGY MICROP DRIVER +M: Markus Probst <markus.probst@posteo.de> +S: Maintained +F: Documentation/devicetree/bindings/mfd/synology,microp.yaml +F: drivers/staging/synology_microp/ + STAGING SUBSYSTEM M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> L: linux-staging@lists.linux.dev diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig index 2f92cd698bef..193d4a5d7f56 100644 --- a/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig @@ -48,4 +48,6 @@ source "drivers/staging/axis-fifo/Kconfig" source "drivers/staging/vme_user/Kconfig" +source "drivers/staging/synology_microp/Kconfig" + endif # STAGING diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile index f5b8876aa536..cb0cadd08ae2 100644 --- a/drivers/staging/Makefile +++ b/drivers/staging/Makefile @@ -13,3 +13,4 @@ obj-$(CONFIG_MOST) += most/ obj-$(CONFIG_GREYBUS) += greybus/ obj-$(CONFIG_BCM2835_VCHIQ) += vc04_services/ obj-$(CONFIG_XIL_AXIS_FIFO) += axis-fifo/ +obj-$(CONFIG_MFD_SYNOLOGY_MICROP) += synology_microp/ diff --git a/drivers/staging/synology_microp/Kconfig b/drivers/staging/synology_microp/Kconfig new file mode 100644 index 000000000000..8d315d2576d8 --- /dev/null +++ b/drivers/staging/synology_microp/Kconfig @@ -0,0 +1,4 @@ + +config MFD_SYNOLOGY_MICROP + tristate "Synology Microp driver" + depends on RUST && SERIAL_DEV_BUS && LEDS_CLASS && LEDS_CLASS_MULTICOLOR diff --git a/drivers/staging/synology_microp/Makefile b/drivers/staging/synology_microp/Makefile new file mode 100644 index 000000000000..d762cada20c9 --- /dev/null +++ b/drivers/staging/synology_microp/Makefile @@ -0,0 +1,2 @@ + +obj-y += synology_microp.o diff --git a/drivers/staging/synology_microp/TODO b/drivers/staging/synology_microp/TODO new file mode 100644 index 000000000000..d432ddd8403c --- /dev/null +++ b/drivers/staging/synology_microp/TODO @@ -0,0 +1,8 @@ +TODO: +- not all devices have a alert or usb led. Only register them, if a fwnode entry is present. +- add missing components: + - handle on-device buttons (Power, Factory reset, "USB Copy") + - handle fan failure + - beeper + - fan speed control + - correctly perform device power-off and restart on Synology devices diff --git a/drivers/staging/synology_microp/command.rs b/drivers/staging/synology_microp/command.rs new file mode 100644 index 000000000000..e98e46423e2d --- /dev/null +++ b/drivers/staging/synology_microp/command.rs @@ -0,0 +1,48 @@ +use kernel::{ + device::Bound, + error::Result, + serdev, // +}; + +use crate::led; + +#[derive(Copy, Clone)] +#[expect( + clippy::enum_variant_names, + reason = "future variants will not end with Led" +)] +pub(crate) enum Command { + PowerLed(led::State), + StatusLed(led::StatusLedColor, led::State), + AlertLed(led::State), + UsbLed(led::State), +} + +impl Command { + pub(crate) fn write(self, dev: &serdev::Device<Bound>) -> Result<()> { + dev.write_all( + match self { + Command::PowerLed(led::State::On) => &[0x34], + Command::PowerLed(led::State::Blink) => &[0x35], + Command::PowerLed(led::State::Off) => &[0x36], + + Command::StatusLed(_, led::State::Off) => &[0x37], + Command::StatusLed(led::StatusLedColor::Green, led::State::On) => &[0x38], + Command::StatusLed(led::StatusLedColor::Green, led::State::Blink) => &[0x39], + Command::StatusLed(led::StatusLedColor::Orange, led::State::On) => &[0x3A], + Command::StatusLed(led::StatusLedColor::Orange, led::State::Blink) => &[0x3B], + + Command::AlertLed(led::State::On) => &[0x4C, 0x41, 0x31], + Command::AlertLed(led::State::Blink) => &[0x4C, 0x41, 0x32], + Command::AlertLed(led::State::Off) => &[0x4C, 0x41, 0x33], + + Command::UsbLed(led::State::On) => &[0x40], + Command::UsbLed(led::State::Blink) => &[0x41], + Command::UsbLed(led::State::Off) => &[0x42], + }, + serdev::Timeout::Max, + )?; + dev.wait_until_sent(serdev::Timeout::Max); + Ok(()) + } +} diff --git a/drivers/staging/synology_microp/led.rs b/drivers/staging/synology_microp/led.rs new file mode 100644 index 000000000000..deeece661937 --- /dev/null +++ b/drivers/staging/synology_microp/led.rs @@ -0,0 +1,229 @@ +use core::sync::atomic::{ + AtomicBool, + Ordering, // +}; + +use kernel::{ + device::Bound, + devres::Devres, + error::Error, + led::{self, MultiColorSubLed}, + macros::vtable, + prelude::*, + serdev, // +}; + +use crate::command::Command; + +pub(crate) struct SynologyMicropLedHandler { + blink: AtomicBool, + map: fn(State) -> Command, +} + +pub(crate) struct SynologyMicropStatusLedHandler { + blink: AtomicBool, +} + +#[derive(Copy, Clone)] +pub(crate) enum State { + On, + Blink, + Off, +} + +#[derive(Copy, Clone)] +pub(crate) enum StatusLedColor { + Green, + Orange, +} + +impl SynologyMicropLedHandler { + fn register<'a>( + parent: &'a serdev::Device<Bound>, + fwnode_child_name: &'static CStr, + default_trigger: &'static CStr, + brightness: u32, + color: led::Color, + map: fn(State) -> Command, + ) -> impl PinInit<Devres<led::Device<Self>>, Error> + 'a { + led::DeviceBuilder::new() + .fwnode( + parent + .as_ref() + .fwnode() + .and_then(|fwnode| fwnode.get_child_by_name(fwnode_child_name)), + ) + .default_trigger(default_trigger) + .initial_brightness(brightness) + .devicename(c"synology-microp") + .color(color) + .build( + parent, + Ok(Self { + blink: AtomicBool::new(true), + map, + }), + ) + } + + pub(crate) fn register_power<'a>( + parent: &'a serdev::Device<Bound>, + ) -> impl PinInit<Devres<led::Device<Self>>, Error> + 'a { + Self::register( + parent, + c"power-led", + c"timer", + 1, + led::Color::Blue, + Command::PowerLed, + ) + } + + pub(crate) fn register_alert<'a>( + parent: &'a serdev::Device<Bound>, + ) -> impl PinInit<Devres<led::Device<Self>>, Error> + 'a { + Self::register( + parent, + c"alert-led", + c"none", + 0, + led::Color::Orange, + Command::AlertLed, + ) + } + + pub(crate) fn register_usb<'a>( + parent: &'a serdev::Device<Bound>, + ) -> impl PinInit<Devres<led::Device<Self>>, Error> + 'a { + Self::register( + parent, + c"usb-led", + c"none", + 0, + led::Color::Green, + Command::UsbLed, + ) + } +} + +#[vtable] +impl led::LedOps for SynologyMicropLedHandler { + type Bus = serdev::Device<Bound>; + type Mode = led::Normal; + const BLOCKING: bool = true; + const MAX_BRIGHTNESS: u32 = 1; + + fn brightness_set( + &self, + dev: &Self::Bus, + _classdev: &led::Device<Self>, + brightness: u32, + ) -> Result<()> { + (self.map)(if brightness == 0 { + self.blink.store(false, Ordering::Relaxed); + State::Off + } else if self.blink.load(Ordering::Relaxed) { + State::Blink + } else { + State::On + }) + .write(dev) + } + + fn blink_set( + &self, + dev: &Self::Bus, + _classdev: &led::Device<Self>, + delay_on: &mut usize, + delay_off: &mut usize, + ) -> Result<()> { + *delay_on = 167; + *delay_off = 167; + + self.blink.store(true, Ordering::Relaxed); + (self.map)(State::Blink).write(dev) + } +} + +impl SynologyMicropStatusLedHandler { + pub(crate) fn register( + parent: &serdev::Device<Bound>, + ) -> impl PinInit<Devres<led::MultiColorDevice<Self>>, Error> + '_ { + const SUBLEDS: &[MultiColorSubLed] = &[ + MultiColorSubLed::new(led::Color::Green).initial_intensity(1), + MultiColorSubLed::new(led::Color::Orange), + ]; + + led::DeviceBuilder::new() + .fwnode( + parent + .as_ref() + .fwnode() + .and_then(|fwnode| fwnode.get_child_by_name(c"status-led")), + ) + .devicename(c"synology-microp") + .color(led::Color::Multi) + .build_multicolor( + parent, + Ok(SynologyMicropStatusLedHandler { + blink: AtomicBool::new(false), + }), + SUBLEDS, + ) + } +} + +#[vtable] +impl led::LedOps for SynologyMicropStatusLedHandler { + type Bus = serdev::Device<Bound>; + type Mode = led::MultiColor; + const BLOCKING: bool = true; + const MAX_BRIGHTNESS: u32 = 1; + + fn brightness_set( + &self, + dev: &Self::Bus, + classdev: &led::MultiColorDevice<Self>, + brightness: u32, + ) -> Result<()> { + if brightness == 0 { + self.blink.store(false, Ordering::Relaxed); + } + + let (color, subled_brightness) = if classdev.subleds()[1].brightness == 0 { + (StatusLedColor::Green, classdev.subleds()[0].brightness) + } else { + (StatusLedColor::Orange, classdev.subleds()[1].brightness) + }; + + if subled_brightness == 0 { + Command::StatusLed(color, State::Off) + } else if self.blink.load(Ordering::Relaxed) { + Command::StatusLed(color, State::Blink) + } else { + Command::StatusLed(color, State::On) + } + .write(dev) + } + + fn blink_set( + &self, + dev: &Self::Bus, + classdev: &led::MultiColorDevice<Self>, + delay_on: &mut usize, + delay_off: &mut usize, + ) -> Result<()> { + *delay_on = 167; + *delay_off = 167; + + self.blink.store(true, Ordering::Relaxed); + + let color = if classdev.subleds()[1].brightness == 0 { + StatusLedColor::Green + } else { + StatusLedColor::Orange + }; + + Command::StatusLed(color, State::Blink).write(dev) + } +} diff --git a/drivers/staging/synology_microp/synology_microp.rs b/drivers/staging/synology_microp/synology_microp.rs new file mode 100644 index 000000000000..abc513edc590 --- /dev/null +++ b/drivers/staging/synology_microp/synology_microp.rs @@ -0,0 +1,73 @@ +// SPDX-License-Identifier: GPL-2.0 + +//! Synology Microp driver + +use kernel::{ + device, + devres::Devres, + of, + prelude::*, + serdev, // +}; +use pin_init::pin_init_scope; + +use crate::{ + led::{ + SynologyMicropLedHandler, + SynologyMicropStatusLedHandler, // + }, // +}; + +pub(crate) mod command; +mod led; + +kernel::module_serdev_device_driver! { + type: SynologyMicropDriver, + name: "synology_microp", + authors: ["Markus Probst <markus.probst@posteo.de>"], + description: "Synology Microp driver", + license: "GPL v2", +} + +#[pin_data] +struct SynologyMicropDriver { + #[pin] + power_led: Devres<kernel::led::Device<SynologyMicropLedHandler>>, + #[pin] + status_led: Devres<kernel::led::MultiColorDevice<SynologyMicropStatusLedHandler>>, + #[pin] + alert_led: Devres<kernel::led::Device<SynologyMicropLedHandler>>, + #[pin] + usb_led: Devres<kernel::led::Device<SynologyMicropLedHandler>>, +} + +kernel::of_device_table!( + OF_TABLE, + MODULE_OF_TABLE, + <SynologyMicropDriver as serdev::Driver>::IdInfo, + [(of::DeviceId::new(c"synology,microp"), ()),] +); + +#[vtable] +impl serdev::Driver for SynologyMicropDriver { + type IdInfo = (); + const OF_ID_TABLE: Option<kernel::of::IdTable<Self::IdInfo>> = Some(&OF_TABLE); + + fn probe( + dev: &serdev::Device<device::Core>, + _id_info: Option<&Self::IdInfo>, + ) -> impl PinInit<Self, kernel::error::Error> { + pin_init_scope(move || { + let _ = dev.set_baudrate(9600); + dev.set_flow_control(false); + dev.set_parity(serdev::Parity::None)?; + + Ok(try_pin_init!(Self { + power_led <- SynologyMicropLedHandler::register_power(dev), + status_led <- SynologyMicropStatusLedHandler::register(dev), + alert_led <- SynologyMicropLedHandler::register_alert(dev), + usb_led <- SynologyMicropLedHandler::register_usb(dev), + })) + }) + } +} diff --git a/rust/uapi/uapi_helper.h b/rust/uapi/uapi_helper.h index 06d7d1a2e8da..94b6c1b59e56 100644 --- a/rust/uapi/uapi_helper.h +++ b/rust/uapi/uapi_helper.h @@ -14,3 +14,5 @@ #include <uapi/linux/mdio.h> #include <uapi/linux/mii.h> #include <uapi/linux/ethtool.h> +#include <uapi/linux/serial_reg.h> + -- 2.52.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] staging: Add initial synology microp driver 2026-03-06 19:38 ` [PATCH 2/2] staging: Add initial synology microp driver Markus Probst @ 2026-03-07 7:15 ` Greg Kroah-Hartman 2026-03-07 12:58 ` Markus Probst 0 siblings, 1 reply; 13+ messages in thread From: Greg Kroah-Hartman @ 2026-03-07 7:15 UTC (permalink / raw) To: Markus Probst Cc: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, devicetree, linux-kernel, linux-staging, rust-for-linux On Fri, Mar 06, 2026 at 07:38:30PM +0000, Markus Probst wrote: > Add a initial synology microp driver, written in Rust, to the staging tree. > The driver targets a microcontroller found in Synology NAS devices. It > currently only supports controlling of the power led, status led, alert > led and usb led. Other components such as fan control or handling > on-device buttons will be added once the required rust abstractions are > there. > --- > MAINTAINERS | 6 + > drivers/staging/Kconfig | 2 + > drivers/staging/Makefile | 1 + > drivers/staging/synology_microp/Kconfig | 4 + > drivers/staging/synology_microp/Makefile | 2 + > drivers/staging/synology_microp/TODO | 8 + > drivers/staging/synology_microp/command.rs | 48 +++++ > drivers/staging/synology_microp/led.rs | 229 +++++++++++++++++++++ > drivers/staging/synology_microp/synology_microp.rs | 73 +++++++ > rust/uapi/uapi_helper.h | 2 + > 10 files changed, 375 insertions(+) No signed-off-by? And why staging? That's for stuff that needs obvious cleanups done to it, you don't list that here. > diff --git a/MAINTAINERS b/MAINTAINERS > index e9e83ab552c7..a1f8dec31db2 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -25143,6 +25143,12 @@ L: linux-fbdev@vger.kernel.org > S: Maintained > F: drivers/staging/sm750fb/ > > +STAGING - SYNOLOGY MICROP DRIVER > +M: Markus Probst <markus.probst@posteo.de> > +S: Maintained > +F: Documentation/devicetree/bindings/mfd/synology,microp.yaml > +F: drivers/staging/synology_microp/ No tabs? thanks, greg k-h ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] staging: Add initial synology microp driver 2026-03-07 7:15 ` Greg Kroah-Hartman @ 2026-03-07 12:58 ` Markus Probst 2026-03-08 7:08 ` Greg Kroah-Hartman 0 siblings, 1 reply; 13+ messages in thread From: Markus Probst @ 2026-03-07 12:58 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, devicetree, linux-kernel, linux-staging, rust-for-linux [-- Attachment #1: Type: text/plain, Size: 2435 bytes --] On Sat, 2026-03-07 at 08:15 +0100, Greg Kroah-Hartman wrote: > On Fri, Mar 06, 2026 at 07:38:30PM +0000, Markus Probst wrote: > > Add a initial synology microp driver, written in Rust, to the staging tree. > > The driver targets a microcontroller found in Synology NAS devices. It > > currently only supports controlling of the power led, status led, alert > > led and usb led. Other components such as fan control or handling > > on-device buttons will be added once the required rust abstractions are > > there. > > --- > > MAINTAINERS | 6 + > > drivers/staging/Kconfig | 2 + > > drivers/staging/Makefile | 1 + > > drivers/staging/synology_microp/Kconfig | 4 + > > drivers/staging/synology_microp/Makefile | 2 + > > drivers/staging/synology_microp/TODO | 8 + > > drivers/staging/synology_microp/command.rs | 48 +++++ > > drivers/staging/synology_microp/led.rs | 229 +++++++++++++++++++++ > > drivers/staging/synology_microp/synology_microp.rs | 73 +++++++ > > rust/uapi/uapi_helper.h | 2 + > > 10 files changed, 375 insertions(+) > > No signed-off-by? Signed-off-by: Markus Probst <markus.probst@posteo.de> > > And why staging? That's for stuff that needs obvious cleanups done to > it, you don't list that here. Because the driver is not done yet. There are components that do not exist yet, because the rust abstractions are missing. Merging an initial version of this driver into staging makes it possible for the serdev and led rust abstractions to be merged (as their now exists a driver). After this I can work on the missing rust abstractions. Once the driver is complete, is can be moved into the mfd tree. > > > diff --git a/MAINTAINERS b/MAINTAINERS > > index e9e83ab552c7..a1f8dec31db2 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -25143,6 +25143,12 @@ L: linux-fbdev@vger.kernel.org > > S: Maintained > > F: drivers/staging/sm750fb/ > > > > +STAGING - SYNOLOGY MICROP DRIVER > > +M: Markus Probst <markus.probst@posteo.de> > > +S: Maintained > > +F: Documentation/devicetree/bindings/mfd/synology,microp.yaml > > +F: drivers/staging/synology_microp/ > > No tabs? Will be fixed. > > thanks, > > greg k-h Thanks - Markus Probst [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 870 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 2/2] staging: Add initial synology microp driver 2026-03-07 12:58 ` Markus Probst @ 2026-03-08 7:08 ` Greg Kroah-Hartman 0 siblings, 0 replies; 13+ messages in thread From: Greg Kroah-Hartman @ 2026-03-08 7:08 UTC (permalink / raw) To: Markus Probst Cc: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Miguel Ojeda, Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich, devicetree, linux-kernel, linux-staging, rust-for-linux On Sat, Mar 07, 2026 at 12:58:31PM +0000, Markus Probst wrote: > On Sat, 2026-03-07 at 08:15 +0100, Greg Kroah-Hartman wrote: > > On Fri, Mar 06, 2026 at 07:38:30PM +0000, Markus Probst wrote: > > > Add a initial synology microp driver, written in Rust, to the staging tree. > > > The driver targets a microcontroller found in Synology NAS devices. It > > > currently only supports controlling of the power led, status led, alert > > > led and usb led. Other components such as fan control or handling > > > on-device buttons will be added once the required rust abstractions are > > > there. > > > --- > > > MAINTAINERS | 6 + > > > drivers/staging/Kconfig | 2 + > > > drivers/staging/Makefile | 1 + > > > drivers/staging/synology_microp/Kconfig | 4 + > > > drivers/staging/synology_microp/Makefile | 2 + > > > drivers/staging/synology_microp/TODO | 8 + > > > drivers/staging/synology_microp/command.rs | 48 +++++ > > > drivers/staging/synology_microp/led.rs | 229 +++++++++++++++++++++ > > > drivers/staging/synology_microp/synology_microp.rs | 73 +++++++ > > > rust/uapi/uapi_helper.h | 2 + > > > 10 files changed, 375 insertions(+) > > > > No signed-off-by? > Signed-off-by: Markus Probst <markus.probst@posteo.de> That has to go into the real part of the patch :) > > > > And why staging? That's for stuff that needs obvious cleanups done to > > it, you don't list that here. > Because the driver is not done yet. There are components that do not > exist yet, because the rust abstractions are missing. That is not what staging is for, sorry. Please just work to get the driver working properly and merge it to the correct location first. thanks, greg k-h ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2026-03-08 7:08 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-03-06 19:38 [PATCH 0/2] Introduce Synology Microp driver Markus Probst 2026-03-06 19:38 ` [PATCH 1/2] dt-bindings: mfd: Add binding for synology,microp devices Markus Probst 2026-03-07 10:20 ` Krzysztof Kozlowski 2026-03-07 14:25 ` Krzysztof Kozlowski 2026-03-07 14:43 ` Markus Probst 2026-03-07 15:10 ` Krzysztof Kozlowski 2026-03-07 15:03 ` Markus Probst 2026-03-07 15:12 ` Krzysztof Kozlowski 2026-03-07 15:42 ` Krzysztof Kozlowski 2026-03-06 19:38 ` [PATCH 2/2] staging: Add initial synology microp driver Markus Probst 2026-03-07 7:15 ` Greg Kroah-Hartman 2026-03-07 12:58 ` Markus Probst 2026-03-08 7:08 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox