Re: [PATCH 1/2] dt-bindings: hwmon: Add binding for max6639

From: Guenter Roeck
Date: Thu Oct 06 2022 - 10:22:16 EST


On 10/5/22 23:30, Naresh Solanki wrote:
Thanks Guenter, to summarize below properties that can be configured
based on input from
fan datasheet:
pwm controlled fan:
1. max-rpm : Defines maximum rpm the fan supports
2. tach-pulse/pulse-per-revolution( also referred as prescale) :
Determines the number of
pulses received from the sensor/tach pin of fan per revolution.

There are two different parameters: pulse-per-revolution is the number
of pulses per revolution from the fan. Then there is a chip internal
divider, used to ensure that the chip fan counter does not exceed
its limits. Both are needed and orthogonal.

From the max6650 description:

- maxim,fan-prescale : Pre-scaling value, as per datasheet [1]. Lower values
allow more fine-grained control of slower fans.
Valid: 1, 2, 4, 8, 16.

This has nothing to do with pulse-per-revolution (there are no fans
with 16 pulses per revolution). The range for pulse-per-revolution
is typically 1..4.

Also see /sys/class/hwmon/hwmonX/fanY_pulses and /sys/class/hwmon/hwmonX/fanY_div
in Documentation/ABI/testing/sysfs-class-hwmon <216,37>-46 24%.

3. rpm-init (also ref. as fan-target-rpm): Determines the fan rpm
driver needs to configure
during probe.

This has nothing to do with an "init" value. It is the fan target rpm.
Also see /sys/class/hwmon/hwmonX/fanY_target.

4. pwm-input-polarity(normal or inverse) : Specifies fan pwm input
polarity as specified in
fan datasheet. a fan controller driver can use this data to configure
pwm output polarity

This has nothing to do with fan requirements. It is the output polarity
from the chip, period. There can be an inverter between pwm output and the
fan input, which is the most likely reason why the output has to be inverted.

accordingly during driver probe.

For a DC output controlled fan, voltage across fan is controlled to control rpm.
Below is what I can think of:
5. voltage-range : Specifies valid voltage range for rpm control
example for 3V to 5V range:
voltage-range=<3000 5000>;

I never heard about that option. Usually fan controllers convert the provided
or calculated pwm value into a voltage if DC mode is configured. What may be
needed is the fan supply voltage, which can be provided by a regulator.

What is also needed is a means to switch the fan controller between
DC mode and PWM mode (matching /sys/class/hwmon/hwmonX/pwmY_mode).

I would also expect the ability to set the pwm frequency (matching
/sys/class/hwmon/hwmonX/pwmY_freq).

Thanks,
Guenter


Above mentioned properties are within the scope of fan.
Fan controllers like max6639/max6650 etc can have additional
properties specific to the
feather supported by the chip.

Let me know if I can go ahead with this.

Thanks,
Naresh Solanki

Regards,
Naresh Solanki



9elements GmbH, Kortumstraße 19-21, 44787 Bochum, Germany
Email: naresh.solanki@xxxxxxxxxxxxx
Mobile: +91 9538631477

Sitz der Gesellschaft: Bochum
Handelsregister: Amtsgericht Bochum, HRB 17519
Geschäftsführung: Sebastian Deutsch, Eray Basar

Datenschutzhinweise nach Art. 13 DSGVO


On Thu, 6 Oct 2022 at 00:10, Guenter Roeck <linux@xxxxxxxxxxxx> wrote:

On 9/21/22 23:34, Krzysztof Kozlowski wrote:
On 22/09/2022 07:07, Naresh Solanki wrote:
From: Marcello Sylvester Bauer <sylv@xxxxxxx>

Add Devicetree binding documentation for Maxim MAX6639 temperature
monitor with PWM fan-speed controller.

Signed-off-by: Marcello Sylvester Bauer <sylv@xxxxxxx>
Signed-off-by: Naresh Solanki <Naresh.Solanki@xxxxxxxxxxxxx>
---
.../bindings/hwmon/maxim,max6639.yaml | 112 ++++++++++++++++++
1 file changed, 112 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/maxim,max6639.yaml

diff --git a/Documentation/devicetree/bindings/hwmon/maxim,max6639.yaml b/Documentation/devicetree/bindings/hwmon/maxim,max6639.yaml
new file mode 100644
index 000000000000..c845fb989af2
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/maxim,max6639.yaml
@@ -0,0 +1,112 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+
+$id: http://devicetree.org/schemas/hwmon/maxim,max6639.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim max6639
+
+maintainers:
+ - Roland Stigge <stigge@xxxxxxxxx>

Ack from Roland is needed here.

+
+description: |
+ The MAX6639 is a 2-channel temperature monitor with dual, automatic, PWM
+ fan-speed controller. It monitors its own temperature and one external
+ diode-connected transistor or the temperatures of two external diode-connected
+ transistors, typically available in CPUs, FPGAs, or GPUs.
+
+ Datasheets:
+ https://datasheets.maximintegrated.com/en/ds/MAX6639-MAX6639F.pdf
+
+properties:
+ compatible:
+ enum:
+ - maxim,max6639
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+required:
+ - compatible
+ - reg
+ - "fan@0"
+ - "fan@1"
+
+additionalProperties: false
+
+patternProperties:

This goes after properties.

+ "^fan@[0-1]$":
+ type: object
+ description: |
+ Represents the two fans and their specific configuration.
+
+ properties:
+ reg:
+ description: |
+ The fan number.
+ items:

Skip items.

+ minimum: 0
+ maximum: 1
+
+ pwm-polarity:

Why is this property of fan, not of PWM source?


The chip provides pwm output to the fan. That typical for fan
controller chips. Typically they also have options to configure
the pwm frequency and either pwm or DC output (max6639 does not
have the latter option).

Guenter