[PATCH v3 3/3] dt-bindings: hwmon: (aspeed,g5-pwm-tacho) Move info from txt to yaml

Rebecca Cran posted 3 patches 2 weeks ago
There is a newer version of this series
[PATCH v3 3/3] dt-bindings: hwmon: (aspeed,g5-pwm-tacho) Move info from txt to yaml
Posted by Rebecca Cran 2 weeks ago
Move the documentation for the aspeed,ast2400-pwm-tacho and
aspeed,ast2500-pwm-tacho devices from a text file to yaml file.

This allows for dts files containing these devices to be validated.

Where the text file documenation of required properties differ from the
implementation, prefer the implementation and update the schema to
match.

"#size-cells" was 1 but implementation is 0.
"#cooling-cells" was marked as required but appears optional.

In the fan subnode, "cooling-levels" is optional according to the code
in drivers/hwmon/aspeed-pwm-tacho.c.

Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
---
 Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml | 91 ++++++++++++++++++++
 Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt  | 73 ----------------
 2 files changed, 91 insertions(+), 73 deletions(-)

diff --git a/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
new file mode 100644
index 000000000000..b23c3519604b
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
@@ -0,0 +1,91 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (C) 2023 Aspeed, Inc.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ASPEED AST2400/AST2500 PWM and Fan Tacho controller
+
+maintainers:
+  - Billy Tsai <billy_tsai@aspeedtech.com>
+
+description: |
+  The ASPEED PWM controller can support up to 8 PWM outputs. The ASPEED Fan
+  Tacho controller can support up to 16 Fan tachometer inputs.
+
+  There can be up to 8 fans supported. Each fan can have one PWM output and
+  one/two Fan tach inputs.
+
+properties:
+  compatible:
+    enum:
+      - aspeed,ast2400-pwm-tacho
+      - aspeed,ast2500-pwm-tacho
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+patternProperties:
+  "^fan@[0-9]+$":
+    $ref: fan-common.yaml#
+    unevaluatedProperties: false
+    properties:
+      aspeed,fan-tach-ch:
+        description:
+          The tach channel used for the fan.
+        $ref: /schemas/types.yaml#/definitions/uint8-array
+
+    required:
+      - reg
+      - aspeed,fan-tach-ch
+
+required:
+  - compatible
+  - "#address-cells"
+  - "#size-cells"
+  - reg
+  - pinctrl-names
+  - pinctrl-0
+  - clocks
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/aspeed-clock.h>
+    pwm_tacho: pwmtachocontroller@1e786000 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        #cooling-cells = <2>;
+        reg = <0x1E786000 0x1000>;
+        compatible = "aspeed,ast2500-pwm-tacho";
+        clocks = <&syscon ASPEED_CLK_APB>;
+        resets = <&syscon ASPEED_RESET_PWM>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
+
+        fan@0 {
+                reg = <0x00>;
+                cooling-levels = /bits/ 8 <125 151 177 203 229 255>;
+                aspeed,fan-tach-ch = /bits/ 8 <0x00>;
+        };
+
+        fan@1 {
+                reg = <0x01>;
+                aspeed,fan-tach-ch = /bits/ 8 <0x01 0x02>;
+        };
+    };
diff --git a/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt b/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt
deleted file mode 100644
index 8645cd3b867a..000000000000
--- a/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-ASPEED AST2400/AST2500 PWM and Fan Tacho controller device driver
-
-The ASPEED PWM controller can support upto 8 PWM outputs. The ASPEED Fan Tacho
-controller can support upto 16 Fan tachometer inputs.
-
-There can be upto 8 fans supported. Each fan can have one PWM output and
-one/two Fan tach inputs.
-
-Required properties for pwm-tacho node:
-- #address-cells : should be 1.
-
-- #size-cells : should be 1.
-
-- #cooling-cells: should be 2.
-
-- reg : address and length of the register set for the device.
-
-- pinctrl-names : a pinctrl state named "default" must be defined.
-
-- pinctrl-0 : phandle referencing pin configuration of the PWM ports.
-
-- compatible : should be "aspeed,ast2400-pwm-tacho" for AST2400 and
-	       "aspeed,ast2500-pwm-tacho" for AST2500.
-
-- clocks : phandle to clock provider with the clock number in the second cell
-
-- resets : phandle to reset controller with the reset number in the second cell
-
-fan subnode format:
-===================
-Under fan subnode there can upto 8 child nodes, with each child node
-representing a fan. If there are 8 fans each fan can have one PWM port and
-one/two Fan tach inputs.
-For PWM port 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 : should specify PWM source port.
-	integer value in the range 0 to 7 with 0 indicating PWM port A and
-	7 indicating PWM port H.
-
-- cooling-levels: PWM duty cycle values in a range from 0 to 255
-                  which correspond to thermal cooling states.
-
-- aspeed,fan-tach-ch : should specify the Fan tach input channel.
-                integer value in the range 0 through 15, with 0 indicating
-		Fan tach channel 0 and 15 indicating Fan tach channel 15.
-		At least one Fan tach input channel is required.
-
-Examples:
-
-pwm_tacho: pwmtachocontroller@1e786000 {
-	#address-cells = <1>;
-	#size-cells = <1>;
-	#cooling-cells = <2>;
-	reg = <0x1E786000 0x1000>;
-	compatible = "aspeed,ast2500-pwm-tacho";
-	clocks = <&syscon ASPEED_CLK_APB>;
-	resets = <&syscon ASPEED_RESET_PWM>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
-
-	fan@0 {
-		reg = <0x00>;
-		cooling-levels = /bits/ 8 <125 151 177 203 229 255>;
-		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
-	};
-
-	fan@1 {
-		reg = <0x01>;
-		aspeed,fan-tach-ch = /bits/ 8 <0x01 0x02>;
-	};
-};
-- 
2.47.3
Re: [PATCH v3 3/3] dt-bindings: hwmon: (aspeed,g5-pwm-tacho) Move info from txt to yaml
Posted by Rob Herring 2 weeks ago
On Thu, Dec 04, 2025 at 02:02:36PM -0700, Rebecca Cran wrote:
> Move the documentation for the aspeed,ast2400-pwm-tacho and
> aspeed,ast2500-pwm-tacho devices from a text file to yaml file.
> 
> This allows for dts files containing these devices to be validated.
> 
> Where the text file documenation of required properties differ from the
> implementation, prefer the implementation and update the schema to
> match.
> 
> "#size-cells" was 1 but implementation is 0.
> "#cooling-cells" was marked as required but appears optional.
> 
> In the fan subnode, "cooling-levels" is optional according to the code
> in drivers/hwmon/aspeed-pwm-tacho.c.

