diff mbox series

[v2,3/3] dt-bindings: hwmon: max31790: Add maxim,pwmout-pin-as-tach-input property

Message ID 20240414042246.8681-4-chanh@os.amperecomputing.com
State Changes Requested
Headers show
Series Update the max31790 driver | 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

Chanh Nguyen April 14, 2024, 4:22 a.m. UTC
The max31790 supports six pins, which are dedicated PWM outputs. Any of the
six PWM outputs can also be configured to serve as tachometer inputs,
allowing for up to 12 tachometer fans to be monitored.

Add a new vendor-specific property, 'maxim,pwmout-pin-as-tach-input',
to allow PWMOUT to become a TACH input.

An array of six integers responds to six PWM channels for configuring
the PWM to TACH mode. When set to 0, the associated PWMOUT produces
a PWM waveform for control of fan speed. When set to 1, PWMOUT becomes
a TACH input.

Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
---
Changes in v2:
 - Update the vendor property name to "maxim,pwmout-pin-as-tach-input"   [Rob]
 - Update commit message                                                 [Krzysztof]
---
 .../devicetree/bindings/hwmon/maxim,max31790.yaml     | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Krzysztof Kozlowski April 14, 2024, 6:07 a.m. UTC | #1
On 14/04/2024 06:22, Chanh Nguyen wrote:
> The max31790 supports six pins, which are dedicated PWM outputs. Any of the
> six PWM outputs can also be configured to serve as tachometer inputs,
> allowing for up to 12 tachometer fans to be monitored.
> 
> Add a new vendor-specific property, 'maxim,pwmout-pin-as-tach-input',
> to allow PWMOUT to become a TACH input.
> 
> An array of six integers responds to six PWM channels for configuring
> the PWM to TACH mode. When set to 0, the associated PWMOUT produces
> a PWM waveform for control of fan speed. When set to 1, PWMOUT becomes
> a TACH input.
> 
> Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
> ---
> Changes in v2:
>  - Update the vendor property name to "maxim,pwmout-pin-as-tach-input"   [Rob]
>  - Update commit message                                                 [Krzysztof]

Please put binding before its user.

> ---
>  .../devicetree/bindings/hwmon/maxim,max31790.yaml     | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> index a561e5a3e9e4..2d4f50bc7c41 100644
> --- a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> +++ b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> @@ -30,6 +30,16 @@ properties:
>    resets:
>      maxItems: 1
>  
> +  maxim,pwmout-pin-as-tach-input:
> +    description: |
> +      An array of six integers responds to six PWM channels for
> +      configuring the pwm to tach mode.
> +      When set to 0, the associated PWMOUT produces a PWM waveform for
> +      control of fan speed. When set to 1, PWMOUT becomes a TACH input
> +    $ref: /schemas/types.yaml#/definitions/uint8-array
> +    maxItems: 6
> +    minItems: 6

tach-ch solves your case. You define which inputs should be used for tach.

Best regards,
Krzysztof
Chanh Nguyen April 16, 2024, 4:52 a.m. UTC | #2
On 14/04/2024 13:07, Krzysztof Kozlowski wrote:
> On 14/04/2024 06:22, Chanh Nguyen wrote:
>> The max31790 supports six pins, which are dedicated PWM outputs. Any of the
>> six PWM outputs can also be configured to serve as tachometer inputs,
>> allowing for up to 12 tachometer fans to be monitored.
>>
>> Add a new vendor-specific property, 'maxim,pwmout-pin-as-tach-input',
>> to allow PWMOUT to become a TACH input.
>>
>> An array of six integers responds to six PWM channels for configuring
>> the PWM to TACH mode. When set to 0, the associated PWMOUT produces
>> a PWM waveform for control of fan speed. When set to 1, PWMOUT becomes
>> a TACH input.
>>
>> Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
>> ---
>> Changes in v2:
>>   - Update the vendor property name to "maxim,pwmout-pin-as-tach-input"   [Rob]
>>   - Update commit message                                                 [Krzysztof]
> 
> Please put binding before its user.
> 

Hi Krzysztof, I'll drop this [Path 3/3] in the patch series v3.

My patch series will only be two patches. They are "dt-bindings: hwmon: 
Add maxim max31790" and "hwmon: (max31790): Support config PWM output 
becomes TACH"

