Re: [PATCH v4 1/2] dt-bindings: hwmon: Add starfive,jhb100-fan-tach

From: Guenter Roeck

Date: Mon Aug 31 2026 - 15:51:06 EST


On 8/31/26 09:32, Conor Dooley wrote:
On Sat, Aug 29, 2026 at 06:19:40PM -0700, Changhuang Liang wrote:
Add compatible "starfive,jhb100-fan-tach" for StarFive JHB100 Fan-Tach
controller.

Signed-off-by: Changhuang Liang <changhuang.liang@xxxxxxxxxxxxxxxx>
---
.../hwmon/starfive,jhb100-fan-tach.yaml | 93 +++++++++++++++++++
1 file changed, 93 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/starfive,jhb100-fan-tach.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/starfive,jhb100-fan-tach.yaml b/Documentation/devicetree/bindings/hwmon/starfive,jhb100-fan-tach.yaml
new file mode 100644
index 000000000000..1dcd4932768f
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/starfive,jhb100-fan-tach.yaml
@@ -0,0 +1,93 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/starfive,jhb100-fan-tach.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: StarFive JHB100 Fan-Tach controller
+
+maintainers:
+ - Changhuang Liang <changhuang.liang@xxxxxxxxxxxxxxxx>
+
+description:
+ The StarFive Fan-Tach controller can support up to 16 fan tach input.
+
+properties:
+ compatible:
+ enum:
+ - starfive,jhb100-fan-tach
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+ resets:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ "^fan@[0-9a-f]+$":
+ $ref: fan-common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ reg:
+ description:
+ PWM channel index. The driver allows two fans to share the same
+ PWM channel, or each fan to use a dedicated channel.

Doesn't matter what the driver can do, the description should describe
what the hardware supports.
pw-bot: changes-requested

Does this fan-tach controller provide the PWMs?
If so (although Guenter may correct me), I think the fan-tach controller
needs to be.

If you don't do that, I think you're going to run into problems with
having multiple nodes with the same unit address when two fans share a
pwm?


Depends on how the controller works. Normally fan controllers have a feedback
mechanism which can be either temperature -> pwm output or fan speed -> pwm output.
I don't know how this controller works, specifically if the fan speed inputs are
internally associated with pwm outputs or if they are completely independent
of each other. If it is the latter, aspeed,g6-pwm-tach.yaml would probably
be a good baseline.

I think what you're supposed to do is drop "reg" and replace it with
"pwms", but once again Guenter may correct me there.
e.g. aspeed,g6-pwm-tach.yaml


Sorry, when it comes to devicetree properties, I am completely clueless.
Usually the devicetree and pwm maintainers insist that all fan controllers
are modeled as pwm controllers because they have pwm outputs. My approach
is "use whatever bindings are acceptable by DT maintainers".

Guenter

Cheers,
Conor.

+ maximum: 15
+
+ tach-ch:
+ description:
+ The tachometer channel(s) wired to the fan(s) driven by this PWM
+ channel. Integer values in the range 0-15.
+ minItems: 1
+ maxItems: 2
+ items:
+ maximum: 15
+
+ required:
+ - reg
+ - tach-ch
+
+required:
+ - compatible
+ - reg
+ - clocks
+ - resets
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ fan-controller@11be0000 {
+ compatible = "starfive,jhb100-fan-tach";
+ reg = <0x11be0000 0x400>;
+ interrupts = <128>;
+ clocks = <&per2crg 33>;
+ resets = <&per2crg 5>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ fan@0 {
+ reg = <0x0>;
+ tach-ch = /bits/ 8 <0x0 0x8>;
+ pulses-per-revolution = <2>;
+ };
+ fan@1 {
+ reg = <0x1>;
+ tach-ch = /bits/ 8 <0x1>;
+ pulses-per-revolution = <2>;
+ };
+ };
--
2.25.1