Please see this one:

https://lore.kernel.org/all/20251029185448.2121857-1-robh@kernel.org/

> 
> Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
> ---
>  Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml | 91 ++++++++++++++++++++
>  Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt  | 73 ----------------
>  2 files changed, 91 insertions(+), 73 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
> new file mode 100644
> index 000000000000..b23c3519604b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
> @@ -0,0 +1,91 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright (C) 2023 Aspeed, Inc.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: ASPEED AST2400/AST2500 PWM and Fan Tacho controller
> +
> +maintainers:
> +  - Billy Tsai <billy_tsai@aspeedtech.com>
> +
> +description: |
> +  The ASPEED PWM controller can support up to 8 PWM outputs. The ASPEED Fan
> +  Tacho controller can support up to 16 Fan tachometer inputs.
> +
> +  There can be up to 8 fans supported. Each fan can have one PWM output and
> +  one/two Fan tach inputs.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - aspeed,ast2400-pwm-tacho
> +      - aspeed,ast2500-pwm-tacho
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 0
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 1
> +
> +  resets:
> +    maxItems: 1
> +
> +patternProperties:
> +  "^fan@[0-9]+$":
> +    $ref: fan-common.yaml#
> +    unevaluatedProperties: false
> +    properties:
> +      aspeed,fan-tach-ch:
> +        description:
> +          The tach channel used for the fan.
> +        $ref: /schemas/types.yaml#/definitions/uint8-array
> +
> +    required:
> +      - reg
> +      - aspeed,fan-tach-ch
> +
> +required:
> +  - compatible
> +  - "#address-cells"
> +  - "#size-cells"
> +  - reg
> +  - pinctrl-names
> +  - pinctrl-0
> +  - clocks
> +  - resets
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/aspeed-clock.h>
> +    pwm_tacho: pwmtachocontroller@1e786000 {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +        #cooling-cells = <2>;
> +        reg = <0x1E786000 0x1000>;
> +        compatible = "aspeed,ast2500-pwm-tacho";
> +        clocks = <&syscon ASPEED_CLK_APB>;
> +        resets = <&syscon ASPEED_RESET_PWM>;
> +        pinctrl-names = "default";
> +        pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
> +
> +        fan@0 {
> +                reg = <0x00>;
> +                cooling-levels = /bits/ 8 <125 151 177 203 229 255>;
> +                aspeed,fan-tach-ch = /bits/ 8 <0x00>;
> +        };
> +
> +        fan@1 {
> +                reg = <0x01>;
> +                aspeed,fan-tach-ch = /bits/ 8 <0x01 0x02>;
> +        };
> +    };
> diff --git a/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt b/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt
> deleted file mode 100644
> index 8645cd3b867a..000000000000
> --- a/Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt
> +++ /dev/null
> @@ -1,73 +0,0 @@
> -ASPEED AST2400/AST2500 PWM and Fan Tacho controller device driver
> -
> -The ASPEED PWM controller can support upto 8 PWM outputs. The ASPEED Fan Tacho
> -controller can support upto 16 Fan tachometer inputs.
> -
> -There can be upto 8 fans supported. Each fan can have one PWM output and
> -one/two Fan tach inputs.
> -
> -Required properties for pwm-tacho node:
> -- #address-cells : should be 1.
> -
> -- #size-cells : should be 1.
> -
> -- #cooling-cells: should be 2.
> -
> -- reg : address and length of the register set for the device.
> -
> -- pinctrl-names : a pinctrl state named "default" must be defined.
> -
> -- pinctrl-0 : phandle referencing pin configuration of the PWM ports.
> -
> -- compatible : should be "aspeed,ast2400-pwm-tacho" for AST2400 and
> -	       "aspeed,ast2500-pwm-tacho" for AST2500.
> -
> -- clocks : phandle to clock provider with the clock number in the second cell
> -
> -- resets : phandle to reset controller with the reset number in the second cell
> -
> -fan subnode format:
> -===================
> -Under fan subnode there can upto 8 child nodes, with each child node
> -representing a fan. If there are 8 fans each fan can have one PWM port and
> -one/two Fan tach inputs.
> -For PWM port 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 : should specify PWM source port.
> -	integer value in the range 0 to 7 with 0 indicating PWM port A and
> -	7 indicating PWM port H.
> -
> -- cooling-levels: PWM duty cycle values in a range from 0 to 255
> -                  which correspond to thermal cooling states.
> -
> -- aspeed,fan-tach-ch : should specify the Fan tach input channel.
> -                integer value in the range 0 through 15, with 0 indicating
> -		Fan tach channel 0 and 15 indicating Fan tach channel 15.
> -		At least one Fan tach input channel is required.
> -
> -Examples:
> -
> -pwm_tacho: pwmtachocontroller@1e786000 {
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -	#cooling-cells = <2>;
> -	reg = <0x1E786000 0x1000>;
> -	compatible = "aspeed,ast2500-pwm-tacho";
> -	clocks = <&syscon ASPEED_CLK_APB>;
> -	resets = <&syscon ASPEED_RESET_PWM>;
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
> -
> -	fan@0 {
> -		reg = <0x00>;
> -		cooling-levels = /bits/ 8 <125 151 177 203 229 255>;
> -		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
> -	};
> -
> -	fan@1 {
> -		reg = <0x01>;
> -		aspeed,fan-tach-ch = /bits/ 8 <0x01 0x02>;
> -	};
> -};
> -- 
> 2.47.3
>
Re: [PATCH v3 3/3] dt-bindings: hwmon: (aspeed,g5-pwm-tacho) Move info from txt to yaml
Posted by Rob Herring (Arm) 2 weeks ago
On Thu, 04 Dec 2025 14:02:36 -0700, Rebecca Cran wrote:
> Move the documentation for the aspeed,ast2400-pwm-tacho and
> aspeed,ast2500-pwm-tacho devices from a text file to yaml file.
> 
> This allows for dts files containing these devices to be validated.
> 
> Where the text file documenation of required properties differ from the
> implementation, prefer the implementation and update the schema to
> match.
> 
> "#size-cells" was 1 but implementation is 0.
> "#cooling-cells" was marked as required but appears optional.
> 
> In the fan subnode, "cooling-levels" is optional according to the code
> in drivers/hwmon/aspeed-pwm-tacho.c.
> 
> Signed-off-by: Rebecca Cran <rebecca@bsdio.com>
> ---
>  Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml | 91 ++++++++++++++++++++
>  Documentation/devicetree/bindings/hwmon/aspeed-pwm-tacho.txt  | 73 ----------------
>  2 files changed, 91 insertions(+), 73 deletions(-)
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml: $id: Cannot determine base path from $id, relative path/filename doesn't match actual path or filename
 	 $id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml
 	file: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