>> ---
>>   .../devicetree/bindings/hwmon/maxim,max31790.yaml     | 11 +++++++++++
>>   1 file changed, 11 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>> index a561e5a3e9e4..2d4f50bc7c41 100644
>> --- a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>> +++ b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>> @@ -30,6 +30,16 @@ properties:
>>     resets:
>>       maxItems: 1
>>   
>> +  maxim,pwmout-pin-as-tach-input:
>> +    description: |
>> +      An array of six integers responds to six PWM channels for
>> +      configuring the pwm to tach mode.
>> +      When set to 0, the associated PWMOUT produces a PWM waveform for
>> +      control of fan speed. When set to 1, PWMOUT becomes a TACH input
>> +    $ref: /schemas/types.yaml#/definitions/uint8-array
>> +    maxItems: 6
>> +    minItems: 6
> 
> tach-ch solves your case. You define which inputs should be used for tach.
> 

Agree Krzysztof. I'll use the tach-ch property from the fan-common.yaml 
to solve my case. So I will not need to define a new vendor property as 
"maxim,pwmout-pin-as-tach-input". I'll drop this [Path 3/3] in the patch 
series v3.


> Best regards,
> Krzysztof
>
Chanh Nguyen April 23, 2024, 8:45 a.m. UTC | #3
On 16/04/2024 11:52, Chanh Nguyen wrote:
> 
> 
> On 14/04/2024 13:07, Krzysztof Kozlowski wrote:
>> On 14/04/2024 06:22, Chanh Nguyen wrote:
>>> The max31790 supports six pins, which are dedicated PWM outputs. Any 
>>> of the
>>> six PWM outputs can also be configured to serve as tachometer inputs,
>>> allowing for up to 12 tachometer fans to be monitored.
>>>
>>> Add a new vendor-specific property, 'maxim,pwmout-pin-as-tach-input',
>>> to allow PWMOUT to become a TACH input.
>>>
>>> An array of six integers responds to six PWM channels for configuring
>>> the PWM to TACH mode. When set to 0, the associated PWMOUT produces
>>> a PWM waveform for control of fan speed. When set to 1, PWMOUT becomes
>>> a TACH input.
>>>
>>> Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
>>> ---
>>> Changes in v2:
>>>   - Update the vendor property name to 
>>> "maxim,pwmout-pin-as-tach-input"   [Rob]
>>>   - Update commit 
>>> message                                                 [Krzysztof]
>>
>> Please put binding before its user.
>>
> 
> Hi Krzysztof, I'll drop this [Path 3/3] in the patch series v3.
> 
> My patch series will only be two patches. They are "dt-bindings: hwmon: 
> Add maxim max31790" and "hwmon: (max31790): Support config PWM output 
> becomes TACH"
> 
>>> ---
>>>   .../devicetree/bindings/hwmon/maxim,max31790.yaml     | 11 +++++++++++
>>>   1 file changed, 11 insertions(+)
>>>
>>> diff --git 
>>> a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml 
>>> b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>>> index a561e5a3e9e4..2d4f50bc7c41 100644
>>> --- a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>>> +++ b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
>>> @@ -30,6 +30,16 @@ properties:
>>>     resets:
>>>       maxItems: 1
>>> +  maxim,pwmout-pin-as-tach-input:
>>> +    description: |
>>> +      An array of six integers responds to six PWM channels for
>>> +      configuring the pwm to tach mode.
>>> +      When set to 0, the associated PWMOUT produces a PWM waveform for
>>> +      control of fan speed. When set to 1, PWMOUT becomes a TACH input
>>> +    $ref: /schemas/types.yaml#/definitions/uint8-array
>>> +    maxItems: 6
>>> +    minItems: 6
>>
>> tach-ch solves your case. You define which inputs should be used for 
>> tach.
>>
> 
> Agree Krzysztof. I'll use the tach-ch property from the fan-common.yaml 
> to solve my case. So I will not need to define a new vendor property as 
> "maxim,pwmout-pin-as-tach-input". I'll drop this [Path 3/3] in the patch 
> series v3.
> 
> 
>> Best regards,
>> Krzysztof
>>


Hi Krzysztof,

I checked in the
Documentation/devicetree/bindings/hwmon/fan-common.yaml. I found the
tach-ch property, but it seems define the tach channel used for fan.

      tach-ch:
      	description:
        		The tach channel used for the fan.
      	$ref: /schemas/types.yaml#/definitions/uint8-array


In my purpose, I would like to configure the pwm output pins to become 
tachometer input pins by setting bit[0] in the Configuration Register.


I think a vendor property is suitable for this purpose. It is only 
available on specific MAX31790 fan controllers and not on other fan 
controller devices. So I think we can't use the "tach-ch" in 
fan-common.yaml.

