On Thu, Dec 15, 2016 at 11:48:09PM +0100, Linus Walleij wrote: > This adds the device tree bindings for the Qualcomm PM8xxx > ADCs. This is based on the existing DT bindings for the > SPMI ADC so there are hopefully no controversial features. > > Cc: devicetree@xxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > Cc: linux-arm-msm@xxxxxxxxxxxxxxx > Cc: Ivan T. Ivanov <iivanov.xz@xxxxxxxxx> > Cc: Andy Gross <andy.gross@xxxxxxxxxx> > Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > Cc: Stephen Boyd <sboyd@xxxxxxxxxxxxxx> > Cc: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx> > Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > --- > ChangeLog v1->v2: > - Spelling fixes > --- > .../bindings/iio/adc/qcom,pm8xxx-xoadc.txt | 160 +++++++++++++++++++++ > 1 file changed, 160 insertions(+) > create mode 100644 Documentation/devicetree/bindings/iio/adc/qcom,pm8xxx-xoadc.txt > > diff --git a/Documentation/devicetree/bindings/iio/adc/qcom,pm8xxx-xoadc.txt b/Documentation/devicetree/bindings/iio/adc/qcom,pm8xxx-xoadc.txt > new file mode 100644 > index 000000000000..3c6bca5b4edf > --- /dev/null > +++ b/Documentation/devicetree/bindings/iio/adc/qcom,pm8xxx-xoadc.txt > @@ -0,0 +1,160 @@ > +Qualcomm's PM8xxx voltage XOADC > + > +The Qualcomm PM8xxx PMICs contain a HK/XO ADC (Housekeeping/Crystal > +oscillator ADC) encompassing PM8018, PM8038, PM8058, PM8917 and PM8921. > + > +Required properties: > + > +- compatible: should be one of: > + "qcom,pm8018-adc" > + "qcom,pm8038-adc" > + "qcom,pm8058-adc" > + "qcom,pm8917-adc" > + "qcom,pm8921-adc" > + > +- reg: should contain the ADC base address in the PMIC, typically > + 0x197. > + > +The following required properties are standard for IO channels, see > +iio-bindings.txt for more details: > + > +- #address-cells: should be set to <1> > + > +- #size-cells: should be set to <0> > + > +- #io-channel-cells: should be set to <1> > + > +- interrupts: should refer to the parent PMIC interrupt controller > + and reference the proper ADC interrupt. > + > +Required subnodes: > + > +The ADC channels are configured as subnodes of the ADC. Since some of > +them are used for calibrating the ADC, these nodes are compulsory: > + > +ref_625mv { ref@c > + reg = <0x0c>; > +}; > + > +ref_1250mv { > + reg = <0x0d>; > +}; > + > +ref_muxoff { > + reg = <0x0f>; > +}; > + > +These three nodes are used for absolute and ratiometric calibration > +and only need to have these reg values: they are by hardware definition > +1:1 ratio converters that sample 625, 1250 and 0 milliV and create > +an interpolation calibration for all other ADCs. > + > +Optional subnodes: any channels other than channel 0x0c, 0x0d and > +0x0f are optional. > + > +Required channel node properties: > + > +- reg: should contain the hardware channel number in the range > + 0 .. 0x0f (4 bits). The hardware only supports 16 channels. > + > +Optional channel node properties: > + > +- qcom,decimation: > + Value type: <u32> > + Definition: This parameter is used to decrease the ADC sampling rate. > + Quicker measurements can be made by reducing the decimation ratio. > + Valid values are 512, 1024, 2048, 4096. > + If the property is not found, a default value of 512 will be used. > + > +- qcom,ratiometric: > + Value type: <empty> > + Definition: Channel calibration type. If this property is specified > + VADC will use the VDD reference (1.8V) and GND for channel > + calibration. If the property is not found, the channel will be > + calibrated with the 0.625V and 1.25V reference channels, also > + known as an absolute calibration. > + > +- qcom,ratiometric-ref: > + Value type: <u32> > + Definition: The reference voltage pair when using ratiometric > + calibration: > + 0 = XO_IN/XOADC_GND > + 1 = PMIC_IN/XOADC_GND > + 2 = PMIC_IN/BMS_CSP > + 3 (invalid) > + 4 = XOADC_GND/XOADC_GND > + 5 = XOADC_VREF/XOADC_GND > + > +Example: > + > +xoadc: xoadc@197 { > + compatible = "qcom,pm8058-adc"; > + reg = <0x197>; > + interrupt-parent = <&pm8058>; > + interrupts = <76 1>; > + #address-cells = <1>; > + #size-cells = <0>; > + #io-channel-cells = <1>; > + > + vcoin { > + reg = <0x00>; If you have a reg property, then you should have a unit address on all of these. These should really all be something like adc-channel@... Not sure if we have a standard node name for ADC channels. Or don't put any of this in DT. > + }; > + vbat { > + reg = <0x01>; > + }; > + dcin { > + reg = <0x02>; > + }; > + ichg { > + reg = <0x03>; > + }; > + vph_pwr { > + reg = <0x04>; > + }; > + mpp5 { > + reg = <0x05>; > + }; > + mpp6 { > + reg = <0x06>; > + }; > + mpp7 { > + reg = <0x07>; > + }; > + mpp8 { > + reg = <0x08>; > + }; > + mpp9 { > + reg = <0x09>; > + }; > + usb_vbus { > + reg = <0x0a>; > + }; > + die_temp { > + reg = <0x0b>; > + }; > + ref_625mv { > + reg = <0x0c>; > + }; > + ref_1250mv { > + reg = <0x0d>; > + }; > + ref_325mv { > + reg = <0x0e>; > + }; > + ref_muxoff { > + reg = <0x0f>; > + }; > +}; -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html