diff mbox series

[v4,1/3] dt-bindings: hwmon: Add adt7475 fan/pwm properties

Message ID 20240528225638.1211676-2-chris.packham@alliedtelesis.co.nz
State Needs Review / ACK
Headers show
Series hwmon: (adt7475) duty cycle configuration | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dtbs-check warning build log
robh/dt-meta-schema success

Commit Message

Chris Packham May 28, 2024, 10:56 p.m. UTC
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@alliedtelesis.co.nz>
---

Notes:
    I realise there is still some discussion about how to express the
    frequency and duty cycle. I have a personal preference for using hertz
    for the frequency and 0-255 for the duty cycle but if the consensus is
    to express these things some other way I'm fine with doing some math.
    
    Changes in v4:
    - 0 is not a valid frequency value
    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(-)

Comments

Conor Dooley May 29, 2024, 7:58 a.m. UTC | #1
On Wed, May 29, 2024 at 10:56:36AM +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@alliedtelesis.co.nz>
> ---
> 
> Notes:
>     I realise there is still some discussion about how to express the
>     frequency and duty cycle. I have a personal preference for using hertz
>     for the frequency and 0-255 for the duty cycle but if the consensus is
>     to express these things some other way I'm fine with doing some math.

Probably worth carrying a link to it here:
https://lore.kernel.org/all/4de798f3-069e-4028-a5b5-5e6a639277e3@alliedtelesis.co.nz/

I asked Uwe to take a look & it's on his todo list.

Thanks,
Conor.

>     
>     Changes in v4:
>     - 0 is not a valid frequency value
>     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..bfef4c803bf7 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 - 11, 14, 22, 29, 35, 44, 58, 88, 22500
> +      - 2: PWM flags 0 or PWM_POLARITY_INVERTED
> +      - 3: The default pwm duty cycle - 0-255
> +
>  patternProperties:
>    "^adi,bypass-attenuator-in[0-4]$":
>      description: |
> @@ -81,6 +90,10 @@ patternProperties:
>        - smbalert#
>        - gpio
>  
> +  "^fan-[0-9]+$":
> +    $ref: fan-common.yaml#
> +    unevaluatedProperties: false
> +
>  required:
>    - compatible
>    - reg
> @@ -89,11 +102,12 @@ additionalProperties: false
>  
>  examples:
>    - |
> +    #include <dt-bindings/pwm/pwm.h>
>      i2c {
>        #address-cells = <1>;
>        #size-cells = <0>;
>  
> -      hwmon@2e {
> +      pwm: hwmon@2e {
>          compatible = "adi,adt7476";
>          reg = <0x2e>;
>          adi,bypass-attenuator-in0 = <1>;
> @@ -101,5 +115,14 @@ examples:
>          adi,pwm-active-state = <1 0 1>;
>          adi,pin10-function = "smbalert#";
>          adi,pin14-function = "tach4";
> +        #pwm-cells = <4>;
> +
> +        fan-0 {
> +          pwms = <&pwm 0 22500 PWM_POLARITY_INVERTED 255>;
> +        };
> +
> +        fan-1 {
> +          pwms = <&pwm 2 22500 PWM_POLARITY_INVERTED 255>;
> +        };
>        };
>      };
> -- 
> 2.45.1
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/hwmon/adt7475.yaml b/Documentation/devicetree/bindings/hwmon/adt7475.yaml
index 051c976ab711..bfef4c803bf7 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 - 11, 14, 22, 29, 35, 44, 58, 88, 22500
+      - 2: PWM flags 0 or PWM_POLARITY_INVERTED
+      - 3: The default pwm duty cycle - 0-255
+
 patternProperties:
   "^adi,bypass-attenuator-in[0-4]$":
     description: |
@@ -81,6 +90,10 @@  patternProperties:
       - smbalert#
       - gpio
 
+  "^fan-[0-9]+$":
+    $ref: fan-common.yaml#
+    unevaluatedProperties: false
+
 required:
   - compatible
   - reg
@@ -89,11 +102,12 @@  additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/pwm/pwm.h>
     i2c {
       #address-cells = <1>;
       #size-cells = <0>;
 
-      hwmon@2e {
+      pwm: hwmon@2e {
         compatible = "adi,adt7476";
         reg = <0x2e>;
         adi,bypass-attenuator-in0 = <1>;
@@ -101,5 +115,14 @@  examples:
         adi,pwm-active-state = <1 0 1>;
         adi,pin10-function = "smbalert#";
         adi,pin14-function = "tach4";
+        #pwm-cells = <4>;
+
+        fan-0 {
+          pwms = <&pwm 0 22500 PWM_POLARITY_INVERTED 255>;
+        };
+
+        fan-1 {
+          pwms = <&pwm 2 22500 PWM_POLARITY_INVERTED 255>;
+        };
       };
     };