Xilinx XADC device driver

This binding document describes the bindings for both of them since the
bindings are very similar. The Xilinx XADC is a ADC that can be found in the
series 7 FPGAs from Xilinx. The XADC has a DRP interface for communication.
Currently two different frontends for the DRP interface exist. One that is only
available on the ZYNQ family as a hardmacro in the SoC portion of the ZYNQ. The
other one is available on all series 7 platforms and is a softmacro with a AXI
interface. This binding document describes the bindings for both of them since
the bindings are very similar.

Required properties:
	- compatible: Should be one of
		* "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device
		  configuration interface to interface to the XADC hardmacro.
		* "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to
		  interface to the XADC hardmacro.
	- reg: Address and length of the register set for the device
	- interrupts: Interrupt for the XADC control interface.
	- clocks: When using the ZYNQ this must be the ZYNQ PCAP clock,
	  when using the AXI-XADC pcore this must be the clock that provides the
	  clock to the AXI bus interface of the core.

Optional properties:
	- xlnx,external-mux:
		* "none": No external multiplexer is used, this is the default
		  if the property is omitted.
		* "single": External multiplexer mode is used with one
		   multiplexer.
		* "dual": External multiplexer mode is used with two
		  multiplexers for simultaneous sampling.
	- xlnx,external-mux-channel: Configures which pair of pins is used to
	  sample data in external mux mode.
	  Valid values for single external multiplexer mode are:
		0: VP/VN
		1: VAUXP[0]/VAUXN[0]
		2: VAUXP[1]/VAUXN[1]
		...
		16: VAUXP[15]/VAUXN[15]
	  Valid values for dual external multiplexer mode are:
		1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8]
		2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9]
		...
		8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15]

	  This property needs to be present if the device is configured for
	  external multiplexer mode (either single or dual). If the device is
	  not using external multiplexer mode the property is ignored.
	- xnlx,channels: List of external channels that are connected to the ADC
	  Required properties:
		* #address-cells: Should be 1.
		* #size-cells: Should be 0.

	  The child nodes of this node represent the external channels which are
	  connected to the ADC. If the property is no present no external
	  channels will be assumed to be connected.

	  Each child node represents one channel and has the following
	  properties:
		Required properties:
			* reg: Pair of pins the channel is connected to.
				0: VP/VN
				1: VAUXP[0]/VAUXN[0]
				2: VAUXP[1]/VAUXN[1]
				...
				16: VAUXP[15]/VAUXN[15]
			  Note each channel number should only be used at most
			  once.
		Optional properties:
			* xlnx,bipolar: If set the channel is used in bipolar
			  mode.


Examples:
	xadc@f8007100 {
		compatible = "xlnx,zynq-xadc-1.00.a";
		reg = <0xf8007100 0x20>;
		interrupts = <0 7 4>;
		interrupt-parent = <&gic>;
		clocks = <&pcap_clk>;

		xlnx,channels {
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				reg = <0>;
			};
			channel@1 {
				reg = <1>;
			};
			channel@8 {
				reg = <8>;
			};
		};
	};

	xadc@43200000 {
		compatible = "xlnx,axi-xadc-1.00.a";
		reg = <0x43200000 0x1000>;
		interrupts = <0 53 4>;
		interrupt-parent = <&gic>;
		clocks = <&fpga1_clk>;

		xlnx,channels {
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				reg = <0>;
				xlnx,bipolar;
			};
		};
	};
