diff mbox series

[v3,1/2] dt-bindings: hwmon: Add LTC4282 bindings

Message ID 20231205-ltc4282-support-v3-1-e0877b281bc2@analog.com
State Changes Requested
Headers show
Series Add support for LTC4282 | expand

Checks

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

Commit Message

Nuno Sa via B4 Relay Dec. 5, 2023, 3:22 p.m. UTC
From: Nuno Sa <nuno.sa@analog.com>

Add bindings for the LTC4282 High Current Hot Swap Controller with I2C
Compatible Monitoring.

Signed-off-by: Nuno Sa <nuno.sa@analog.com>
---
 .../devicetree/bindings/hwmon/adi,ltc4282.yaml     | 142 +++++++++++++++++++++
 MAINTAINERS                                        |   6 +
 2 files changed, 148 insertions(+)

Comments

Conor Dooley Dec. 5, 2023, 4:18 p.m. UTC | #1
On Tue, Dec 05, 2023 at 04:22:55PM +0100, Nuno Sa via B4 Relay wrote:

> +  adi,overvoltage-dividers:
> +    description: |
> +      Select which dividers to use for VDD Overvoltage detection. Note that
> +      when the internal dividers are used the threshold is referenced to VDD.
> +      The percentages in the datasheet are misleading since the actual values
> +      to look for are in the "Absolute Maximum Ratings" table in the
> +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> +      10% and 15% settings with the actual min, typical and max tolerances.
> +    $ref: /schemas/types.yaml#/definitions/string
> +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
> +
> +  adi,undervoltage-dividers:
> +    description: |
> +      Select which dividers to use for VDD Overvoltage detection. Note that
> +      when the internal dividers are used the threshold is referenced to VDD.
> +      The percentages in the datasheet are misleading since the actual values
> +      to look for are in the "Absolute Maximum Ratings" table in the
> +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> +      10% and 15% settings with the actual min, typical and max tolerances.
> +    $ref: /schemas/types.yaml#/definitions/string
> +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]

> +  adi,gpio1-mode:
> +    description: Defines the function of the Pin. It can indicate that power is
> +      good (PULL the pin low when power is not good) or that power is bad (Go
> +      into high-z when power is not good).
> +    $ref: /schemas/types.yaml#/definitions/string
> +    enum: [power_bad, power_good]
> +
> +  adi,gpio2-mode:
> +    description: Defines the function of the Pin. It can be set as the input for
> +      the ADC or indicating that the MOSFET is in stress (dissipating power).
> +    $ref: /schemas/types.yaml#/definitions/string
> +    enum: [adc_input, stress_fet]

None of these properties have a default nor are required.
What happens when they are omitted?

Thanks,
Conor.

> +
> +required:
> +  - compatible
> +  - reg
> +  - adi,rsense-nano-ohms
Nuno Sá Dec. 6, 2023, 8:38 a.m. UTC | #2
On Tue, 2023-12-05 at 16:18 +0000, Conor Dooley wrote:
> On Tue, Dec 05, 2023 at 04:22:55PM +0100, Nuno Sa via B4 Relay wrote:
> 
> > +  adi,overvoltage-dividers:
> > +    description: |
> > +      Select which dividers to use for VDD Overvoltage detection. Note that
> > +      when the internal dividers are used the threshold is referenced to VDD.
> > +      The percentages in the datasheet are misleading since the actual values
> > +      to look for are in the "Absolute Maximum Ratings" table in the
> > +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> > +      10% and 15% settings with the actual min, typical and max tolerances.
> > +    $ref: /schemas/types.yaml#/definitions/string
> > +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
> > +
> > +  adi,undervoltage-dividers:
> > +    description: |
> > +      Select which dividers to use for VDD Overvoltage detection. Note that
> > +      when the internal dividers are used the threshold is referenced to VDD.
> > +      The percentages in the datasheet are misleading since the actual values
> > +      to look for are in the "Absolute Maximum Ratings" table in the
> > +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> > +      10% and 15% settings with the actual min, typical and max tolerances.
> > +    $ref: /schemas/types.yaml#/definitions/string
> > +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
> 
> > +  adi,gpio1-mode:
> > +    description: Defines the function of the Pin. It can indicate that power is
> > +      good (PULL the pin low when power is not good) or that power is bad (Go
> > +      into high-z when power is not good).
> > +    $ref: /schemas/types.yaml#/definitions/string
> > +    enum: [power_bad, power_good]
> > +
> > +  adi,gpio2-mode:
> > +    description: Defines the function of the Pin. It can be set as the input for
> > +      the ADC or indicating that the MOSFET is in stress (dissipating power).
> > +    $ref: /schemas/types.yaml#/definitions/string
> > +    enum: [adc_input, stress_fet]
> 
> None of these properties have a default nor are required.
> What happens when they are omitted?
> 