I discussed it in the thread
https://lore.kernel.org/lkml/ce8b2b49-b194-42f7-8f83-fcbf7b460970@amperemail.onmicrosoft.com/ 
, but I have not yet received Rob's response.

Please share your comment with me. I hope that will help us make a final 
decision.

Thank Krzysztof very much!
Conor Dooley April 23, 2024, 5:02 p.m. UTC | #4
On Tue, Apr 23, 2024 at 03:45:12PM +0700, Chanh Nguyen wrote:
> 
> 
> On 16/04/2024 11:52, Chanh Nguyen wrote:
> > 
> > 
> > On 14/04/2024 13:07, Krzysztof Kozlowski wrote:
> > > On 14/04/2024 06:22, Chanh Nguyen wrote:
> > > > The max31790 supports six pins, which are dedicated PWM outputs.
> > > > Any of the
> > > > six PWM outputs can also be configured to serve as tachometer inputs,
> > > > allowing for up to 12 tachometer fans to be monitored.
> > > > 
> > > > Add a new vendor-specific property, 'maxim,pwmout-pin-as-tach-input',
> > > > to allow PWMOUT to become a TACH input.
> > > > 
> > > > An array of six integers responds to six PWM channels for configuring
> > > > the PWM to TACH mode. When set to 0, the associated PWMOUT produces
> > > > a PWM waveform for control of fan speed. When set to 1, PWMOUT becomes
> > > > a TACH input.
> > > > 
> > > > Signed-off-by: Chanh Nguyen <chanh@os.amperecomputing.com>
> > > > ---
> > > > Changes in v2:
> > > >   - Update the vendor property name to
> > > > "maxim,pwmout-pin-as-tach-input"   [Rob]
> > > >   - Update commit
> > > > message                                                
> > > > [Krzysztof]
> > > 
> > > Please put binding before its user.
> > > 
> > 
> > Hi Krzysztof, I'll drop this [Path 3/3] in the patch series v3.
> > 
> > My patch series will only be two patches. They are "dt-bindings: hwmon:
> > Add maxim max31790" and "hwmon: (max31790): Support config PWM output
> > becomes TACH"
> > 
> > > > ---
> > > >   .../devicetree/bindings/hwmon/maxim,max31790.yaml     | 11 +++++++++++
> > > >   1 file changed, 11 insertions(+)
> > > > 
> > > > diff --git
> > > > a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> > > > b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> > > > index a561e5a3e9e4..2d4f50bc7c41 100644
> > > > --- a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> > > > +++ b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
> > > > @@ -30,6 +30,16 @@ properties:
> > > >     resets:
> > > >       maxItems: 1
> > > > +  maxim,pwmout-pin-as-tach-input:
> > > > +    description: |
> > > > +      An array of six integers responds to six PWM channels for
> > > > +      configuring the pwm to tach mode.
> > > > +      When set to 0, the associated PWMOUT produces a PWM waveform for
> > > > +      control of fan speed. When set to 1, PWMOUT becomes a TACH input
> > > > +    $ref: /schemas/types.yaml#/definitions/uint8-array
> > > > +    maxItems: 6
> > > > +    minItems: 6
> > > 
> > > tach-ch solves your case. You define which inputs should be used for
> > > tach.
> > > 
> > 
> > Agree Krzysztof. I'll use the tach-ch property from the fan-common.yaml
> > to solve my case. So I will not need to define a new vendor property as
> > "maxim,pwmout-pin-as-tach-input". I'll drop this [Path 3/3] in the patch
> > series v3.
> > 
> > 
> > > Best regards,
> > > Krzysztof
> > > 
> 
> 
> Hi Krzysztof,
> 
> I checked in the
> Documentation/devicetree/bindings/hwmon/fan-common.yaml. I found the
> tach-ch property, but it seems define the tach channel used for fan.
> 
>      tach-ch:
>      	description:
>        		The tach channel used for the fan.
>      	$ref: /schemas/types.yaml#/definitions/uint8-array
> 
> 
> In my purpose, I would like to configure the pwm output pins to become
> tachometer input pins by setting bit[0] in the Configuration Register.
> 
> 
> I think a vendor property is suitable for this purpose. It is only available
> on specific MAX31790 fan controllers and not on other fan controller
> devices. So I think we can't use the "tach-ch" in fan-common.yaml.

