Message ID | 20231205-ltc4282-support-v3-1-e0877b281bc2@analog.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | Add support for LTC4282 | expand |
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
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á
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 --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