162306a36Sopenharmony_ciXilinx XADC device driver
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThis binding document describes the bindings for the Xilinx 7 Series XADC as well
462306a36Sopenharmony_cias the UltraScale/UltraScale+ System Monitor.
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciThe Xilinx XADC is an ADC that can be found in the Series 7 FPGAs from Xilinx.
762306a36Sopenharmony_ciThe XADC has a DRP interface for communication. Currently two different
862306a36Sopenharmony_cifrontends for the DRP interface exist. One that is only available on the ZYNQ
962306a36Sopenharmony_cifamily as a hardmacro in the SoC portion of the ZYNQ. The other one is available
1062306a36Sopenharmony_cion all series 7 platforms and is a softmacro with a AXI interface. This binding
1162306a36Sopenharmony_cidocument describes the bindings for both of them since the bindings are very
1262306a36Sopenharmony_cisimilar.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciThe Xilinx System Monitor is an ADC that is found in the UltraScale and
1562306a36Sopenharmony_ciUltraScale+ FPGAs from Xilinx. The System Monitor provides a DRP interface for
1662306a36Sopenharmony_cicommunication. Xilinx provides a standard IP core that can be used to access the
1762306a36Sopenharmony_ciSystem Monitor through an AXI interface in the FPGA fabric. This IP core is
1862306a36Sopenharmony_cicalled the Xilinx System Management Wizard. This document describes the bindings
1962306a36Sopenharmony_cifor this IP.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciRequired properties:
2262306a36Sopenharmony_ci	- compatible: Should be one of
2362306a36Sopenharmony_ci		* "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device
2462306a36Sopenharmony_ci		  configuration interface to interface to the XADC hardmacro.
2562306a36Sopenharmony_ci		* "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to
2662306a36Sopenharmony_ci		  interface to the XADC hardmacro.
2762306a36Sopenharmony_ci		* "xlnx,system-management-wiz-1.3": When using the
2862306a36Sopenharmony_ci		  Xilinx System Management Wizard fabric IP core to access the
2962306a36Sopenharmony_ci		  UltraScale and UltraScale+ System Monitor.
3062306a36Sopenharmony_ci	- reg: Address and length of the register set for the device
3162306a36Sopenharmony_ci	- interrupts: Interrupt for the XADC control interface.
3262306a36Sopenharmony_ci	- clocks: When using the ZYNQ this must be the ZYNQ PCAP clock,
3362306a36Sopenharmony_ci	  when using the axi-xadc or the axi-system-management-wizard this must be
3462306a36Sopenharmony_ci	  the clock that provides the clock to the AXI bus interface of the core.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciOptional properties:
3762306a36Sopenharmony_ci	- xlnx,external-mux:
3862306a36Sopenharmony_ci		* "none": No external multiplexer is used, this is the default
3962306a36Sopenharmony_ci		  if the property is omitted.
4062306a36Sopenharmony_ci		* "single": External multiplexer mode is used with one
4162306a36Sopenharmony_ci		   multiplexer.
4262306a36Sopenharmony_ci		* "dual": External multiplexer mode is used with two
4362306a36Sopenharmony_ci		  multiplexers for simultaneous sampling.
4462306a36Sopenharmony_ci	- xlnx,external-mux-channel: Configures which pair of pins is used to
4562306a36Sopenharmony_ci	  sample data in external mux mode.
4662306a36Sopenharmony_ci	  Valid values for single external multiplexer mode are:
4762306a36Sopenharmony_ci		0: VP/VN
4862306a36Sopenharmony_ci		1: VAUXP[0]/VAUXN[0]
4962306a36Sopenharmony_ci		2: VAUXP[1]/VAUXN[1]
5062306a36Sopenharmony_ci		...
5162306a36Sopenharmony_ci		16: VAUXP[15]/VAUXN[15]
5262306a36Sopenharmony_ci	  Valid values for dual external multiplexer mode are:
5362306a36Sopenharmony_ci		1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8]
5462306a36Sopenharmony_ci		2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9]
5562306a36Sopenharmony_ci		...
5662306a36Sopenharmony_ci		8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15]
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci	  This property needs to be present if the device is configured for
5962306a36Sopenharmony_ci	  external multiplexer mode (either single or dual). If the device is
6062306a36Sopenharmony_ci	  not using external multiplexer mode the property is ignored.
6162306a36Sopenharmony_ci	- xnlx,channels: List of external channels that are connected to the ADC
6262306a36Sopenharmony_ci	  Required properties:
6362306a36Sopenharmony_ci		* #address-cells: Should be 1.
6462306a36Sopenharmony_ci		* #size-cells: Should be 0.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	  The child nodes of this node represent the external channels which are
6762306a36Sopenharmony_ci	  connected to the ADC. If the property is no present no external
6862306a36Sopenharmony_ci	  channels will be assumed to be connected.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci	  Each child node represents one channel and has the following
7162306a36Sopenharmony_ci	  properties:
7262306a36Sopenharmony_ci		Required properties:
7362306a36Sopenharmony_ci			* reg: Pair of pins the channel is connected to.
7462306a36Sopenharmony_ci				0: VP/VN
7562306a36Sopenharmony_ci				1: VAUXP[0]/VAUXN[0]
7662306a36Sopenharmony_ci				2: VAUXP[1]/VAUXN[1]
7762306a36Sopenharmony_ci				...
7862306a36Sopenharmony_ci				16: VAUXP[15]/VAUXN[15]
7962306a36Sopenharmony_ci			  Note each channel number should only be used at most
8062306a36Sopenharmony_ci			  once.
8162306a36Sopenharmony_ci		Optional properties:
8262306a36Sopenharmony_ci			* xlnx,bipolar: If set the channel is used in bipolar
8362306a36Sopenharmony_ci			  mode.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciExamples:
8762306a36Sopenharmony_ci	xadc@f8007100 {
8862306a36Sopenharmony_ci		compatible = "xlnx,zynq-xadc-1.00.a";
8962306a36Sopenharmony_ci		reg = <0xf8007100 0x20>;
9062306a36Sopenharmony_ci		interrupts = <0 7 4>;
9162306a36Sopenharmony_ci		interrupt-parent = <&gic>;
9262306a36Sopenharmony_ci		clocks = <&pcap_clk>;
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci		xlnx,channels {
9562306a36Sopenharmony_ci			#address-cells = <1>;
9662306a36Sopenharmony_ci			#size-cells = <0>;
9762306a36Sopenharmony_ci			channel@0 {
9862306a36Sopenharmony_ci				reg = <0>;
9962306a36Sopenharmony_ci			};
10062306a36Sopenharmony_ci			channel@1 {
10162306a36Sopenharmony_ci				reg = <1>;
10262306a36Sopenharmony_ci			};
10362306a36Sopenharmony_ci			channel@8 {
10462306a36Sopenharmony_ci				reg = <8>;
10562306a36Sopenharmony_ci			};
10662306a36Sopenharmony_ci		};
10762306a36Sopenharmony_ci	};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci	xadc@43200000 {
11062306a36Sopenharmony_ci		compatible = "xlnx,axi-xadc-1.00.a";
11162306a36Sopenharmony_ci		reg = <0x43200000 0x1000>;
11262306a36Sopenharmony_ci		interrupts = <0 53 4>;
11362306a36Sopenharmony_ci		interrupt-parent = <&gic>;
11462306a36Sopenharmony_ci		clocks = <&fpga1_clk>;
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci		xlnx,channels {
11762306a36Sopenharmony_ci			#address-cells = <1>;
11862306a36Sopenharmony_ci			#size-cells = <0>;
11962306a36Sopenharmony_ci			channel@0 {
12062306a36Sopenharmony_ci				reg = <0>;
12162306a36Sopenharmony_ci				xlnx,bipolar;
12262306a36Sopenharmony_ci			};
12362306a36Sopenharmony_ci		};
12462306a36Sopenharmony_ci	};
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci	adc@80000000 {
12762306a36Sopenharmony_ci		compatible = "xlnx,system-management-wiz-1.3";
12862306a36Sopenharmony_ci		reg = <0x80000000 0x1000>;
12962306a36Sopenharmony_ci		interrupts = <0 81 4>;
13062306a36Sopenharmony_ci		interrupt-parent = <&gic>;
13162306a36Sopenharmony_ci		clocks = <&fpga1_clk>;
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci		xlnx,channels {
13462306a36Sopenharmony_ci			#address-cells = <1>;
13562306a36Sopenharmony_ci			#size-cells = <0>;
13662306a36Sopenharmony_ci			channel@0 {
13762306a36Sopenharmony_ci				reg = <0>;
13862306a36Sopenharmony_ci				xlnx,bipolar;
13962306a36Sopenharmony_ci			};
14062306a36Sopenharmony_ci		};
14162306a36Sopenharmony_ci	};
142