Tom Rini | 53633a8 | 2024-02-29 12:33:36 -0500 | [diff] [blame] | 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 measurement. |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 | }; |