Re: [PATCH v2 1/2] dt-bindings: hwmon: ltc2991: add bindings

From: Conor Dooley
Date: Mon Oct 02 2023 - 15:56:17 EST


On Mon, Oct 02, 2023 at 01:46:53PM +0000, Miclaus, Antoniu wrote:
>
>
> --
> Antoniu Miclăuş
>
> > -----Original Message-----
> > From: Conor Dooley <conor@xxxxxxxxxx>
> > Sent: Monday, October 2, 2023 4:01 PM
> > To: Miclaus, Antoniu <Antoniu.Miclaus@xxxxxxxxxx>
> > Cc: Jean Delvare <jdelvare@xxxxxxxx>; Guenter Roeck <linux@roeck-
> > us.net>; Rob Herring <robh+dt@xxxxxxxxxx>; Krzysztof Kozlowski
> > <krzysztof.kozlowski+dt@xxxxxxxxxx>; Conor Dooley
> > <conor+dt@xxxxxxxxxx>; Jonathan Corbet <corbet@xxxxxxx>; linux-
> > hwmon@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-
> > kernel@xxxxxxxxxxxxxxx; linux-doc@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH v2 1/2] dt-bindings: hwmon: ltc2991: add bindings
> >
> > [External]
> >
> > Hey,
> >
> > On Mon, Oct 02, 2023 at 01:18:14PM +0300, Antoniu Miclaus wrote:
> > > Add dt-bindings for ltc2991 octal i2c voltage, current and temperature
> > > monitor.
> > >
> > > Signed-off-by: Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx>
> > > ---
> > > changes in v2:
> > > - make compatible const type
> > > - remove `|` where not necessary
> > > - switch to micro-ohms for the shunt resistor property
> > > - add vendor prefix for temperature-enable
> >
> > Thanks for the updates...
> >
> > > .../bindings/hwmon/adi,ltc2991.yaml | 114 ++++++++++++++++++
> > > 1 file changed, 114 insertions(+)
> > > create mode 100644
> > Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
> > b/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
> > > new file mode 100644
> > > index 000000000000..3811ea07a04f
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
> > > @@ -0,0 +1,114 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +
> > > +$id: http://devicetree.org/schemas/hwmon/adi,ltc2991.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Analog Devices LTC2991 Octal I2C Voltage, Current and Temperature
> > Monitor
> > > +
> > > +maintainers:
> > > + - Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx>
> > > +
> > > +description: |
> > > + The LTC2991 is used to monitor system temperatures, voltages and
> > currents.
> > > + Through the I2C serial interface, the eight monitors can individually
> > measure
> > > + supply voltages and can be paired for differential measurements of
> > current
> > > + sense resistors or temperature sensing transistors.
> > > +
> > > + Datasheet:
> > > + https://www.analog.com/en/products/ltc2991.html
> > > +
> > > +properties:
> > > + compatible:
> > > + const: adi,ltc2991
> > > +
> > > + reg:
> > > + maxItems: 1
> > > +
> > > + '#address-cells':
> > > + const: 1
> > > +
> > > + '#size-cells':
> > > + const: 0
> > > +
> > > + vcc-supply: true
> > > +
> > > +patternProperties:
> > > + "^channel@[0-3]$":
> > > + type: object
> > > + description:
> > > + Represents the differential/temperature channels.

Missing "additionalProperties: false". Once added, it finds that you
didn't update the child nodes to account for the addition of the vendor
prefix.

> > > +
> > > + properties:
> > > + reg:
> > > + description:
> > > + The channel number. LTC2991 can monitor 4 currents/temperatures.
> > > + items:
> > > + minimum: 0
> > > + maximum: 3

Should reg not be required here?

> > > +
> > > + shunt-resistor-micro-ohms:
> > > + description:
> > > + The value of curent sense resistor in miliohms. Enables differential
> > > + input pair.
> > > +
> > > + adi,temperature-enable:
> > > + description:
> > > + Enables temperature readings for a input pair.
> > > + type: boolean
> >
> > ...but I did not see an answer to my question on v1:
> > TBH, this seems like it is used just to control software behaviour.
> > Why would you want to actually disable this in DT?
> > In other words, is there something in that hardware that precludes
> > measuring temperature for channels that do not contain this property?
> >
> > Thanks,
> > Conor.
> >
> Sorry for missing that. I took in consideration this approach based on the pin functions
> described in the datasheet (page 8 of 32). For example the V1 pin of the part can support
> 3 different configurations: "V1 (Pin 1): First Monitor Input. This pin can be configured
> as a single-ended input (0V to 4.9V) or the positive inputfor a differential or remote diode
> temperature measurement (in combination with V2)."
> Moreover, looking at the multiple typical applications examples at the end of the datasheet
> there is a specific adjacent hardware circuit connected to this part for the temperature
> measurements configurations.

Okay. That seems fair to me, thanks for the explanation. From your
description here it sounds like the pins between which differential
measurements are made are fixed in hardware. Is that correct?

One final question - from your description here it sounds like
shunt-resistor-micro-ohms & adi,temperature-enable are mutually
exclusive? If they are indeed mutually exclusive, you can fold in
something like the below.
diff --git a/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml b/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
index 3811ea07a04f..8b1bbbfe7948 100644
--- a/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
+++ b/Documentation/devicetree/bindings/hwmon/adi,ltc2991.yaml
@@ -39,6 +39,7 @@ patternProperties:
type: object
description:
Represents the differential/temperature channels.
+ additionalProperties: false

properties:
reg:
@@ -58,6 +59,17 @@ patternProperties:
Enables temperature readings for a input pair.
type: boolean

+ required:
+ - reg
+
+ allOf:
+ - if:
+ required:
+ - shunt-resistor-micro-ohms
+ then:
+ properties:
+ adi,temperature-enable: false
+
required:
- compatible
- reg

Cheers,
Conor.

>
> Thank you,
> Antoniu
> > > +
> > > +required:
> > > + - compatible
> > > + - reg
> > > + - vcc-supply
> > > +
> > > +additionalProperties: false
> > > +
> > > +examples:
> > > + - |
> > > + i2c {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + hwmon@48 {
> > > + compatible = "adi,ltc2991";
> > > + reg = <0x48>;
> > > + vcc-supply = <&vcc>;
> > > + };
> > > + };
> > > + - |
> > > + i2c {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + hwmon@48 {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + compatible = "adi,ltc2991";
> > > + reg = <0x48>;
> > > + vcc-supply = <&vcc>;
> > > +
> > > + channel@0 {
> > > + reg = <0x0>;
> > > + shunt-resistor-micro-ohms = <100000>;
> > > + };
> > > +
> > > + channel@1 {
> > > + reg = <0x1>;
> > > + shunt-resistor-micro-ohms = <100000>;
> > > + };
> > > +
> > > + channel@2 {
> > > + reg = <0x2>;
> > > + temperature-enable;
> > > + };
> > > +
> > > + channel@3 {
> > > + reg = <0x3>;
> > > + temperature-enable;
> > > + };
> > > + };
> > > + };
> > > +...
> > > --
> > > 2.42.0
> > >

Attachment: signature.asc
Description: PGP signature