Re: [PATCH v3 1/3] dt-bindings: hwmon: Add adt7475 fan/pwm properties

From: Guenter Roeck
Date: Mon May 20 2024 - 15:04:17 EST


On 5/20/24 09:49, Conor Dooley wrote:
On Mon, May 20, 2024 at 03:03:19PM +1200, Chris Packham wrote:
Add fan child nodes that allow describing the connections for the
ADT7475 to the fans it controls. This also allows setting some
initial values for the pwm duty cycle and frequency.

Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
---

Notes:
Changes in v3:
- Use the pwm provider/consumer bindings
Changes in v2:
- Document 0 as a valid value (leaves hardware as-is)

.../devicetree/bindings/hwmon/adt7475.yaml | 25 ++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/hwmon/adt7475.yaml b/Documentation/devicetree/bindings/hwmon/adt7475.yaml
index 051c976ab711..99bd689ae0cd 100644
--- a/Documentation/devicetree/bindings/hwmon/adt7475.yaml
+++ b/Documentation/devicetree/bindings/hwmon/adt7475.yaml
@@ -51,6 +51,15 @@ properties:
enum: [0, 1]
default: 1
+ "#pwm-cells":
+ const: 4
+ description: |
+ Number of cells in a PWM specifier.
+ - 0: The pwm channel
+ - 1: The pwm frequency in hertz - 0, 11, 14, 22, 29, 35, 44, 58, 88, 22500

The standard binding is period in nanoseconds, not frequency in Hz.
What's gained from deviating from that?


I'd strongly suspect that Chris didn't know and didn't expect it,
just like me.

+ - 2: PWM flags 0 or PWM_POLARITY_INVERTED
+ - 3: The default pwm duty cycle - 0-255

Same here I guess, why not match the units used for the period for the
duty cycle?


Same here. I am used to pwm frequency in Hz and duty cycle as percentage.
Using the period instead is somewhat unusual, and I must admit that I
have never encountered it while dealing with a variety of fan controllers.

Just to make sure I understand this correctly - duty cycles would
be (rounded):

Hz ns
11 90,909,091
14 71,428,571
22 45,454,545
29: 34,482,759
35: 28,571,429
44: 22,727,273
58: 17,241,379
88: 11,363,636
22500 44,444

Examples for duty cycles would be

20%: 0,2s or 200,000,000
50%: 0.5s or 500,000,000
80%: 0.8s or 800,000,000

Is that correct ?

Thanks,
Guenter