Message ID | 1590684869-15400-2-git-send-email-jprakash@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [V6,1/7] iio: adc: Convert the QCOM SPMI ADC bindings to .yaml format | expand |
On Thu, 28 May 2020 22:24:23 +0530 Jishnu Prakash <jprakash@codeaurora.org> wrote: > Convert the adc bindings from .txt to .yaml format. > > Signed-off-by: Jishnu Prakash <jprakash@codeaurora.org> > Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> > Reviewed-by: Rob Herring <robh@kernel.org> > Acked-by: Linus Walleij <linus.walleij@linaro.org> Jishnu, Patch is fine, but I'd like to have seen a cover letter and clear statement of changes from v5. Thanks, Jonathan > --- > .../devicetree/bindings/iio/adc/qcom,spmi-vadc.txt | 173 -------------- > .../bindings/iio/adc/qcom,spmi-vadc.yaml | 252 +++++++++++++++++++++ > 2 files changed, 252 insertions(+), 173 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > create mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > > diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > deleted file mode 100644 > index c878768..0000000 > --- a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > +++ /dev/null > @@ -1,173 +0,0 @@ > -Qualcomm's SPMI PMIC ADC > - > -- SPMI PMIC voltage ADC (VADC) provides interface to clients to read > - voltage. The VADC is a 15-bit sigma-delta ADC. > -- SPMI PMIC5 voltage ADC (ADC) provides interface to clients to read > - voltage. The VADC is a 16-bit sigma-delta ADC. > - > -VADC node: > - > -- compatible: > - Usage: required > - Value type: <string> > - Definition: Should contain "qcom,spmi-vadc". > - Should contain "qcom,spmi-adc5" for PMIC5 ADC driver. > - Should contain "qcom,spmi-adc-rev2" for PMIC rev2 ADC driver. > - Should contain "qcom,pms405-adc" for PMS405 PMIC > - > -- reg: > - Usage: required > - Value type: <prop-encoded-array> > - Definition: VADC base address in the SPMI PMIC register map. > - > -- #address-cells: > - Usage: required > - Value type: <u32> > - Definition: Must be one. Child node 'reg' property should define ADC > - channel number. > - > -- #size-cells: > - Usage: required > - Value type: <u32> > - Definition: Must be zero. > - > -- #io-channel-cells: > - Usage: required > - Value type: <u32> > - Definition: Must be one. For details about IIO bindings see: > - Documentation/devicetree/bindings/iio/iio-bindings.txt > - > -- interrupts: > - Usage: optional > - Value type: <prop-encoded-array> > - Definition: End of conversion interrupt. > - > -Channel node properties: > - > -- reg: > - Usage: required > - Value type: <u32> > - Definition: ADC channel number. > - See include/dt-bindings/iio/qcom,spmi-vadc.h > - > -- label: > - Usage: required for "qcom,spmi-adc5" and "qcom,spmi-adc-rev2" > - Value type: <empty> > - Definition: 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: > - Usage: optional > - Value type: <u32> > - Definition: This parameter is used to decrease ADC sampling rate. > - Quicker measurements can be made by reducing decimation ratio. > - - For compatible property "qcom,spmi-vadc", valid values are > - 512, 1024, 2048, 4096. If property is not found, default value > - of 512 will be used. > - - For compatible property "qcom,spmi-adc5", valid values are 250, 420 > - and 840. If property is not found, default value of 840 is used. > - - For compatible property "qcom,spmi-adc-rev2", valid values are 256, > - 512 and 1024. If property is not present, default value is 1024. > - > -- qcom,pre-scaling: > - Usage: optional > - Value type: <u32 array> > - Definition: 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. Select one from > - the following options. > - <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> > - If property is not found default value depending on chip will be used. > - > -- qcom,ratiometric: > - Usage: optional > - Value type: <empty> > - Definition: 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" 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. > - > -- qcom,hw-settle-time: > - Usage: optional > - Value type: <u32> > - Definition: 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. > - - For compatible property "qcom,spmi-vadc" and "qcom,spmi-adc-rev2", > - Delay = 100us * (hw_settle_time) for hw_settle_time < 11, > - and 2ms * (hw_settle_time - 10) otherwise. > - Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, > - 900 us and 1, 2, 4, 6, 8, 10 ms. > - If property is not found, channel will use 0us. > - - For compatible property "qcom,spmi-adc5", delay = 15us for > - value 0, 100us * (value) for values < 11, > - and 2ms * (value - 10) otherwise. > - Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 800, > - 900 us and 1, 2, 4, 6, 8, 10 ms > - Certain controller digital versions have valid values of > - 15, 100, 200, 300, 400, 500, 600, 700, 1, 2, 4, 8, 16, 32, 64, 128 ms > - If property is not found, channel will use 15us. > - > -- qcom,avg-samples: > - Usage: optional > - Value type: <u32> > - Definition: 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). > - - For compatible property "qcom,spmi-vadc", valid values > - are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 > - If property is not found, 1 sample will be used. > - - For compatible property "qcom,spmi-adc5" and "qcom,spmi-adc-rev2", > - valid values are: 1, 2, 4, 8, 16 > - If property is not found, 1 sample will be used. > - > -NOTE: > - > -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. > - > -Example: > - > -#include <dt-bindings/iio/qcom,spmi-vadc.h> > -#include <linux/irq.h> > -/* ... */ > - > - /* VADC node */ > - pmic_vadc: vadc@3100 { > - compatible = "qcom,spmi-vadc"; > - reg = <0x3100>; > - interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; > - #address-cells = <1>; > - #size-cells = <0>; > - #io-channel-cells = <1>; > - io-channel-ranges; > - > - /* Channel node */ > - adc-chan@VADC_LR_MUX10_USB_ID { > - reg = <VADC_LR_MUX10_USB_ID>; > - qcom,decimation = <512>; > - qcom,ratiometric; > - qcom,hw-settle-time = <200>; > - qcom,avg-samples = <1>; > - qcom,pre-scaling = <1 3>; > - }; > - }; > - > - /* IIO client node */ > - usb { > - io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; > - io-channel-names = "vadc"; > - }; > diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > new file mode 100644 > index 0000000..de8d243 > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > @@ -0,0 +1,252 @@ > +# 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 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 > + > + 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 > + 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: > + description: | > + ADC channel number. > + See include/dt-bindings/iio/qcom,spmi-vadc.h > + > + 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. > + allOf: > + - $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" 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 > + > +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>; > + io-channel-ranges; > + > + /* 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>; > + }; > + }; > + };
On Sun, 31 May 2020 11:36:12 +0100 Jonathan Cameron <jic23@kernel.org> wrote: > On Thu, 28 May 2020 22:24:23 +0530 > Jishnu Prakash <jprakash@codeaurora.org> wrote: > > > Convert the adc bindings from .txt to .yaml format. > > > > Signed-off-by: Jishnu Prakash <jprakash@codeaurora.org> > > Reviewed-by: Amit Kucheria <amit.kucheria@linaro.org> > > Reviewed-by: Rob Herring <robh@kernel.org> > > Acked-by: Linus Walleij <linus.walleij@linaro.org> > > Jishnu, Patch is fine, but I'd like to have seen a cover > letter and clear statement of changes from v5. > Applied to the togreg branch of iio.git and pushed out as testing. Note we've missed the merge window now for IIO so this will be in the following cycle. Thanks, J > Thanks, > > Jonathan > > > --- > > .../devicetree/bindings/iio/adc/qcom,spmi-vadc.txt | 173 -------------- > > .../bindings/iio/adc/qcom,spmi-vadc.yaml | 252 +++++++++++++++++++++ > > 2 files changed, 252 insertions(+), 173 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > > create mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > > > > diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > > deleted file mode 100644 > > index c878768..0000000 > > --- a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt > > +++ /dev/null > > @@ -1,173 +0,0 @@ > > -Qualcomm's SPMI PMIC ADC > > - > > -- SPMI PMIC voltage ADC (VADC) provides interface to clients to read > > - voltage. The VADC is a 15-bit sigma-delta ADC. > > -- SPMI PMIC5 voltage ADC (ADC) provides interface to clients to read > > - voltage. The VADC is a 16-bit sigma-delta ADC. > > - > > -VADC node: > > - > > -- compatible: > > - Usage: required > > - Value type: <string> > > - Definition: Should contain "qcom,spmi-vadc". > > - Should contain "qcom,spmi-adc5" for PMIC5 ADC driver. > > - Should contain "qcom,spmi-adc-rev2" for PMIC rev2 ADC driver. > > - Should contain "qcom,pms405-adc" for PMS405 PMIC > > - > > -- reg: > > - Usage: required > > - Value type: <prop-encoded-array> > > - Definition: VADC base address in the SPMI PMIC register map. > > - > > -- #address-cells: > > - Usage: required > > - Value type: <u32> > > - Definition: Must be one. Child node 'reg' property should define ADC > > - channel number. > > - > > -- #size-cells: > > - Usage: required > > - Value type: <u32> > > - Definition: Must be zero. > > - > > -- #io-channel-cells: > > - Usage: required > > - Value type: <u32> > > - Definition: Must be one. For details about IIO bindings see: > > - Documentation/devicetree/bindings/iio/iio-bindings.txt > > - > > -- interrupts: > > - Usage: optional > > - Value type: <prop-encoded-array> > > - Definition: End of conversion interrupt. > > - > > -Channel node properties: > > - > > -- reg: > > - Usage: required > > - Value type: <u32> > > - Definition: ADC channel number. > > - See include/dt-bindings/iio/qcom,spmi-vadc.h > > - > > -- label: > > - Usage: required for "qcom,spmi-adc5" and "qcom,spmi-adc-rev2" > > - Value type: <empty> > > - Definition: 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: > > - Usage: optional > > - Value type: <u32> > > - Definition: This parameter is used to decrease ADC sampling rate. > > - Quicker measurements can be made by reducing decimation ratio. > > - - For compatible property "qcom,spmi-vadc", valid values are > > - 512, 1024, 2048, 4096. If property is not found, default value > > - of 512 will be used. > > - - For compatible property "qcom,spmi-adc5", valid values are 250, 420 > > - and 840. If property is not found, default value of 840 is used. > > - - For compatible property "qcom,spmi-adc-rev2", valid values are 256, > > - 512 and 1024. If property is not present, default value is 1024. > > - > > -- qcom,pre-scaling: > > - Usage: optional > > - Value type: <u32 array> > > - Definition: 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. Select one from > > - the following options. > > - <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> > > - If property is not found default value depending on chip will be used. > > - > > -- qcom,ratiometric: > > - Usage: optional > > - Value type: <empty> > > - Definition: 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" 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. > > - > > -- qcom,hw-settle-time: > > - Usage: optional > > - Value type: <u32> > > - Definition: 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. > > - - For compatible property "qcom,spmi-vadc" and "qcom,spmi-adc-rev2", > > - Delay = 100us * (hw_settle_time) for hw_settle_time < 11, > > - and 2ms * (hw_settle_time - 10) otherwise. > > - Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, > > - 900 us and 1, 2, 4, 6, 8, 10 ms. > > - If property is not found, channel will use 0us. > > - - For compatible property "qcom,spmi-adc5", delay = 15us for > > - value 0, 100us * (value) for values < 11, > > - and 2ms * (value - 10) otherwise. > > - Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 800, > > - 900 us and 1, 2, 4, 6, 8, 10 ms > > - Certain controller digital versions have valid values of > > - 15, 100, 200, 300, 400, 500, 600, 700, 1, 2, 4, 8, 16, 32, 64, 128 ms > > - If property is not found, channel will use 15us. > > - > > -- qcom,avg-samples: > > - Usage: optional > > - Value type: <u32> > > - Definition: 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). > > - - For compatible property "qcom,spmi-vadc", valid values > > - are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 > > - If property is not found, 1 sample will be used. > > - - For compatible property "qcom,spmi-adc5" and "qcom,spmi-adc-rev2", > > - valid values are: 1, 2, 4, 8, 16 > > - If property is not found, 1 sample will be used. > > - > > -NOTE: > > - > > -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. > > - > > -Example: > > - > > -#include <dt-bindings/iio/qcom,spmi-vadc.h> > > -#include <linux/irq.h> > > -/* ... */ > > - > > - /* VADC node */ > > - pmic_vadc: vadc@3100 { > > - compatible = "qcom,spmi-vadc"; > > - reg = <0x3100>; > > - interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; > > - #address-cells = <1>; > > - #size-cells = <0>; > > - #io-channel-cells = <1>; > > - io-channel-ranges; > > - > > - /* Channel node */ > > - adc-chan@VADC_LR_MUX10_USB_ID { > > - reg = <VADC_LR_MUX10_USB_ID>; > > - qcom,decimation = <512>; > > - qcom,ratiometric; > > - qcom,hw-settle-time = <200>; > > - qcom,avg-samples = <1>; > > - qcom,pre-scaling = <1 3>; > > - }; > > - }; > > - > > - /* IIO client node */ > > - usb { > > - io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; > > - io-channel-names = "vadc"; > > - }; > > diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > > new file mode 100644 > > index 0000000..de8d243 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml > > @@ -0,0 +1,252 @@ > > +# 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 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 > > + > > + 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 > > + 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: > > + description: | > > + ADC channel number. > > + See include/dt-bindings/iio/qcom,spmi-vadc.h > > + > > + 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. > > + allOf: > > + - $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" 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 > > + > > +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>; > > + io-channel-ranges; > > + > > + /* 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>; > > + }; > > + }; > > + }; >
diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt deleted file mode 100644 index c878768..0000000 --- a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.txt +++ /dev/null @@ -1,173 +0,0 @@ -Qualcomm's SPMI PMIC ADC - -- SPMI PMIC voltage ADC (VADC) provides interface to clients to read - voltage. The VADC is a 15-bit sigma-delta ADC. -- SPMI PMIC5 voltage ADC (ADC) provides interface to clients to read - voltage. The VADC is a 16-bit sigma-delta ADC. - -VADC node: - -- compatible: - Usage: required - Value type: <string> - Definition: Should contain "qcom,spmi-vadc". - Should contain "qcom,spmi-adc5" for PMIC5 ADC driver. - Should contain "qcom,spmi-adc-rev2" for PMIC rev2 ADC driver. - Should contain "qcom,pms405-adc" for PMS405 PMIC - -- reg: - Usage: required - Value type: <prop-encoded-array> - Definition: VADC base address in the SPMI PMIC register map. - -- #address-cells: - Usage: required - Value type: <u32> - Definition: Must be one. Child node 'reg' property should define ADC - channel number. - -- #size-cells: - Usage: required - Value type: <u32> - Definition: Must be zero. - -- #io-channel-cells: - Usage: required - Value type: <u32> - Definition: Must be one. For details about IIO bindings see: - Documentation/devicetree/bindings/iio/iio-bindings.txt - -- interrupts: - Usage: optional - Value type: <prop-encoded-array> - Definition: End of conversion interrupt. - -Channel node properties: - -- reg: - Usage: required - Value type: <u32> - Definition: ADC channel number. - See include/dt-bindings/iio/qcom,spmi-vadc.h - -- label: - Usage: required for "qcom,spmi-adc5" and "qcom,spmi-adc-rev2" - Value type: <empty> - Definition: 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: - Usage: optional - Value type: <u32> - Definition: This parameter is used to decrease ADC sampling rate. - Quicker measurements can be made by reducing decimation ratio. - - For compatible property "qcom,spmi-vadc", valid values are - 512, 1024, 2048, 4096. If property is not found, default value - of 512 will be used. - - For compatible property "qcom,spmi-adc5", valid values are 250, 420 - and 840. If property is not found, default value of 840 is used. - - For compatible property "qcom,spmi-adc-rev2", valid values are 256, - 512 and 1024. If property is not present, default value is 1024. - -- qcom,pre-scaling: - Usage: optional - Value type: <u32 array> - Definition: 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. Select one from - the following options. - <1 1>, <1 3>, <1 4>, <1 6>, <1 20>, <1 8>, <10 81>, <1 10> - If property is not found default value depending on chip will be used. - -- qcom,ratiometric: - Usage: optional - Value type: <empty> - Definition: 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" 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. - -- qcom,hw-settle-time: - Usage: optional - Value type: <u32> - Definition: 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. - - For compatible property "qcom,spmi-vadc" and "qcom,spmi-adc-rev2", - Delay = 100us * (hw_settle_time) for hw_settle_time < 11, - and 2ms * (hw_settle_time - 10) otherwise. - Valid values are: 0, 100, 200, 300, 400, 500, 600, 700, 800, - 900 us and 1, 2, 4, 6, 8, 10 ms. - If property is not found, channel will use 0us. - - For compatible property "qcom,spmi-adc5", delay = 15us for - value 0, 100us * (value) for values < 11, - and 2ms * (value - 10) otherwise. - Valid values are: 15, 100, 200, 300, 400, 500, 600, 700, 800, - 900 us and 1, 2, 4, 6, 8, 10 ms - Certain controller digital versions have valid values of - 15, 100, 200, 300, 400, 500, 600, 700, 1, 2, 4, 8, 16, 32, 64, 128 ms - If property is not found, channel will use 15us. - -- qcom,avg-samples: - Usage: optional - Value type: <u32> - Definition: 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). - - For compatible property "qcom,spmi-vadc", valid values - are: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 - If property is not found, 1 sample will be used. - - For compatible property "qcom,spmi-adc5" and "qcom,spmi-adc-rev2", - valid values are: 1, 2, 4, 8, 16 - If property is not found, 1 sample will be used. - -NOTE: - -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. - -Example: - -#include <dt-bindings/iio/qcom,spmi-vadc.h> -#include <linux/irq.h> -/* ... */ - - /* VADC node */ - pmic_vadc: vadc@3100 { - compatible = "qcom,spmi-vadc"; - reg = <0x3100>; - interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; - #address-cells = <1>; - #size-cells = <0>; - #io-channel-cells = <1>; - io-channel-ranges; - - /* Channel node */ - adc-chan@VADC_LR_MUX10_USB_ID { - reg = <VADC_LR_MUX10_USB_ID>; - qcom,decimation = <512>; - qcom,ratiometric; - qcom,hw-settle-time = <200>; - qcom,avg-samples = <1>; - qcom,pre-scaling = <1 3>; - }; - }; - - /* IIO client node */ - usb { - io-channels = <&pmic_vadc VADC_LR_MUX10_USB_ID>; - io-channel-names = "vadc"; - }; diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml new file mode 100644 index 0000000..de8d243 --- /dev/null +++ b/Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml @@ -0,0 +1,252 @@ +# 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 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 + + 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 + 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: + description: | + ADC channel number. + See include/dt-bindings/iio/qcom,spmi-vadc.h + + 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. + allOf: + - $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" 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 + +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>; + io-channel-ranges; + + /* 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>; + }; + }; + };