Yeah, they get the power on reset default values (or whatever is in eeprom but that's
not the typical usecase). I'll add a default for all these properties. Your question
already made me realize something I need to fix for v4. For some reason, I thought
gpio3 was the default pin to be muxed into the ADC (and hence monitored by hwmon) but
I realized that gpio2 is the default one. Hence, I need a boolean property to allow
for users to mux gpio3 instead of gpio2.

- Nuno Sá
Conor Dooley Dec. 6, 2023, 3:41 p.m. UTC | #3
On Wed, Dec 06, 2023 at 09:38:11AM +0100, Nuno Sá wrote:
> On Tue, 2023-12-05 at 16:18 +0000, Conor Dooley wrote:
> > On Tue, Dec 05, 2023 at 04:22:55PM +0100, Nuno Sa via B4 Relay wrote:
> > 
> > > +  adi,overvoltage-dividers:
> > > +    description: |
> > > +      Select which dividers to use for VDD Overvoltage detection. Note that
> > > +      when the internal dividers are used the threshold is referenced to VDD.
> > > +      The percentages in the datasheet are misleading since the actual values
> > > +      to look for are in the "Absolute Maximum Ratings" table in the
> > > +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> > > +      10% and 15% settings with the actual min, typical and max tolerances.
> > > +    $ref: /schemas/types.yaml#/definitions/string
> > > +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
> > > +
> > > +  adi,undervoltage-dividers:
> > > +    description: |
> > > +      Select which dividers to use for VDD Overvoltage detection. Note that
> > > +      when the internal dividers are used the threshold is referenced to VDD.
> > > +      The percentages in the datasheet are misleading since the actual values
> > > +      to look for are in the "Absolute Maximum Ratings" table in the
> > > +      "Comparator Inputs" section. In there there's a line for each of the 5%,
> > > +      10% and 15% settings with the actual min, typical and max tolerances.
> > > +    $ref: /schemas/types.yaml#/definitions/string
> > > +    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
> > 
> > > +  adi,gpio1-mode:
> > > +    description: Defines the function of the Pin. It can indicate that power is
> > > +      good (PULL the pin low when power is not good) or that power is bad (Go
> > > +      into high-z when power is not good).
> > > +    $ref: /schemas/types.yaml#/definitions/string
> > > +    enum: [power_bad, power_good]
> > > +
> > > +  adi,gpio2-mode:
> > > +    description: Defines the function of the Pin. It can be set as the input for
> > > +      the ADC or indicating that the MOSFET is in stress (dissipating power).
> > > +    $ref: /schemas/types.yaml#/definitions/string
> > > +    enum: [adc_input, stress_fet]
> > 
> > None of these properties have a default nor are required.
> > What happens when they are omitted?
> > 
> 
> Yeah, they get the power on reset default values (or whatever is in eeprom but that's
> not the typical usecase). I'll add a default for all these properties. Your question
> already made me realize something I need to fix for v4. For some reason, I thought
> gpio3 was the default pin to be muxed into the ADC (and hence monitored by hwmon) but
> I realized that gpio2 is the default one. Hence, I need a boolean property to allow
> for users to mux gpio3 instead of gpio2.

:+1: patch should be good to go then IMO with those defaults added and
the mux one fixed.

