1588858c4SLars-Peter ClausenXilinx XADC device driver 2588858c4SLars-Peter Clausen 3*d0dc4c80SLars-Peter ClausenThis binding document describes the bindings for the Xilinx 7 Series XADC as well 4*d0dc4c80SLars-Peter Clausenas the UltraScale/UltraScale+ System Monitor. 5*d0dc4c80SLars-Peter Clausen 6*d0dc4c80SLars-Peter ClausenThe Xilinx XADC is an ADC that can be found in the Series 7 FPGAs from Xilinx. 7*d0dc4c80SLars-Peter ClausenThe XADC has a DRP interface for communication. Currently two different 8*d0dc4c80SLars-Peter Clausenfrontends for the DRP interface exist. One that is only available on the ZYNQ 9*d0dc4c80SLars-Peter Clausenfamily as a hardmacro in the SoC portion of the ZYNQ. The other one is available 10*d0dc4c80SLars-Peter Clausenon all series 7 platforms and is a softmacro with a AXI interface. This binding 11*d0dc4c80SLars-Peter Clausendocument describes the bindings for both of them since the bindings are very 12*d0dc4c80SLars-Peter Clausensimilar. 13*d0dc4c80SLars-Peter Clausen 14*d0dc4c80SLars-Peter ClausenThe Xilinx System Monitor is an ADC that is found in the UltraScale and 15*d0dc4c80SLars-Peter ClausenUltraScale+ FPGAs from Xilinx. The System Monitor provides a DRP interface for 16*d0dc4c80SLars-Peter Clausencommunication. Xilinx provides a standard IP core that can be used to access the 17*d0dc4c80SLars-Peter ClausenSystem Monitor through an AXI interface in the FPGA fabric. This IP core is 18*d0dc4c80SLars-Peter Clausencalled the Xilinx System Management Wizard. This document describes the bindings 19*d0dc4c80SLars-Peter Clausenfor this IP. 20588858c4SLars-Peter Clausen 21588858c4SLars-Peter ClausenRequired properties: 22588858c4SLars-Peter Clausen - compatible: Should be one of 23588858c4SLars-Peter Clausen * "xlnx,zynq-xadc-1.00.a": When using the ZYNQ device 24588858c4SLars-Peter Clausen configuration interface to interface to the XADC hardmacro. 25588858c4SLars-Peter Clausen * "xlnx,axi-xadc-1.00.a": When using the axi-xadc pcore to 26588858c4SLars-Peter Clausen interface to the XADC hardmacro. 27*d0dc4c80SLars-Peter Clausen * "xlnx,system-management-wiz-1.3": When using the 28*d0dc4c80SLars-Peter Clausen Xilinx System Management Wizard fabric IP core to access the 29*d0dc4c80SLars-Peter Clausen UltraScale and UltraScale+ System Monitor. 30588858c4SLars-Peter Clausen - reg: Address and length of the register set for the device 31588858c4SLars-Peter Clausen - interrupts: Interrupt for the XADC control interface. 32588858c4SLars-Peter Clausen - clocks: When using the ZYNQ this must be the ZYNQ PCAP clock, 33*d0dc4c80SLars-Peter Clausen when using the axi-xadc or the axi-system-management-wizard this must be 34*d0dc4c80SLars-Peter Clausen the clock that provides the clock to the AXI bus interface of the core. 35588858c4SLars-Peter Clausen 36588858c4SLars-Peter ClausenOptional properties: 37588858c4SLars-Peter Clausen - xlnx,external-mux: 38588858c4SLars-Peter Clausen * "none": No external multiplexer is used, this is the default 39588858c4SLars-Peter Clausen if the property is omitted. 40588858c4SLars-Peter Clausen * "single": External multiplexer mode is used with one 41588858c4SLars-Peter Clausen multiplexer. 42588858c4SLars-Peter Clausen * "dual": External multiplexer mode is used with two 43588858c4SLars-Peter Clausen multiplexers for simultaneous sampling. 44588858c4SLars-Peter Clausen - xlnx,external-mux-channel: Configures which pair of pins is used to 45588858c4SLars-Peter Clausen sample data in external mux mode. 46588858c4SLars-Peter Clausen Valid values for single external multiplexer mode are: 47588858c4SLars-Peter Clausen 0: VP/VN 48588858c4SLars-Peter Clausen 1: VAUXP[0]/VAUXN[0] 49588858c4SLars-Peter Clausen 2: VAUXP[1]/VAUXN[1] 50588858c4SLars-Peter Clausen ... 51588858c4SLars-Peter Clausen 16: VAUXP[15]/VAUXN[15] 52588858c4SLars-Peter Clausen Valid values for dual external multiplexer mode are: 53588858c4SLars-Peter Clausen 1: VAUXP[0]/VAUXN[0] - VAUXP[8]/VAUXN[8] 54588858c4SLars-Peter Clausen 2: VAUXP[1]/VAUXN[1] - VAUXP[9]/VAUXN[9] 55588858c4SLars-Peter Clausen ... 56588858c4SLars-Peter Clausen 8: VAUXP[7]/VAUXN[7] - VAUXP[15]/VAUXN[15] 57588858c4SLars-Peter Clausen 58588858c4SLars-Peter Clausen This property needs to be present if the device is configured for 59588858c4SLars-Peter Clausen external multiplexer mode (either single or dual). If the device is 60588858c4SLars-Peter Clausen not using external multiplexer mode the property is ignored. 61588858c4SLars-Peter Clausen - xnlx,channels: List of external channels that are connected to the ADC 62588858c4SLars-Peter Clausen Required properties: 63588858c4SLars-Peter Clausen * #address-cells: Should be 1. 64588858c4SLars-Peter Clausen * #size-cells: Should be 0. 65588858c4SLars-Peter Clausen 66588858c4SLars-Peter Clausen The child nodes of this node represent the external channels which are 67588858c4SLars-Peter Clausen connected to the ADC. If the property is no present no external 68588858c4SLars-Peter Clausen channels will be assumed to be connected. 69588858c4SLars-Peter Clausen 70588858c4SLars-Peter Clausen Each child node represents one channel and has the following 71588858c4SLars-Peter Clausen properties: 72588858c4SLars-Peter Clausen Required properties: 73ac3e8ea1SMasanari Iida * reg: Pair of pins the channel is connected to. 74588858c4SLars-Peter Clausen 0: VP/VN 75588858c4SLars-Peter Clausen 1: VAUXP[0]/VAUXN[0] 76588858c4SLars-Peter Clausen 2: VAUXP[1]/VAUXN[1] 77588858c4SLars-Peter Clausen ... 78588858c4SLars-Peter Clausen 16: VAUXP[15]/VAUXN[15] 79588858c4SLars-Peter Clausen Note each channel number should only be used at most 80588858c4SLars-Peter Clausen once. 81588858c4SLars-Peter Clausen Optional properties: 82588858c4SLars-Peter Clausen * xlnx,bipolar: If set the channel is used in bipolar 83588858c4SLars-Peter Clausen mode. 84588858c4SLars-Peter Clausen 85588858c4SLars-Peter Clausen 86588858c4SLars-Peter ClausenExamples: 87588858c4SLars-Peter Clausen xadc@f8007100 { 88588858c4SLars-Peter Clausen compatible = "xlnx,zynq-xadc-1.00.a"; 89588858c4SLars-Peter Clausen reg = <0xf8007100 0x20>; 90588858c4SLars-Peter Clausen interrupts = <0 7 4>; 91588858c4SLars-Peter Clausen interrupt-parent = <&gic>; 92588858c4SLars-Peter Clausen clocks = <&pcap_clk>; 93588858c4SLars-Peter Clausen 94588858c4SLars-Peter Clausen xlnx,channels { 95588858c4SLars-Peter Clausen #address-cells = <1>; 96588858c4SLars-Peter Clausen #size-cells = <0>; 97588858c4SLars-Peter Clausen channel@0 { 98588858c4SLars-Peter Clausen reg = <0>; 99588858c4SLars-Peter Clausen }; 100588858c4SLars-Peter Clausen channel@1 { 101588858c4SLars-Peter Clausen reg = <1>; 102588858c4SLars-Peter Clausen }; 103588858c4SLars-Peter Clausen channel@8 { 104588858c4SLars-Peter Clausen reg = <8>; 105588858c4SLars-Peter Clausen }; 106588858c4SLars-Peter Clausen }; 107588858c4SLars-Peter Clausen }; 108588858c4SLars-Peter Clausen 109588858c4SLars-Peter Clausen xadc@43200000 { 110588858c4SLars-Peter Clausen compatible = "xlnx,axi-xadc-1.00.a"; 111588858c4SLars-Peter Clausen reg = <0x43200000 0x1000>; 112588858c4SLars-Peter Clausen interrupts = <0 53 4>; 113588858c4SLars-Peter Clausen interrupt-parent = <&gic>; 114588858c4SLars-Peter Clausen clocks = <&fpga1_clk>; 115588858c4SLars-Peter Clausen 116588858c4SLars-Peter Clausen xlnx,channels { 117588858c4SLars-Peter Clausen #address-cells = <1>; 118588858c4SLars-Peter Clausen #size-cells = <0>; 119588858c4SLars-Peter Clausen channel@0 { 120588858c4SLars-Peter Clausen reg = <0>; 121588858c4SLars-Peter Clausen xlnx,bipolar; 122588858c4SLars-Peter Clausen }; 123588858c4SLars-Peter Clausen }; 124588858c4SLars-Peter Clausen }; 125*d0dc4c80SLars-Peter Clausen 126*d0dc4c80SLars-Peter Clausen adc@80000000 { 127*d0dc4c80SLars-Peter Clausen compatible = "xlnx,system-management-wiz-1.3"; 128*d0dc4c80SLars-Peter Clausen reg = <0x80000000 0x1000>; 129*d0dc4c80SLars-Peter Clausen interrupts = <0 81 4>; 130*d0dc4c80SLars-Peter Clausen interrupt-parent = <&gic>; 131*d0dc4c80SLars-Peter Clausen clocks = <&fpga1_clk>; 132*d0dc4c80SLars-Peter Clausen 133*d0dc4c80SLars-Peter Clausen xlnx,channels { 134*d0dc4c80SLars-Peter Clausen #address-cells = <1>; 135*d0dc4c80SLars-Peter Clausen #size-cells = <0>; 136*d0dc4c80SLars-Peter Clausen channel@0 { 137*d0dc4c80SLars-Peter Clausen reg = <0>; 138*d0dc4c80SLars-Peter Clausen xlnx,bipolar; 139*d0dc4c80SLars-Peter Clausen }; 140*d0dc4c80SLars-Peter Clausen }; 141*d0dc4c80SLars-Peter Clausen }; 142