Qualcomm's PM8xxx voltage XOADC

The Qualcomm PM8xxx PMICs contain a HK/XO ADC (Housekeeping/Crystal
oscillator ADC) encompassing PM8018, PM8038, PM8058 and PM8921.

Required properties:

- compatible: should be one of:
  "qcom,pm8018-adc"
  "qcom,pm8038-adc"
  "qcom,pm8058-adc"
  "qcom,pm8921-adc"

- reg: should contain the ADC base address in the PMIC, typically
  0x197.

- xoadc-ref-supply: should reference a regulator that can supply
  a reference voltage on demand. The reference voltage may vary
  with PMIC variant but is typically something like 2.2 or 1.8V.

The following required properties are standard for IO channels, see
iio-bindings.txt for more details, but notice that this particular
ADC has a special addressing scheme that require two cells for
identifying each ADC channel:

- #address-cells: should be set to <2>, the first cell is the
  prescaler (on PM8058) or premux (on PM8921) with two valid bits
  so legal values are 0x00, 0x01 or 0x02. The second cell
  is the main analog mux setting (0x00..0x0f). The combination
  of prescaler/premux and analog mux uniquely addresses a hardware
  channel on all systems.

- #size-cells: should be set to <0>

- #io-channel-cells: should be set to <2>, again the cells are
  precaler or premux followed by the analog muxing line.

- 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:

adc-channel@c {
	reg = <0x00 0x0c>;
};

adc-channel@d {
	reg = <0x00 0x0d>;
};

adc-channel@f {
	reg = <0x00 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 channels [0x00 0x0c],
[0x00 0x0d] and [0x00 0x0f] are optional.

Required channel node properties:

- reg: should contain the hardware channel number in the range
  0 .. 0xff (8 bits).

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: <u32>
  Definition: Channel calibration type. If this property is specified
          VADC will use a special voltage references for channel
          calibration. The available references are specified in the
	  as a u32 value setting (see below) and it is compulsory
	  to also specify this reference if ratiometric calibration
	  is selected.

	  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.
  The reference voltage pairs 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>;
	interrupts-extended = <&pm8058 76 IRQ_TYPE_EDGE_RISING>;
	#address-cells = <2>;
	#size-cells = <0>;
	#io-channel-cells = <2>;

	vcoin: adc-channel@0 {
		reg = <0x00 0x00>;
	};
	vbat: adc-channel@1 {
		reg = <0x00 0x01>;
	};
	dcin: adc-channel@2 {
		reg = <0x00 0x02>;
	};
	ichg: adc-channel@3 {
		reg = <0x00 0x03>;
	};
	vph_pwr: adc-channel@4 {
		reg = <0x00 0x04>;
	};
	usb_vbus: adc-channel@a {
		reg = <0x00 0x0a>;
	};
	die_temp: adc-channel@b {
		reg = <0x00 0x0b>;
	};
	ref_625mv: adc-channel@c {
		reg = <0x00 0x0c>;
	};
	ref_1250mv: adc-channel@d {
		reg = <0x00 0x0d>;
	};
	ref_325mv: adc-channel@e {
		reg = <0x00 0x0e>;
	};
	ref_muxoff: adc-channel@f {
		reg = <0x00 0x0f>;
	};
};

/* IIO client node */
iio-hwmon {
	compatible = "iio-hwmon";
	io-channels = <&xoadc 0x00 0x01>, /* Battery */
		    <&xoadc 0x00 0x02>, /* DC in (charger) */
		    <&xoadc 0x00 0x04>, /* VPH the main system voltage */
		    <&xoadc 0x00 0x0b>, /* Die temperature */
		    <&xoadc 0x00 0x0c>, /* Reference voltage 1.25V */
		    <&xoadc 0x00 0x0d>, /* Reference voltage 0.625V */
		    <&xoadc 0x00 0x0e>; /* Reference voltage 0.325V */
};
