280 lines
7.9 KiB
YAML
280 lines
7.9 KiB
YAML
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
%YAML 1.2
|
||
|
---
|
||
|
$id: http://devicetree.org/schemas/iio/adc/qcom,spmi-vadc.yaml#
|
||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||
|
|
||
|
title: Qualcomm's SPMI PMIC ADC
|
||
|
|
||
|
maintainers:
|
||
|
- Andy Gross <agross@kernel.org>
|
||
|
- Bjorn Andersson <bjorn.andersson@linaro.org>
|
||
|
|
||
|
description: |
|
||
|
SPMI PMIC voltage ADC (VADC) provides interface to clients to read
|
||
|
voltage. The VADC is a 15-bit sigma-delta ADC.
|
||
|
SPMI PMIC5/PMIC7 voltage ADC (ADC) provides interface to clients to read
|
||
|
voltage. The VADC is a 16-bit sigma-delta ADC.
|
||
|
|
||
|
properties:
|
||
|
compatible:
|
||
|
oneOf:
|
||
|
- items:
|
||
|
- const: qcom,pms405-adc
|
||
|
- const: qcom,spmi-adc-rev2
|
||
|
|
||
|
- items:
|
||
|
- enum:
|
||
|
- qcom,spmi-vadc
|
||
|
- qcom,spmi-adc5
|
||
|
- qcom,spmi-adc-rev2
|
||
|
- qcom,spmi-adc7
|
||
|
|
||
|
reg:
|
||
|
description: VADC base address in the SPMI PMIC register map
|
||
|
maxItems: 1
|
||
|
|
||
|
'#address-cells':
|
||
|
const: 1
|
||
|
|
||
|
'#size-cells':
|
||
|
const: 0
|
||
|
|
||
|
'#io-channel-cells':
|
||
|
const: 1
|
||
|
|
||
|
interrupts:
|
||
|
maxItems: 1
|
||
|
description:
|
||
|
End of conversion interrupt.
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- '#address-cells'
|
||
|
- '#size-cells'
|
||
|
- '#io-channel-cells'
|
||
|
|
||
|
patternProperties:
|
||
|
"^.*@[0-9a-f]+$":
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
description: |
|
||
|
Represents the external channels which are connected to the ADC.
|
||
|
For compatible property "qcom,spmi-vadc" following channels, also known as
|
||
|
reference point channels, are used for result calibration and their channel
|
||
|
configuration nodes should be defined:
|
||
|
VADC_REF_625MV and/or VADC_SPARE1(based on PMIC version) VADC_REF_1250MV,
|
||
|
VADC_GND_REF and VADC_VDD_VADC.
|
||
|
|
||
|
properties:
|
||
|
reg:
|
||
|
maxItems: 1
|
||
|
description: |
|
||
|
ADC channel number.
|
||
|
See include/dt-bindings/iio/qcom,spmi-vadc.h
|
||
|
For PMIC7 ADC, the channel numbers are specified separately per PMIC
|
||
|
in the PMIC-specific files in include/dt-bindings/iio/.
|
||
|
|
||
|
label:
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
description: |
|
||
|
ADC input of the platform as seen in the schematics.
|
||
|
For thermistor inputs connected to generic AMUX or GPIO inputs
|
||
|
these can vary across platform for the same pins. Hence select
|
||
|
the platform schematics name for this channel.
|
||
|
|
||
|
qcom,decimation:
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
description: |
|
||
|
This parameter is used to decrease ADC sampling rate.
|
||
|
Quicker measurements can be made by reducing decimation ratio.
|
||
|
|
||
|
qcom,pre-scaling:
|
||
|
description: |
|
||
|
Used for scaling the channel input signal before the signal is
|
||
|
fed to VADC. The configuration for this node is to know the
|
||
|
pre-determined ratio and use it for post scaling. It is a pair of
|
||
|
integers, denoting the numerator and denominator of the fraction by which
|
||
|
input signal is multiplied. For example, <1 3> indicates the signal is scaled
|
||
|
down to 1/3 of its value before ADC measurement.
|
||
|
If property is not found default value depending on chip will be used.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||
|
oneOf:
|
||
|
- items:
|
||
|
- const: 1
|
||
|
- enum: [ 1, 3, 4, 6, 20, 8, 10 ]
|
||
|
- items:
|
||
|
- const: 10
|
||
|
- const: 81
|
||
|
|
||
|
qcom,ratiometric:
|
||
|
description: |
|
||
|
Channel calibration type.
|
||
|
- For compatible property "qcom,spmi-vadc", if this property is
|
||
|
specified VADC will use the VDD reference (1.8V) and GND for
|
||
|
channel calibration. If property is not found, channel will be
|
||
|
calibrated with 0.625V and 1.25V reference channels, also
|
||
|
known as absolute calibration.
|
||
|
- For compatible property "qcom,spmi-adc5", "qcom,spmi-adc7" and
|
||
|
"qcom,spmi-adc-rev2", if this property is specified VADC will use
|
||
|
the VDD reference (1.875V) and GND for channel calibration. If
|
||
|
property is not found, channel will be calibrated with 0V and 1.25V
|
||
|
reference channels, also known as absolute calibration.
|
||
|
type: boolean
|
||
|
|
||
|
qcom,hw-settle-time:
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
description: |
|
||
|
Time between AMUX getting configured and the ADC starting
|
||
|
conversion. The 'hw_settle_time' is an index used from valid values
|
||
|
and programmed in hardware to achieve the hardware settling delay.
|
||
|
|
||
|
qcom,avg-samples:
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
description: |
|
||
|
Number of samples to be used for measurement.
|
||
|
Averaging provides the option to obtain a single measurement
|
||
|
from the ADC that is an average of multiple samples. The value
|
||
|
selected is 2^(value).
|
||
|
|
||
|
required:
|
||
|
- reg
|
||
|
|
||
|
allOf:
|
||
|
- if:
|
||
|
properties:
|
||
|
compatible:
|
||
|
contains:
|
||
|
const: qcom,spmi-vadc
|
||
|
|
||
|
then:
|
||
|
patternProperties:
|
||
|
"^.*@[0-9a-f]+$":
|
||
|
properties:
|
||
|
qcom,decimation:
|
||
|
enum: [ 512, 1024, 2048, 4096 ]
|
||
|
default: 512
|
||
|
|
||
|
qcom,hw-settle-time:
|
||
|
enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
|
||
|
4, 6, 8, 10 ]
|
||
|
default: 0
|
||
|
|
||
|
qcom,avg-samples:
|
||
|
enum: [ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 ]
|
||
|
default: 1
|
||
|
|
||
|
- if:
|
||
|
properties:
|
||
|
compatible:
|
||
|
contains:
|
||
|
const: qcom,spmi-adc-rev2
|
||
|
|
||
|
then:
|
||
|
patternProperties:
|
||
|
"^.*@[0-9a-f]+$":
|
||
|
properties:
|
||
|
qcom,decimation:
|
||
|
enum: [ 256, 512, 1024 ]
|
||
|
default: 1024
|
||
|
|
||
|
qcom,hw-settle-time:
|
||
|
enum: [ 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
|
||
|
4, 6, 8, 10 ]
|
||
|
default: 0
|
||
|
|
||
|
qcom,avg-samples:
|
||
|
enum: [ 1, 2, 4, 8, 16 ]
|
||
|
default: 1
|
||
|
|
||
|
- if:
|
||
|
properties:
|
||
|
compatible:
|
||
|
contains:
|
||
|
const: qcom,spmi-adc5
|
||
|
|
||
|
then:
|
||
|
patternProperties:
|
||
|
"^.*@[0-9a-f]+$":
|
||
|
properties:
|
||
|
qcom,decimation:
|
||
|
enum: [ 250, 420, 840 ]
|
||
|
default: 840
|
||
|
|
||
|
qcom,hw-settle-time:
|
||
|
enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1, 2,
|
||
|
4, 6, 8, 10, 16, 32, 64, 128 ]
|
||
|
default: 15
|
||
|
|
||
|
qcom,avg-samples:
|
||
|
enum: [ 1, 2, 4, 8, 16 ]
|
||
|
default: 1
|
||
|
|
||
|
- if:
|
||
|
properties:
|
||
|
compatible:
|
||
|
contains:
|
||
|
const: qcom,spmi-adc7
|
||
|
|
||
|
then:
|
||
|
patternProperties:
|
||
|
"^.*@[0-9a-f]+$":
|
||
|
properties:
|
||
|
qcom,decimation:
|
||
|
enum: [ 85, 340, 1360 ]
|
||
|
default: 1360
|
||
|
|
||
|
qcom,hw-settle-time:
|
||
|
enum: [ 15, 100, 200, 300, 400, 500, 600, 700, 1000, 2000, 4000,
|
||
|
8000, 16000, 32000, 64000, 128000 ]
|
||
|
default: 15
|
||
|
|
||
|
qcom,avg-samples:
|
||
|
enum: [ 1, 2, 4, 8, 16 ]
|
||
|
default: 1
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
examples:
|
||
|
- |
|
||
|
spmi_bus {
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
/* VADC node */
|
||
|
pmic_vadc: adc@3100 {
|
||
|
compatible = "qcom,spmi-vadc";
|
||
|
reg = <0x3100>;
|
||
|
interrupts = <0x0 0x31 0x0 0x1>;
|
||
|
#address-cells = <1>;
|
||
|
#size-cells = <0>;
|
||
|
#io-channel-cells = <1>;
|
||
|
|
||
|
/* Channel node */
|
||
|
adc-chan@39 {
|
||
|
reg = <0x39>;
|
||
|
qcom,decimation = <512>;
|
||
|
qcom,ratiometric;
|
||
|
qcom,hw-settle-time = <200>;
|
||
|
qcom,avg-samples = <1>;
|
||
|
qcom,pre-scaling = <1 3>;
|
||
|
};
|
||
|
|
||
|
adc-chan@9 {
|
||
|
reg = <0x9>;
|
||
|
};
|
||
|
|
||
|
adc-chan@a {
|
||
|
reg = <0xa>;
|
||
|
};
|
||
|
|
||
|
adc-chan@e {
|
||
|
reg = <0xe>;
|
||
|
};
|
||
|
|
||
|
adc-chan@f {
|
||
|
reg = <0xf>;
|
||
|
};
|
||
|
};
|
||
|
};
|