Thanks,
Conor.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml b/Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml
new file mode 100644
index 000000000000..be3db64b9c18
--- /dev/null
+++ b/Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml
@@ -0,0 +1,142 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/adi,ltc4282.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices LTC4282 I2C High Current Hot Swap Controller over I2C
+
+maintainers:
+  - Nuno Sa <nuno.sa@analog.com>
+
+description: |
+  Analog Devices LTC4282 I2C High Current Hot Swap Controller over I2C.
+
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ltc4282.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ltc4282
+
+  reg:
+    maxItems: 1
+
+  vdd-supply: true
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 0
+
+  adi,rsense-nano-ohms:
+    description: Value of the sense resistor.
+
+  adi,vin-mode-microvolt:
+    description:
+      Selects operating range for the Undervoltage, Overvoltage and Foldback
+      pins. Also for the ADC. Should be set to the nominal input voltage.
+    enum: [3300000, 5000000, 12000000, 24000000]
+    default: 12000000
+
+  adi,fet-bad-timeout-ms:
+    description:
+      From the moment a FET bad conditions is present, this property selects the
+      wait time/timeout for a FET-bad fault to be signaled. Setting this to 0,
+      disables FET bad faults to be reported.
+    default: 255
+    maximum: 255
+
+  adi,overvoltage-dividers:
+    description: |
+      Select which dividers to use for VDD Overvoltage detection. Note that
+      when the internal dividers are used the threshold is referenced to VDD.
+      The percentages in the datasheet are misleading since the actual values
+      to look for are in the "Absolute Maximum Ratings" table in the
+      "Comparator Inputs" section. In there there's a line for each of the 5%,
+      10% and 15% settings with the actual min, typical and max tolerances.
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
+
+  adi,undervoltage-dividers:
+    description: |
+      Select which dividers to use for VDD Overvoltage detection. Note that
+      when the internal dividers are used the threshold is referenced to VDD.
+      The percentages in the datasheet are misleading since the actual values
+      to look for are in the "Absolute Maximum Ratings" table in the
+      "Comparator Inputs" section. In there there's a line for each of the 5%,
+      10% and 15% settings with the actual min, typical and max tolerances.
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [external, vdd_5_percent, vdd_10_percent, vdd_15_percent]
+
+  adi,current-limit-sense-microvolt:
+    description:
+      The current limit sense voltage of the chip is adjustable between
+      12.5mV and 34.4mV in 3.1mV steps. This effectively limits the current
+      on the load.
+    enum: [12500, 15625, 18750, 21875, 25000, 28125, 31250, 34375]
+    default: 25000
+
+  adi,overcurrent-retry:
+    description:
+      If set, enables the chip to auto-retry 256 timer cycles after an
+      Overcurrent fault.
+    type: boolean
+
+  adi,overvoltage-retry-disable:
+    description:
+      If set, disables the chip to auto-retry 50ms after an Overvoltage fault.
+      It's enabled by default.
+    type: boolean
+
+  adi,undervoltage-retry-disable:
+    description:
+      If set, disables the chip to auto-retry 50ms after an Undervoltage fault.
+      It's enabled by default.
+    type: boolean
+
+  adi,fault-log-enable:
+    description:
+      If set, enables the FAULT_LOG and ADC_ALERT_LOG registers to be written
+      to the EEPROM when a fault bit transitions high and hence, will be
+      available after a power cycle (the chip loads the contents of
+      the EE_FAULT_LOG register - the one in EEPROM - into FAULT_LOG at boot).
+    type: boolean
+
+  adi,gpio1-mode:
+    description: Defines the function of the Pin. It can indicate that power is
+      good (PULL the pin low when power is not good) or that power is bad (Go
+      into high-z when power is not good).
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [power_bad, power_good]
+
+  adi,gpio2-mode:
+    description: Defines the function of the Pin. It can be set as the input for
+      the ADC or indicating that the MOSFET is in stress (dissipating power).
+    $ref: /schemas/types.yaml#/definitions/string
+    enum: [adc_input, stress_fet]
+
+required:
+  - compatible
+  - reg
+  - adi,rsense-nano-ohms
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        hwmon@50 {
+            compatible = "adi,ltc4282";
+            reg = <0x50>;
+            adi,rsense-nano-ohms = <500>;
+
+            adi,gpio1-mode = "power_good";
+            adi,gpio2-mode = "adc_input";
+        };
+    };
+...
diff --git a/MAINTAINERS b/MAINTAINERS
index cd9591df77d7..1d209f226ffa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12636,6 +12636,12 @@  S:	Maintained
 F:	Documentation/hwmon/ltc4261.rst
 F:	drivers/hwmon/ltc4261.c
 
+LTC4282 HARDWARE MONITOR DRIVER
+M:	Nuno Sa <nuno.sa@analog.com>
+L:	linux-hwmon@vger.kernel.org
+S:	Supported
+F:	Documentation/devicetree/bindings/hwmon/adi,ltc4282.yaml
+
 LTC4306 I2C MULTIPLEXER DRIVER
 M:	Michael Hennerich <michael.hennerich@analog.com>
 L:	linux-i2c@vger.kernel.org