* [PATCH v1] dt-bindings: hwmon: convert npcm750-pwm-fan to DT schema
@ 2026-02-10 15:41 Tomer Maimon
2026-02-11 21:40 ` Rob Herring
0 siblings, 1 reply; 2+ messages in thread
From: Tomer Maimon @ 2026-02-10 15:41 UTC (permalink / raw)
To: andrew, avifishman70, tali.perry1, linux, robh, krzk+dt, conor+dt
Cc: venture, yuenn, benjaminfair, openbmc, linux-hwmon, devicetree,
linux-kernel, Tomer Maimon
Convert the Nuvoton HWMON PWM and FAN controllers binding to schema
format.
Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
---
.../bindings/hwmon/npcm750-pwm-fan.txt | 88 ------------
.../bindings/hwmon/npcm750-pwm-fan.yaml | 132 ++++++++++++++++++
2 files changed, 132 insertions(+), 88 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.txt
create mode 100644 Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
diff --git a/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.txt b/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.txt
deleted file mode 100644
index 18095ba87a5a..000000000000
--- a/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-Nuvoton NPCM PWM and Fan Tacho controller device
-
-The Nuvoton BMC NPCM7XX supports 8 Pulse-width modulation (PWM)
-controller outputs and 16 Fan tachometer controller inputs.
-
-The Nuvoton BMC NPCM8XX supports 12 Pulse-width modulation (PWM)
-controller outputs and 16 Fan tachometer controller inputs.
-
-Required properties for pwm-fan node
-- #address-cells : should be 1.
-- #size-cells : should be 0.
-- compatible : "nuvoton,npcm750-pwm-fan" for Poleg NPCM7XX.
- : "nuvoton,npcm845-pwm-fan" for Arbel NPCM8XX.
-- reg : specifies physical base address and size of the registers.
-- reg-names : must contain:
- * "pwm" for the PWM registers.
- * "fan" for the Fan registers.
-- clocks : phandle of reference clocks.
-- clock-names : must contain
- * "pwm" for PWM controller operating clock.
- * "fan" for Fan controller operating clock.
-- interrupts : contain the Fan interrupts with flags for falling edge.
-- pinctrl-names : a pinctrl state named "default" must be defined.
-- pinctrl-0 : phandle referencing pin configuration of the PWM and Fan
- controller ports.
-
-fan subnode format:
-===================
-Under fan subnode can be upto 8 child nodes, each child node representing a fan.
-Each fan subnode must have one PWM channel and at least one Fan tach channel.
-
-For PWM channel can be configured cooling-levels to create cooling device.
-Cooling device could be bound to a thermal zone for the thermal control.
-
-Required properties for each child node:
-- reg : specify the PWM output channel.
- integer value in the range 0 through 7, that represent
- the PWM channel number that used.
-
-- fan-tach-ch : specify the Fan tach input channel.
- integer value in the range 0 through 15, that represent
- the fan tach channel number that used.
-
- At least one Fan tach input channel is required
-
-Optional property for each child node:
-- cooling-levels: PWM duty cycle values in a range from 0 to 255
- which correspond to thermal cooling states.
-
-Examples:
-
-pwm_fan:pwm-fan-controller@103000 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "nuvoton,npcm750-pwm-fan";
- reg = <0x103000 0x2000>,
- <0x180000 0x8000>;
- reg-names = "pwm", "fan";
- clocks = <&clk NPCM7XX_CLK_APB3>,
- <&clk NPCM7XX_CLK_APB4>;
- clock-names = "pwm","fan";
- interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
- <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
- pinctrl-names = "default";
- pinctrl-0 = <&pwm0_pins &pwm1_pins &pwm2_pins
- &fanin0_pins &fanin1_pins &fanin2_pins
- &fanin3_pins &fanin4_pins>;
- fan@0 {
- reg = <0x00>;
- fan-tach-ch = /bits/ 8 <0x00 0x01>;
- cooling-levels = <127 255>;
- };
- fan@1 {
- reg = <0x01>;
- fan-tach-ch = /bits/ 8 <0x02 0x03>;
- };
- fan@2 {
- reg = <0x02>;
- fan-tach-ch = /bits/ 8 <0x04>;
- };
-
-};
diff --git a/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml b/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
new file mode 100644
index 000000000000..954ba7d38b93
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
@@ -0,0 +1,132 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/npcm750-pwm-fan.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton NPCM7xx/NPCM8xx PWM and Fan Tach Controller
+
+maintainers:
+ - Tomer Maimon <tmaimon77@gmail.com>
+
+description: |
+ The NPCM7xx/NPCM8xx family includes a PWM and Fan Tachometer controller.
+ The controller provides up to 8 (NPCM7xx) or 12 (NPCM8xx) PWM channels and up
+ to 16 tachometer inputs. It is used for fan speed control and monitoring.
+
+properties:
+ compatible:
+ enum:
+ - nuvoton,npcm750-pwm-fan
+ - nuvoton,npcm845-pwm-fan
+
+ reg:
+ maxItems: 2
+ description: Register addresses for PWM and Fan Tach units.
+
+ reg-names:
+ items:
+ - const: pwm
+ - const: fan
+
+ clocks:
+ maxItems: 2
+ description: Clocks for the PWM and Fan Tach modules.
+
+ clock-names:
+ items:
+ - const: pwm
+ - const: fan
+
+ interrupts:
+ description: |
+ Contains the Fan interrupts with flags for falling edge.
+ For NPCM7XX, 8 interrupt lines are expected (one per PWM channel).
+ For NPCM8XX, 12 interrupt lines are expected (one per PWM channel).
+ minItems: 8
+ maxItems: 12
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ "^fan@[0-9a-f]+$":
+ type: object
+ $ref: fan-common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ reg:
+ maxItems: 1
+ description: |
+ Specify the PWM output channel. Integer value in the range 0-7 for
+ NPCM7XX or 0-11 for NPCM8XX, representing the PWM channel number.
+
+ fan-tach-ch:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: |
+ The tach channel(s) used for the fan.
+ Integer values in the range 0-15.
+
+ cooling-levels:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+ description: |
+ PWM duty cycle values in a range from 0 to 255 which
+ correspond to thermal cooling states. This property enables
+ thermal zone integration for automatic fan speed control
+ based on temperature.
+
+ required:
+ - reg
+ - fan-tach-ch
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ pwm_fan: pwm-fan@103000 {
+ compatible = "nuvoton,npcm750-pwm-fan";
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ reg = <0x103000 0x2000>, <0x180000 0x8000>;
+ reg-names = "pwm", "fan";
+
+ clocks = <&clk NPCM7XX_CLK_APB3>, <&clk NPCM7XX_CLK_APB4>;
+ clock-names = "pwm", "fan";
+
+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwm0_pins &fanin0_pins>;
+
+ fan@0 {
+ reg = <0>;
+ fan-tach-ch = <0 1>;
+ cooling-levels = <64 128 192 255>;
+ };
+
+ fan@1 {
+ reg = <1>;
+ fan-tach-ch = <2>;
+ };
+ };
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v1] dt-bindings: hwmon: convert npcm750-pwm-fan to DT schema
2026-02-10 15:41 [PATCH v1] dt-bindings: hwmon: convert npcm750-pwm-fan to DT schema Tomer Maimon
@ 2026-02-11 21:40 ` Rob Herring
0 siblings, 0 replies; 2+ messages in thread
From: Rob Herring @ 2026-02-11 21:40 UTC (permalink / raw)
To: Tomer Maimon
Cc: andrew, avifishman70, tali.perry1, linux, krzk+dt, conor+dt,
venture, yuenn, benjaminfair, openbmc, linux-hwmon, devicetree,
linux-kernel
On Tue, Feb 10, 2026 at 05:41:17PM +0200, Tomer Maimon wrote:
> Convert the Nuvoton HWMON PWM and FAN controllers binding to schema
> format.
>
> Signed-off-by: Tomer Maimon <tmaimon77@gmail.com>
> ---
> .../bindings/hwmon/npcm750-pwm-fan.txt | 88 ------------
> .../bindings/hwmon/npcm750-pwm-fan.yaml | 132 ++++++++++++++++++
> 2 files changed, 132 insertions(+), 88 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.txt
> create mode 100644 Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
> diff --git a/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml b/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
> new file mode 100644
> index 000000000000..954ba7d38b93
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/npcm750-pwm-fan.yaml
nuvoton,npcm750-pwm-fan.yaml for filename.
> @@ -0,0 +1,132 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/npcm750-pwm-fan.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Nuvoton NPCM7xx/NPCM8xx PWM and Fan Tach Controller
> +
> +maintainers:
> + - Tomer Maimon <tmaimon77@gmail.com>
> +
> +description: |
Don't need '|'.
> + The NPCM7xx/NPCM8xx family includes a PWM and Fan Tachometer controller.
> + The controller provides up to 8 (NPCM7xx) or 12 (NPCM8xx) PWM channels and up
> + to 16 tachometer inputs. It is used for fan speed control and monitoring.
> +
> +properties:
> + compatible:
> + enum:
> + - nuvoton,npcm750-pwm-fan
> + - nuvoton,npcm845-pwm-fan
> +
> + reg:
> + maxItems: 2
> + description: Register addresses for PWM and Fan Tach units.
> +
> + reg-names:
> + items:
> + - const: pwm
> + - const: fan
> +
> + clocks:
> + maxItems: 2
> + description: Clocks for the PWM and Fan Tach modules.
> +
> + clock-names:
> + items:
> + - const: pwm
> + - const: fan
> +
> + interrupts:
> + description: |
> + Contains the Fan interrupts with flags for falling edge.
> + For NPCM7XX, 8 interrupt lines are expected (one per PWM channel).
> + For NPCM8XX, 12 interrupt lines are expected (one per PWM channel).
Blank line between paragraphs. Or remove '|' and re-wrap at 80. Same
problem elsewhere...
> + minItems: 8
> + maxItems: 12
> +
> + "#address-cells":
> + const: 1
> +
> + "#size-cells":
> + const: 0
> +
> +patternProperties:
> + "^fan@[0-9a-f]+$":
> + type: object
> + $ref: fan-common.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + reg:
> + maxItems: 1
> + description: |
> + Specify the PWM output channel. Integer value in the range 0-7 for
> + NPCM7XX or 0-11 for NPCM8XX, representing the PWM channel number.
items:
items:
maximum: 11
> +
> + fan-tach-ch:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
This is defined as 8-bit.
> + description: |
> + The tach channel(s) used for the fan.
> + Integer values in the range 0-15.
items:
maximum: 15
> +
> + cooling-levels:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
already has a type. Drop.
> + description: |
> + PWM duty cycle values in a range from 0 to 255 which
> + correspond to thermal cooling states. This property enables
> + thermal zone integration for automatic fan speed control
> + based on temperature.
items:
maximum: 255
> +
> + required:
> + - reg
> + - fan-tach-ch
> +
> +required:
> + - compatible
> + - reg
> + - reg-names
> + - clocks
> + - clock-names
> + - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + pwm_fan: pwm-fan@103000 {
> + compatible = "nuvoton,npcm750-pwm-fan";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + reg = <0x103000 0x2000>, <0x180000 0x8000>;
> + reg-names = "pwm", "fan";
> +
> + clocks = <&clk NPCM7XX_CLK_APB3>, <&clk NPCM7XX_CLK_APB4>;
> + clock-names = "pwm", "fan";
> +
> + interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pwm0_pins &fanin0_pins>;
> +
> + fan@0 {
> + reg = <0>;
> + fan-tach-ch = <0 1>;
> + cooling-levels = <64 128 192 255>;
> + };
> +
> + fan@1 {
> + reg = <1>;
> + fan-tach-ch = <2>;
> + };
> + };
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-11 21:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-10 15:41 [PATCH v1] dt-bindings: hwmon: convert npcm750-pwm-fan to DT schema Tomer Maimon
2026-02-11 21:40 ` Rob Herring
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox