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 <[email protected]>
> ---
>
> 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/[email protected]/
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
>