Skip to contentSkip to conversation

dt-bindings: hwmon: pwm-fan: Document default-pwm property

PATCH Superseded Peter Korsgaard 2 participants 4 messages Apr 24, 2024 – Apr 25, 2024

Subsystems (2)

v2 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/2 dt-bindings: hwmon: pwm-fan: Document default-pwm property

Similar to target-rpm from fan-common.yaml but for the default PWM setting (0..255).

---
Changes since v1:
- Rename to default-pwm

 Documentation/devicetree/bindings/hwmon/pwm-fan.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)
Documentation/devicetree/bindings/hwmon/pwm-fan.yaml +8 -0
index 4e5abf7580cc..70f062b30985 100644
@@ -46,6 +46,14 @@ properties:
 
   "#cooling-cells": true
 
+  default-pwm:
+    description:
+      The default fan PWM to use.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 255
+    default: 255
+
 required:
   - compatible
   - pwms
Signature · 1 line
2.39.2
#1 lore raw

PATCH v2 2/2 hwmon: (pwm-fan): support default-pwm property to set default PWM value

For some use cases defaulting the PWM to full fan speed is not ideal (noise, power consumption, ..), so support an optional default-pwm property (0..255) to override the default PWM value.

---
Changes since v1:
- Rename property to default-pwm
- Drop u32 cast

 drivers/hwmon/pwm-fan.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)
drivers/hwmon/pwm-fan.c +9 -2
index b67bc9e833c0..a2a309f8e3ee 100644
@@ -482,6 +482,7 @@ static int pwm_fan_probe(struct platform_device *pdev)
 	const struct hwmon_channel_info **channels;
 	u32 *fan_channel_config;
 	int channel_count = 1;	/* We always have a PWM channel. */
+	u32 default_pwm = MAX_PWM;
 	int i;
 
 	ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL);
@@ -527,11 +528,17 @@ static int pwm_fan_probe(struct platform_device *pdev)
 
 	ctx->enable_mode = pwm_disable_reg_enable;
 
+	of_property_read_u32(dev->of_node, "default-pwm", &default_pwm);
+	if (default_pwm > MAX_PWM) {
+		dev_err(dev, "Invalid default-pwm: %u > %d\n", default_pwm, MAX_PWM);
+		return -EINVAL;
+	}
+
 	/*
-	 * Set duty cycle to maximum allowed and enable PWM output as well as
+	 * Set duty cycle to default and enable PWM output as well as
 	 * the regulator. In case of error nothing is changed
 	 */
-	ret = set_pwm(ctx, MAX_PWM);
+	ret = set_pwm(ctx, default_pwm);
 	if (ret) {
 		dev_err(dev, "Failed to configure PWM: %d\n", ret);
 		return ret;
Signature · 1 line
2.39.2
maintainer
#2 lore raw
In reply to Peter Korsgaard
Quoted 16 lines · Peter Korsgaard

Similar to target-rpm from fan-common.yaml but for the default PWM setting (0..255).

---
Changes since v1:
- Rename to default-pwm

 Documentation/devicetree/bindings/hwmon/pwm-fan.yaml | 8 ++++++++
 1 file changed, 8 insertions(+)
Documentation/devicetree/bindings/hwmon/pwm-fan.yaml +0 -0
index 4e5abf7580cc..70f062b30985 100644

Documentation/devicetree/bindings/hwmon/pwm-fan.yaml properties: · line 55

Quoted 10 lines
Documentation/devicetree/bindings/hwmon/pwm-fan.yaml +7 -0
@@ -46,6 +46,14 @@ properties:
 
   "#cooling-cells": true
 
+  default-pwm:
+    description:
+      The default fan PWM to use.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 255
+    default: 255

See my comments on v1. Please give time for other reviewers a chance to comment.

Rob

#3 lore raw
Quoted 20 lines · Rob Herring
Quoted 19 lines · Peter Korsgaard

Similar to target-rpm from fan-common.yaml but for the default PWM setting (0..255).

---
Changes since v1:
- Rename to default-pwm

  Documentation/devicetree/bindings/hwmon/pwm-fan.yaml | 8 ++++++++
  1 file changed, 8 insertions(+)
Documentation/devicetree/bindings/hwmon/pwm-fan.yaml +0 -0
index 4e5abf7580cc..70f062b30985 100644
@@ -46,6 +46,14 @@ properties:
 
    "#cooling-cells": true
 
Quoted 10 lines

Documentation/devicetree/bindings/hwmon/pwm-fan.yaml properties: · line 55

Quoted 7 lines
Documentation/devicetree/bindings/hwmon/pwm-fan.yaml +7 -0
+  default-pwm:
+    description:
+      The default fan PWM to use.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 255
+    default: 255

See my comments on v1. Please give time for other reviewers a chance to comment.

Sorry. As far as I can see, Guenter explained why we cannot generically translate between a default PWM value and RPM.

Do you still want to move this default-pwm property to fan-common.yaml? If so, I can send a v3 doing that.

Signature · 1 line
Bye, Peter Korsgaard