Can you explain why you think that only MAX31790 fan controllers are
capable of an arbitrary mapping of PWM outputs to TACH inputs?
Chanh Nguyen April 25, 2024, 10:33 a.m. UTC | #5
On 24/04/2024 00:02, Conor Dooley wrote:
> [EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.]
> 

Sorry Conor, there may be confusion here. I mean the mapping of the PWM 
output to the TACH input, which is on the MAX31790, and it is not sure a 
common feature on all fan controllers.

I would like to open a discussion about whether we should use the 
tach-ch property on the fan-common.yaml

I'm looking forward to hearing comments from everyone. For me, both 
tach-ch and vendor property are good.

Thank you, Conor!
Guenter Roeck April 25, 2024, 2:05 p.m. UTC | #6
On 4/25/24 03:33, Chanh Nguyen wrote:
> 
> 
> On 24/04/2024 00:02, Conor Dooley wrote:
>> [EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.]
>>
> 

The quote doesn't make much sense.

> Sorry Conor, there may be confusion here. I mean the mapping of the PWM output to the TACH input, which is on the MAX31790, and it is not sure a common feature on all fan controllers.
> 

I think the term "mapping" is a bit confusing here.

tach-ch, as I understand it, is supposed to associate a tachometer input
with a pwm output, meaning the fan speed measured with the tachometer input
is expected to change if the pwm output changes.

On MAX31790, it is possible to configure a pwm output pin as tachometer input pin.
That is something completely different. Also, the association is fixed.
If the first pwm channel is used as tachometer channel, it would show up as 7th
tachometer channel. If the 6th pwm channel is configured to be used as tachometer
input, it would show up as 12th tachometer channel.

Overall, the total number of channels on MAX31790 is always 12. 6 of them
are always tachometer inputs, the others can be configured to either be a
pwm output or a tachometer input.

pwm outputs on MAX31790 are always tied to the matching tachometer inputs
(pwm1 <--> tach1 etc) and can not be reconfigured, meaning tach-ch for
channel X would always be X.

> I would like to open a discussion about whether we should use the tach-ch property on the fan-common.yaml
> 
> I'm looking forward to hearing comments from everyone. For me, both tach-ch and vendor property are good.
> 

I am not even sure how to define tach-ch to mean "use the pwm output pin
associated with this tachometer input channel not as pwm output
but as tachometer input". That would be a boolean, not a number.

Guenter
Krzysztof Kozlowski April 25, 2024, 3:46 p.m. UTC | #7
On 25/04/2024 16:05, Guenter Roeck wrote:
> On 4/25/24 03:33, Chanh Nguyen wrote:
>>
>>
>> On 24/04/2024 00:02, Conor Dooley wrote:
>>> [EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.]
>>>
>>
> 
> The quote doesn't make much sense.
> 
>> Sorry Conor, there may be confusion here. I mean the mapping of the PWM output to the TACH input, which is on the MAX31790, and it is not sure a common feature on all fan controllers.
>>
> 
> I think the term "mapping" is a bit confusing here.
> 
> tach-ch, as I understand it, is supposed to associate a tachometer input
> with a pwm output, meaning the fan speed measured with the tachometer input
> is expected to change if the pwm output changes.
> 
> On MAX31790, it is possible to configure a pwm output pin as tachometer input pin.
> That is something completely different. Also, the association is fixed.
> If the first pwm channel is used as tachometer channel, it would show up as 7th
> tachometer channel. If the 6th pwm channel is configured to be used as tachometer
> input, it would show up as 12th tachometer channel.
> 
> Overall, the total number of channels on MAX31790 is always 12. 6 of them
> are always tachometer inputs, the others can be configured to either be a
> pwm output or a tachometer input.
> 
> pwm outputs on MAX31790 are always tied to the matching tachometer inputs
> (pwm1 <--> tach1 etc) and can not be reconfigured, meaning tach-ch for
> channel X would always be X.
> 
>> I would like to open a discussion about whether we should use the tach-ch property on the fan-common.yaml
>>
>> I'm looking forward to hearing comments from everyone. For me, both tach-ch and vendor property are good.
>>
> 
> I am not even sure how to define tach-ch to mean "use the pwm output pin
> associated with this tachometer input channel not as pwm output
> but as tachometer input". That would be a boolean, not a number.

Thanks for explanation. So this is basically pin controller function
choice - kind of output or input, although not in terms of GPIO.

Shouldn't we have then fan children which will be consumers of PWMs?
Having a consumer makes pin PWM output. Then tach-ch says which pins are
tachometer for given fan? Just like aspeed,g6-pwm-tach.yaml has?

