0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/iio/adc/xlnx,zynqmp-ams.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Xilinx Zynq Ultrascale AMS controller
0008
0009 maintainers:
0010 - Anand Ashok Dumbre <anand.ashok.dumbre@xilinx.com>
0011
0012 description: |
0013 The AMS (Analog Monitoring System) includes an ADC as well as on-chip sensors
0014 that can be used to sample external voltages and monitor on-die operating
0015 conditions, such as temperature and supply voltage levels.
0016 The AMS has two SYSMON blocks which are PL (Programmable Logic) SYSMON and
0017 PS (Processing System) SYSMON.
0018 All designs should have AMS registers, but PS and PL are optional. The
0019 AMS controller can work with only PS, only PL and both PS and PL
0020 configurations. Please specify registers according to your design. Devicetree
0021 should always have AMS module property. Providing PS & PL module is optional.
0022
0023 AMS Channel Details
0024 ```````````````````
0025 Sysmon Block |Channel| Details |Measurement
0026 |Number | |Type
0027 ---------------------------------------------------------------------------------------------------------
0028 AMS CTRL |0 |System PLLs voltage measurement, VCC_PSPLL. |Voltage
0029 |1 |Battery voltage measurement, VCC_PSBATT. |Voltage
0030 |2 |PL Internal voltage measurement, VCCINT. |Voltage
0031 |3 |Block RAM voltage measurement, VCCBRAM. |Voltage
0032 |4 |PL Aux voltage measurement, VCCAUX. |Voltage
0033 |5 |Voltage measurement for six DDR I/O PLLs, VCC_PSDDR_PLL. |Voltage
0034 |6 |VCC_PSINTFP_DDR voltage measurement. |Voltage
0035 ---------------------------------------------------------------------------------------------------------
0036 PS Sysmon |7 |LPD temperature measurement. |Temperature
0037 |8 |FPD temperature measurement (REMOTE). |Temperature
0038 |9 |VCC PS LPD voltage measurement (supply1). |Voltage
0039 |10 |VCC PS FPD voltage measurement (supply2). |Voltage
0040 |11 |PS Aux voltage reference (supply3). |Voltage
0041 |12 |DDR I/O VCC voltage measurement. |Voltage
0042 |13 |PS IO Bank 503 voltage measurement (supply5). |Voltage
0043 |14 |PS IO Bank 500 voltage measurement (supply6). |Voltage
0044 |15 |VCCO_PSIO1 voltage measurement. |Voltage
0045 |16 |VCCO_PSIO2 voltage measurement. |Voltage
0046 |17 |VCC_PS_GTR voltage measurement (VPS_MGTRAVCC). |Voltage
0047 |18 |VTT_PS_GTR voltage measurement (VPS_MGTRAVTT). |Voltage
0048 |19 |VCC_PSADC voltage measurement. |Voltage
0049 ---------------------------------------------------------------------------------------------------------
0050 PL Sysmon |20 |PL temperature measurement. |Temperature
0051 |21 |PL Internal voltage measurement, VCCINT. |Voltage
0052 |22 |PL Auxiliary voltage measurement, VCCAUX. |Voltage
0053 |23 |ADC Reference P+ voltage measurement. |Voltage
0054 |24 |ADC Reference N- voltage measurement. |Voltage
0055 |25 |PL Block RAM voltage measurement, VCCBRAM. |Voltage
0056 |26 |LPD Internal voltage measurement, VCC_PSINTLP (supply4). |Voltage
0057 |27 |FPD Internal voltage measurement, VCC_PSINTFP (supply5). |Voltage
0058 |28 |PS Auxiliary voltage measurement (supply6). |Voltage
0059 |29 |PL VCCADC voltage measurement (vccams). |Voltage
0060 |30 |Differential analog input signal voltage measurment. |Voltage
0061 |31 |VUser0 voltage measurement (supply7). |Voltage
0062 |32 |VUser1 voltage measurement (supply8). |Voltage
0063 |33 |VUser2 voltage measurement (supply9). |Voltage
0064 |34 |VUser3 voltage measurement (supply10). |Voltage
0065 |35 |Auxiliary ch 0 voltage measurement (VAux0). |Voltage
0066 |36 |Auxiliary ch 1 voltage measurement (VAux1). |Voltage
0067 |37 |Auxiliary ch 2 voltage measurement (VAux2). |Voltage
0068 |38 |Auxiliary ch 3 voltage measurement (VAux3). |Voltage
0069 |39 |Auxiliary ch 4 voltage measurement (VAux4). |Voltage
0070 |40 |Auxiliary ch 5 voltage measurement (VAux5). |Voltage
0071 |41 |Auxiliary ch 6 voltage measurement (VAux6). |Voltage
0072 |42 |Auxiliary ch 7 voltage measurement (VAux7). |Voltage
0073 |43 |Auxiliary ch 8 voltage measurement (VAux8). |Voltage
0074 |44 |Auxiliary ch 9 voltage measurement (VAux9). |Voltage
0075 |45 |Auxiliary ch 10 voltage measurement (VAux10). |Voltage
0076 |46 |Auxiliary ch 11 voltage measurement (VAux11). |Voltage
0077 |47 |Auxiliary ch 12 voltage measurement (VAux12). |Voltage
0078 |48 |Auxiliary ch 13 voltage measurement (VAux13). |Voltage
0079 |49 |Auxiliary ch 14 voltage measurement (VAux14). |Voltage
0080 |50 |Auxiliary ch 15 voltage measurement (VAux15). |Voltage
0081 --------------------------------------------------------------------------------------------------------
0082
0083 properties:
0084 compatible:
0085 enum:
0086 - xlnx,zynqmp-ams
0087
0088 interrupts:
0089 maxItems: 1
0090
0091 reg:
0092 description: AMS Controller register space
0093 maxItems: 1
0094
0095 clocks:
0096 items:
0097 - description: AMS reference clock
0098
0099 ranges:
0100 description:
0101 Maps the child address space for PS and/or PL.
0102 maxItems: 1
0103
0104 '#address-cells':
0105 const: 1
0106
0107 '#size-cells':
0108 const: 1
0109
0110 '#io-channel-cells':
0111 const: 1
0112
0113 ams-ps@0:
0114 type: object
0115 description: |
0116 PS (Processing System) SYSMON is memory mapped to PS. This block has
0117 built-in alarm generation logic that is used to interrupt the processor
0118 based on condition set.
0119
0120 properties:
0121 compatible:
0122 enum:
0123 - xlnx,zynqmp-ams-ps
0124
0125 reg:
0126 description: Register Space for PS-SYSMON
0127 maxItems: 1
0128
0129 required:
0130 - compatible
0131 - reg
0132
0133 additionalProperties: false
0134
0135 ams-pl@400:
0136 type: object
0137 description:
0138 PL-SYSMON is capable of monitoring off chip voltage and temperature.
0139 PL-SYSMON block has DRP, JTAG and I2C interface to enable monitoring
0140 from external master. Out of this interface currently only DRP is
0141 supported. This block has alarm generation logic that is used to
0142 interrupt the processor based on condition set.
0143
0144 properties:
0145 compatible:
0146 items:
0147 - enum:
0148 - xlnx,zynqmp-ams-pl
0149
0150 reg:
0151 description: Register Space for PL-SYSMON.
0152 maxItems: 1
0153
0154 '#address-cells':
0155 const: 1
0156
0157 '#size-cells':
0158 const: 0
0159
0160 patternProperties:
0161 "^channel@([2-4][0-9]|50)$":
0162 type: object
0163 description:
0164 Describes the external channels connected.
0165
0166 properties:
0167 reg:
0168 description:
0169 Pair of pins the channel is connected to. This value is
0170 same as Channel Number for a particular channel.
0171 minimum: 20
0172 maximum: 50
0173
0174 xlnx,bipolar:
0175 $ref: /schemas/types.yaml#/definitions/flag
0176 type: boolean
0177 description:
0178 If the set channel is used in bipolar mode.
0179
0180 required:
0181 - reg
0182
0183 additionalProperties: false
0184
0185 required:
0186 - compatible
0187 - reg
0188 - clocks
0189 - ranges
0190
0191 additionalProperties: false
0192
0193 examples:
0194 - |
0195 #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
0196
0197 bus {
0198 #address-cells = <2>;
0199 #size-cells = <2>;
0200
0201 xilinx_ams: ams@ffa50000 {
0202 compatible = "xlnx,zynqmp-ams";
0203 interrupt-parent = <&gic>;
0204 interrupts = <0 56 4>;
0205 reg = <0x0 0xffa50000 0x0 0x800>;
0206 clocks = <&zynqmp_clk AMS_REF>;
0207 #address-cells = <1>;
0208 #size-cells = <1>;
0209 #io-channel-cells = <1>;
0210 ranges = <0 0 0xffa50800 0x800>;
0211
0212 ams_ps: ams-ps@0 {
0213 compatible = "xlnx,zynqmp-ams-ps";
0214 reg = <0 0x400>;
0215 };
0216
0217 ams_pl: ams-pl@400 {
0218 compatible = "xlnx,zynqmp-ams-pl";
0219 reg = <0x400 0x400>;
0220 #address-cells = <1>;
0221 #size-cells = <0>;
0222 channel@30 {
0223 reg = <30>;
0224 xlnx,bipolar;
0225 };
0226 channel@31 {
0227 reg = <31>;
0228 };
0229 channel@38 {
0230 reg = <38>;
0231 xlnx,bipolar;
0232 };
0233 };
0234 };
0235 };