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