Best regards,
Krzysztof
Conor Dooley April 25, 2024, 3:56 p.m. UTC | #8
On Thu, Apr 25, 2024 at 05:46:02PM +0200, Krzysztof Kozlowski wrote:
> On 25/04/2024 16:05, Guenter Roeck wrote:
> > On 4/25/24 03:33, Chanh Nguyen wrote:
> >>
> >>
> >> On 24/04/2024 00:02, Conor Dooley wrote:
> >>> [EXTERNAL EMAIL NOTICE: This email originated from an external sender. Please be mindful of safe email handling and proprietary information protection practices.]
> >>>
> >>
> > 
> > The quote doesn't make much sense.

The reply is to me questioning part of their earlier reply:
	> I think a vendor property is suitable for this purpose. It is only available
	> on specific MAX31790 fan controllers and not on other fan controller
	> devices. So I think we can't use the "tach-ch" in fan-common.yaml.

	Can you explain why you think that only MAX31790 fan controllers are
	capable of an arbitrary mapping of PWM outputs to TACH inputs?

> > 
> >> Sorry Conor, there may be confusion here. I mean the mapping of the PWM output to the TACH input, which is on the MAX31790, and it is not sure a common feature on all fan controllers.
> >>
> > 
> > I think the term "mapping" is a bit confusing here.
> > 
> > tach-ch, as I understand it, is supposed to associate a tachometer input
> > with a pwm output, meaning the fan speed measured with the tachometer input
> > is expected to change if the pwm output changes.
> > 
> > On MAX31790, it is possible to configure a pwm output pin as tachometer input pin.
> > That is something completely different. Also, the association is fixed.
> > If the first pwm channel is used as tachometer channel, it would show up as 7th
> > tachometer channel. If the 6th pwm channel is configured to be used as tachometer
> > input, it would show up as 12th tachometer channel.
> > 
> > Overall, the total number of channels on MAX31790 is always 12. 6 of them
> > are always tachometer inputs, the others can be configured to either be a
> > pwm output or a tachometer input.
> >

> > pwm outputs on MAX31790 are always tied to the matching tachometer inputs
> > (pwm1 <--> tach1 etc) and can not be reconfigured, meaning tach-ch for
> > channel X would always be X.

Are they? Granted, I probably didn't read this as well as you did, but
figure 3, 4 5 & 6 seem to show mappings that are not 1:1, with PWMOUT1
controlling several fans, each of which report back via a different tach
channel. I think the fan controller binding accounts for this though:
the child nodes would reference the same PWM provider but have different
tach-ch values.

> > 
> >> I would like to open a discussion about whether we should use the tach-ch property on the fan-common.yaml
> >>
> >> I'm looking forward to hearing comments from everyone. For me, both tach-ch and vendor property are good.
> >>
> > 
> > I am not even sure how to define tach-ch to mean "use the pwm output pin
> > associated with this tachometer input channel not as pwm output
> > but as tachometer input". That would be a boolean, not a number.
> 
> Thanks for explanation. So this is basically pin controller function
> choice - kind of output or input, although not in terms of GPIO.
> 

> Shouldn't we have then fan children which will be consumers of PWMs?

In this case, the max31790 has the PWM hardware, so it would be the
provider...

> Having a consumer makes pin PWM output. Then tach-ch says which pins are
> tachometer for given fan? Just like aspeed,g6-pwm-tach.yaml has?

...and it seems to me like there should be several fan child nodes as in
the aspeed binding you mention here that are the consumers. The binding
as written seems to only support a single fan.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
index a561e5a3e9e4..2d4f50bc7c41 100644
--- a/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
+++ b/Documentation/devicetree/bindings/hwmon/maxim,max31790.yaml
@@ -30,6 +30,16 @@  properties:
   resets:
     maxItems: 1
 
+  maxim,pwmout-pin-as-tach-input:
+    description: |
+      An array of six integers responds to six PWM channels for
+      configuring the pwm to tach mode.
+      When set to 0, the associated PWMOUT produces a PWM waveform for
+      control of fan speed. When set to 1, PWMOUT becomes a TACH input
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    maxItems: 6
+    minItems: 6
+
 required:
   - compatible
   - reg
@@ -48,5 +58,6 @@  examples:
       fan-controller@20 {
         compatible = "maxim,max31790";
         reg = <0x20>;
+        maxim,pwmout-pin-as-tach-input = /bits/ 8 <0 0 0 0 1 1>;
       };
     };