1c66ec88fSEmmanuel VadotXilinx XADC device driver 2c66ec88fSEmmanuel Vadot 3*5def4c47SEmmanuel VadotThis binding document describes the bindings for the Xilinx 7 Series XADC as well 4*5def4c47SEmmanuel Vadotas the UltraScale/UltraScale+ System Monitor. 5*5def4c47SEmmanuel Vadot 6*5def4c47SEmmanuel VadotThe Xilinx XADC is an ADC that can be found in the Series 7 FPGAs from Xilinx. 7*5def4c47SEmmanuel VadotThe XADC has a DRP interface for communication. Currently two different 8*5def4c47SEmmanuel Vadotfrontends for the DRP interface exist. One that is only available on the ZYNQ 9*5def4c47SEmmanuel Vadotfamily as a hardmacro in the SoC portion of the ZYNQ. The other one is available 10*5def4c47SEmmanuel Vadoton all series 7 platforms and is a softmacro with a AXI interface. This binding 11*5def4c47SEmmanuel Vadotdocument describes the bindings for both of them since the bindings are very 12*5def4c47SEmmanuel Vadotsimilar. 13*5def4c47SEmmanuel Vadot 14*5def4c47SEmmanuel VadotThe Xilinx System Monitor is an ADC that is found in the UltraScale and 15*5def4c47SEmmanuel VadotUltraScale+ FPGAs from Xilinx. The System Monitor provides a DRP interface for 16*5def4c47SEmmanuel Vadotcommunication. Xilinx provides a standard IP core that can be used to access the 17*5def4c47SEmmanuel VadotSystem Monitor through an AXI interface in the FPGA fabric. This IP core is 18*5def4c47SEmmanuel Vadotcalled the Xilinx System Management Wizard. This document describes the bindings 19*5def4c47SEmmanuel Vadotfor this IP. 20c66ec88fSEmmanuel Vadot 21c66ec88fSEmmanuel VadotRequired properties: 22c66ec88fSEmmanuel Vadot - compatible: Should be one of 23c66ec88fSEmmanuel Vadot * "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device 24c66ec88fSEmmanuel Vadot configuration interface to interface to the XADC hardmacro. 25c66ec88fSEmmanuel Vadot * "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to 26c66ec88fSEmmanuel Vadot interface to the XADC hardmacro. 27*5def4c47SEmmanuel Vadot * "xlnx,system-management-wiz-1.3": When using the 28*5def4c47SEmmanuel Vadot Xilinx System Management Wizard fabric IP core to access the 29*5def4c47SEmmanuel Vadot UltraScale and UltraScale+ System Monitor. 30c66ec88fSEmmanuel Vadot - reg: Address and length of the register set for the device 31c66ec88fSEmmanuel Vadot - interrupts: Interrupt for the XADC control interface. 32c66ec88fSEmmanuel Vadot - clocks: When using the ZYNQ this must be the ZYNQ PCAP clock, 33*5def4c47SEmmanuel Vadot when using the axi-xadc or the axi-system-management-wizard this must be 34*5def4c47SEmmanuel Vadot the clock that provides the clock to the AXI bus interface of the core. 35c66ec88fSEmmanuel Vadot 36c66ec88fSEmmanuel VadotOptional properties: 37c66ec88fSEmmanuel Vadot - xlnx,external-mux: 38c66ec88fSEmmanuel Vadot * "none": No external multiplexer is used, this is the default 39c66ec88fSEmmanuel Vadot if the property is omitted. 40c66ec88fSEmmanuel Vadot * "single": External multiplexer mode is used with one 41c66ec88fSEmmanuel Vadot multiplexer. 42c66ec88fSEmmanuel Vadot * "dual": External multiplexer mode is used with two 43c66ec88fSEmmanuel Vadot multiplexers for simultaneous sampling. 44c66ec88fSEmmanuel Vadot - xlnx,external-mux-channel: Configures which pair of pins is used to 45c66ec88fSEmmanuel Vadot sample data in external mux mode. 46c66ec88fSEmmanuel Vadot Valid values for single external multiplexer mode are: 47c66ec88fSEmmanuel Vadot 0: VP/VN 48c66ec88fSEmmanuel Vadot 1: VAUXP[0]/VAUXN[0] 49c66ec88fSEmmanuel Vadot 2: VAUXP[1]/VAUXN[1] 50c66ec88fSEmmanuel Vadot ... 51c66ec88fSEmmanuel Vadot 16: VAUXP[15]/VAUXN[15] 52c66ec88fSEmmanuel Vadot Valid values for dual external multiplexer mode are: 53c66ec88fSEmmanuel Vadot 1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8] 54c66ec88fSEmmanuel Vadot 2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9] 55c66ec88fSEmmanuel Vadot ... 56c66ec88fSEmmanuel Vadot 8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15] 57c66ec88fSEmmanuel Vadot 58c66ec88fSEmmanuel Vadot This property needs to be present if the device is configured for 59c66ec88fSEmmanuel Vadot external multiplexer mode (either single or dual). If the device is 60c66ec88fSEmmanuel Vadot not using external multiplexer mode the property is ignored. 61c66ec88fSEmmanuel Vadot - xnlx,channels: List of external channels that are connected to the ADC 62c66ec88fSEmmanuel Vadot Required properties: 63c66ec88fSEmmanuel Vadot * #address-cells: Should be 1. 64c66ec88fSEmmanuel Vadot * #size-cells: Should be 0. 65c66ec88fSEmmanuel Vadot 66c66ec88fSEmmanuel Vadot The child nodes of this node represent the external channels which are 67c66ec88fSEmmanuel Vadot connected to the ADC. If the property is no present no external 68c66ec88fSEmmanuel Vadot channels will be assumed to be connected. 69c66ec88fSEmmanuel Vadot 70c66ec88fSEmmanuel Vadot Each child node represents one channel and has the following 71c66ec88fSEmmanuel Vadot properties: 72c66ec88fSEmmanuel Vadot Required properties: 73c66ec88fSEmmanuel Vadot * reg: Pair of pins the channel is connected to. 74c66ec88fSEmmanuel Vadot 0: VP/VN 75c66ec88fSEmmanuel Vadot 1: VAUXP[0]/VAUXN[0] 76c66ec88fSEmmanuel Vadot 2: VAUXP[1]/VAUXN[1] 77c66ec88fSEmmanuel Vadot ... 78c66ec88fSEmmanuel Vadot 16: VAUXP[15]/VAUXN[15] 79c66ec88fSEmmanuel Vadot Note each channel number should only be used at most 80c66ec88fSEmmanuel Vadot once. 81c66ec88fSEmmanuel Vadot Optional properties: 82c66ec88fSEmmanuel Vadot * xlnx,bipolar: If set the channel is used in bipolar 83c66ec88fSEmmanuel Vadot mode. 84c66ec88fSEmmanuel Vadot 85c66ec88fSEmmanuel Vadot 86c66ec88fSEmmanuel VadotExamples: 87c66ec88fSEmmanuel Vadot xadc@f8007100 { 88c66ec88fSEmmanuel Vadot compatible = "xlnx,zynq-xadc-1.00.a"; 89c66ec88fSEmmanuel Vadot reg = <0xf8007100 0x20>; 90c66ec88fSEmmanuel Vadot interrupts = <0 7 4>; 91c66ec88fSEmmanuel Vadot interrupt-parent = <&gic>; 92c66ec88fSEmmanuel Vadot clocks = <&pcap_clk>; 93c66ec88fSEmmanuel Vadot 94c66ec88fSEmmanuel Vadot xlnx,channels { 95c66ec88fSEmmanuel Vadot #address-cells = <1>; 96c66ec88fSEmmanuel Vadot #size-cells = <0>; 97c66ec88fSEmmanuel Vadot channel@0 { 98c66ec88fSEmmanuel Vadot reg = <0>; 99c66ec88fSEmmanuel Vadot }; 100c66ec88fSEmmanuel Vadot channel@1 { 101c66ec88fSEmmanuel Vadot reg = <1>; 102c66ec88fSEmmanuel Vadot }; 103c66ec88fSEmmanuel Vadot channel@8 { 104c66ec88fSEmmanuel Vadot reg = <8>; 105c66ec88fSEmmanuel Vadot }; 106c66ec88fSEmmanuel Vadot }; 107c66ec88fSEmmanuel Vadot }; 108c66ec88fSEmmanuel Vadot 109c66ec88fSEmmanuel Vadot xadc@43200000 { 110c66ec88fSEmmanuel Vadot compatible = "xlnx,axi-xadc-1.00.a"; 111c66ec88fSEmmanuel Vadot reg = <0x43200000 0x1000>; 112c66ec88fSEmmanuel Vadot interrupts = <0 53 4>; 113c66ec88fSEmmanuel Vadot interrupt-parent = <&gic>; 114c66ec88fSEmmanuel Vadot clocks = <&fpga1_clk>; 115c66ec88fSEmmanuel Vadot 116c66ec88fSEmmanuel Vadot xlnx,channels { 117c66ec88fSEmmanuel Vadot #address-cells = <1>; 118c66ec88fSEmmanuel Vadot #size-cells = <0>; 119c66ec88fSEmmanuel Vadot channel@0 { 120c66ec88fSEmmanuel Vadot reg = <0>; 121c66ec88fSEmmanuel Vadot xlnx,bipolar; 122c66ec88fSEmmanuel Vadot }; 123c66ec88fSEmmanuel Vadot }; 124c66ec88fSEmmanuel Vadot }; 125*5def4c47SEmmanuel Vadot 126*5def4c47SEmmanuel Vadot adc@80000000 { 127*5def4c47SEmmanuel Vadot compatible = "xlnx,system-management-wiz-1.3"; 128*5def4c47SEmmanuel Vadot reg = <0x80000000 0x1000>; 129*5def4c47SEmmanuel Vadot interrupts = <0 81 4>; 130*5def4c47SEmmanuel Vadot interrupt-parent = <&gic>; 131*5def4c47SEmmanuel Vadot clocks = <&fpga1_clk>; 132*5def4c47SEmmanuel Vadot 133*5def4c47SEmmanuel Vadot xlnx,channels { 134*5def4c47SEmmanuel Vadot #address-cells = <1>; 135*5def4c47SEmmanuel Vadot #size-cells = <0>; 136*5def4c47SEmmanuel Vadot channel@0 { 137*5def4c47SEmmanuel Vadot reg = <0>; 138*5def4c47SEmmanuel Vadot xlnx,bipolar; 139*5def4c47SEmmanuel Vadot }; 140*5def4c47SEmmanuel Vadot }; 141*5def4c47SEmmanuel Vadot }; 142