cooling-levels: size (6) error for type uint32-array
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.example.dtb: pwmtachocontroller@1e786000 (aspeed,ast2500-pwm-tacho): '#cooling-cells' does not match any of the regexes: '^fan@[0-9]+$', '^pinctrl-[0-9]+$'
	from schema $id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.example.dtb: pwmtachocontroller@1e786000 (aspeed,ast2500-pwm-tacho): fan@0:cooling-levels: b'}\x97\xb1\xcb\xe5\xff' is not of type 'array'
	from schema $id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.example.dtb: fan@0: cooling-levels: b'}\x97\xb1\xcb\xe5\xff' is not of type 'object', 'integer', 'array', 'boolean', 'null'
	from schema $id: http://devicetree.org/schemas/dt-core.yaml

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20251204210238.40742-4-rebecca@bsdio.com

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
Re: [PATCH v3 3/3] dt-bindings: hwmon: (aspeed,g5-pwm-tacho) Move info from txt to yaml
Posted by Rebecca Cran 2 weeks ago
On 12/4/25 14:02, Rebecca Cran wrote:
> diff --git a/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
> new file mode 100644
> index 000000000000..b23c3519604b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/hwmon/aspeed,pwm-tacho.yaml
> @@ -0,0 +1,91 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +# Copyright (C) 2023 Aspeed, Inc.
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/hwmon/aspeed,g5-pwm-tacho.yaml#

When I renamed the file from aspeed,g5-pwm-tacho.yaml I forgot to update 
this id line.
I'll send out a v4 patch in a couple of days to gather any other early 
feedback.

-- 
Rebecca Cran