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
7title: Xilinx Zynq Ultrascale AMS controller
8
9maintainers:
10  - Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
11
12description: |
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
83properties:
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  ranges:
96    description:
97      Maps the child address space for PS and/or PL.
98    maxItems: 1
99
100  '#address-cells':
101    const: 1
102
103  '#size-cells':
104    const: 1
105
106  '#io-channel-cells':
107    const: 1
108
109  ams-ps@0:
110    type: object
111    description: |
112      PS (Processing System) SYSMON is memory mapped to PS. This block has
113      built-in alarm generation logic that is used to interrupt the processor
114      based on condition set.
115
116    properties:
117      compatible:
118        enum:
119          - xlnx,zynqmp-ams-ps
120
121      reg:
122        description: Register Space for PS-SYSMON
123        maxItems: 1
124
125    required:
126      - compatible
127      - reg
128
129    additionalProperties: false
130
131  ams-pl@400:
132    type: object
133    description:
134      PL-SYSMON is capable of monitoring off chip voltage and temperature.
135      PL-SYSMON block has DRP, JTAG and I2C interface to enable monitoring
136      from external master. Out of this interface currently only DRP is
137      supported. This block has alarm generation logic that is used to
138      interrupt the processor based on condition set.
139
140    properties:
141      compatible:
142        items:
143          - enum:
144              - xlnx,zynqmp-ams-pl
145
146      reg:
147        description: Register Space for PL-SYSMON.
148        maxItems: 1
149
150      '#address-cells':
151        const: 1
152
153      '#size-cells':
154        const: 0
155
156    patternProperties:
157      "^channel@([2-4][0-9]|50)$":
158        type: object
159        description:
160          Describes the external channels connected.
161
162        properties:
163          reg:
164            description:
165              Pair of pins the channel is connected to. This value is
166              same as Channel Number for a particular channel.
167            minimum: 20
168            maximum: 50
169
170          xlnx,bipolar:
171            $ref: /schemas/types.yaml#/definitions/flag
172            type: boolean
173            description:
174              If the set channel is used in bipolar mode.
175
176        required:
177          - reg
178
179        additionalProperties: false
180
181required:
182  - compatible
183  - reg
184  - ranges
185
186additionalProperties: false
187
188examples:
189  - |
190    bus {
191        #address-cells = <2>;
192        #size-cells = <2>;
193
194        xilinx_ams: ams@ffa50000 {
195            compatible = "xlnx,zynqmp-ams";
196            interrupt-parent = <&gic>;
197            interrupts = <0 56 4>;
198            reg = <0x0 0xffa50000 0x0 0x800>;
199            #address-cells = <1>;
200            #size-cells = <1>;
201            #io-channel-cells = <1>;
202            ranges = <0 0 0xffa50800 0x800>;
203
204            ams_ps: ams-ps@0 {
205                compatible = "xlnx,zynqmp-ams-ps";
206                reg = <0 0x400>;
207            };
208
209            ams_pl: ams-pl@400 {
210                compatible = "xlnx,zynqmp-ams-pl";
211                reg = <0x400 0x400>;
212                #address-cells = <1>;
213                #size-cells = <0>;
214                channel@30 {
215                    reg = <30>;
216                    xlnx,bipolar;
217                };
218                channel@31 {
219                    reg = <31>;
220                };
221                channel@38 {
222                    reg = <38>;
223                    xlnx,bipolar;
224                };
225            };
226        };
227    };
228