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