GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / iio / adc / xlnx,zynqmp-ams.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/iio/adc/xlnx,zynqmp-ams.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Xilinx Zynq Ultrascale AMS controller
8
9 maintainers:
10   - Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
11
12 description: |
13   The AMS (Analog Monitoring System) includes an ADC as well as on-chip sensors
14   that can be used to sample external voltages and monitor on-die operating
15   conditions, such as temperature and supply voltage levels.
16   The AMS has two SYSMON blocks which are PL (Programmable Logic) SYSMON and
17   PS (Processing System) SYSMON.
18   All designs should have AMS registers, but PS and PL are optional. The
19   AMS controller can work with only PS, only PL and both PS and PL
20   configurations. Please specify registers according to your design. Devicetree
21   should always have AMS module property. Providing PS & PL module is optional.
22
23   AMS Channel Details
24   ```````````````````
25   Sysmon Block  |Channel|                       Details                                 |Measurement
26                 |Number |                                                               |Type
27   ---------------------------------------------------------------------------------------------------------
28   AMS CTRL      |0      |System PLLs voltage measurement, VCC_PSPLL.                    |Voltage
29                 |1      |Battery voltage measurement, VCC_PSBATT.                       |Voltage
30                 |2      |PL Internal voltage measurement, VCCINT.                       |Voltage
31                 |3      |Block RAM voltage measurement, VCCBRAM.                        |Voltage
32                 |4      |PL Aux voltage measurement, VCCAUX.                            |Voltage
33                 |5      |Voltage measurement for six DDR I/O PLLs, VCC_PSDDR_PLL.       |Voltage
34                 |6      |VCC_PSINTFP_DDR voltage measurement.                           |Voltage
35   ---------------------------------------------------------------------------------------------------------
36   PS Sysmon     |7      |LPD temperature measurement.                                   |Temperature
37                 |8      |FPD temperature measurement (REMOTE).                          |Temperature
38                 |9      |VCC PS LPD voltage measurement (supply1).                      |Voltage
39                 |10     |VCC PS FPD voltage measurement (supply2).                      |Voltage
40                 |11     |PS Aux voltage reference (supply3).                            |Voltage
41                 |12     |DDR I/O VCC voltage measurement.                               |Voltage
42                 |13     |PS IO Bank 503 voltage measurement (supply5).                  |Voltage
43                 |14     |PS IO Bank 500 voltage measurement (supply6).                  |Voltage
44                 |15     |VCCO_PSIO1 voltage measurement.                                |Voltage
45                 |16     |VCCO_PSIO2 voltage measurement.                                |Voltage
46                 |17     |VCC_PS_GTR voltage measurement (VPS_MGTRAVCC).                 |Voltage
47                 |18     |VTT_PS_GTR voltage measurement (VPS_MGTRAVTT).                 |Voltage
48                 |19     |VCC_PSADC voltage measurement.                                 |Voltage
49   ---------------------------------------------------------------------------------------------------------
50   PL Sysmon     |20     |PL temperature measurement.                                    |Temperature
51                 |21     |PL Internal voltage measurement, VCCINT.                       |Voltage
52                 |22     |PL Auxiliary voltage measurement, VCCAUX.                      |Voltage
53                 |23     |ADC Reference P+ voltage measurement.                          |Voltage
54                 |24     |ADC Reference N- voltage measurement.                          |Voltage
55                 |25     |PL Block RAM voltage measurement, VCCBRAM.                     |Voltage
56                 |26     |LPD Internal voltage measurement, VCC_PSINTLP (supply4).       |Voltage
57                 |27     |FPD Internal voltage measurement, VCC_PSINTFP (supply5).       |Voltage
58                 |28     |PS Auxiliary voltage measurement (supply6).                    |Voltage
59                 |29     |PL VCCADC voltage measurement (vccams).                        |Voltage
60                 |30     |Differential analog input signal voltage measurment.           |Voltage
61                 |31     |VUser0 voltage measurement (supply7).                          |Voltage
62                 |32     |VUser1 voltage measurement (supply8).                          |Voltage
63                 |33     |VUser2 voltage measurement (supply9).                          |Voltage
64                 |34     |VUser3 voltage measurement (supply10).                         |Voltage
65                 |35     |Auxiliary ch 0 voltage measurement (VAux0).                    |Voltage
66                 |36     |Auxiliary ch 1 voltage measurement (VAux1).                    |Voltage
67                 |37     |Auxiliary ch 2 voltage measurement (VAux2).                    |Voltage
68                 |38     |Auxiliary ch 3 voltage measurement (VAux3).                    |Voltage
69                 |39     |Auxiliary ch 4 voltage measurement (VAux4).                    |Voltage
70                 |40     |Auxiliary ch 5 voltage measurement (VAux5).                    |Voltage
71                 |41     |Auxiliary ch 6 voltage measurement (VAux6).                    |Voltage
72                 |42     |Auxiliary ch 7 voltage measurement (VAux7).                    |Voltage
73                 |43     |Auxiliary ch 8 voltage measurement (VAux8).                    |Voltage
74                 |44     |Auxiliary ch 9 voltage measurement (VAux9).                    |Voltage
75                 |45     |Auxiliary ch 10 voltage measurement (VAux10).                  |Voltage
76                 |46     |Auxiliary ch 11 voltage measurement (VAux11).                  |Voltage
77                 |47     |Auxiliary ch 12 voltage measurement (VAux12).                  |Voltage
78                 |48     |Auxiliary ch 13 voltage measurement (VAux13).                  |Voltage
79                 |49     |Auxiliary ch 14 voltage measurement (VAux14).                  |Voltage
80                 |50     |Auxiliary ch 15 voltage measurement (VAux15).                  |Voltage
81   --------------------------------------------------------------------------------------------------------
82
83 properties:
84   compatible:
85     enum:
86       - xlnx,zynqmp-ams
87
88   interrupts:
89     maxItems: 1
90
91   reg:
92     description: AMS Controller register space
93     maxItems: 1
94
95   clocks:
96     items:
97       - description: AMS reference clock
98
99   ranges:
100     description:
101       Maps the child address space for PS and/or PL.
102     maxItems: 1
103
104   '#address-cells':
105     const: 1
106
107   '#size-cells':
108     const: 1
109
110   '#io-channel-cells':
111     const: 1
112
113   ams-ps@0:
114     type: object
115     description: |
116       PS (Processing System) SYSMON is memory mapped to PS. This block has
117       built-in alarm generation logic that is used to interrupt the processor
118       based on condition set.
119
120     properties:
121       compatible:
122         enum:
123           - xlnx,zynqmp-ams-ps
124
125       reg:
126         description: Register Space for PS-SYSMON
127         maxItems: 1
128
129     required:
130       - compatible
131       - reg
132
133     additionalProperties: false
134
135   ams-pl@400:
136     type: object
137     additionalProperties: false
138     description:
139       PL-SYSMON is capable of monitoring off chip voltage and temperature.
140       PL-SYSMON block has DRP, JTAG and I2C interface to enable monitoring
141       from external master. Out of this interface currently only DRP is
142       supported. This block has alarm generation logic that is used to
143       interrupt the processor based on condition set.
144
145     properties:
146       compatible:
147         items:
148           - enum:
149               - xlnx,zynqmp-ams-pl
150
151       reg:
152         description: Register Space for PL-SYSMON.
153         maxItems: 1
154
155       '#address-cells':
156         const: 1
157
158       '#size-cells':
159         const: 0
160
161     patternProperties:
162       "^channel@([2-4][0-9]|50)$":
163         type: object
164         description:
165           Describes the external channels connected.
166
167         properties:
168           reg:
169             description:
170               Pair of pins the channel is connected to. This value is
171               same as Channel Number for a particular channel.
172             minimum: 20
173             maximum: 50
174
175           xlnx,bipolar:
176             $ref: /schemas/types.yaml#/definitions/flag
177             type: boolean
178             description:
179               If the set channel is used in bipolar mode.
180
181         required:
182           - reg
183
184         additionalProperties: false
185
186 required:
187   - compatible
188   - reg
189   - clocks
190   - ranges
191
192 additionalProperties: false
193
194 examples:
195   - |
196     #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
197
198     bus {
199         #address-cells = <2>;
200         #size-cells = <2>;
201
202         xilinx_ams: ams@ffa50000 {
203             compatible = "xlnx,zynqmp-ams";
204             interrupt-parent = <&gic>;
205             interrupts = <0 56 4>;
206             reg = <0x0 0xffa50000 0x0 0x800>;
207             clocks = <&zynqmp_clk AMS_REF>;
208             #address-cells = <1>;
209             #size-cells = <1>;
210             #io-channel-cells = <1>;
211             ranges = <0 0 0xffa50800 0x800>;
212
213             ams_ps: ams-ps@0 {
214                 compatible = "xlnx,zynqmp-ams-ps";
215                 reg = <0 0x400>;
216             };
217
218             ams_pl: ams-pl@400 {
219                 compatible = "xlnx,zynqmp-ams-pl";
220                 reg = <0x400 0x400>;
221                 #address-cells = <1>;
222                 #size-cells = <0>;
223                 channel@30 {
224                     reg = <30>;
225                     xlnx,bipolar;
226                 };
227                 channel@31 {
228                     reg = <31>;
229                 };
230                 channel@38 {
231                     reg = <38>;
232                     xlnx,bipolar;
233                 };
234             };
235         };
236     };