Based on kernel version 6.15
. Page generated on 2025-05-29 09:08 EST
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 | # SPDX-License-Identifier: GPL-2.0 %YAML 1.2 --- $id: http://devicetree.org/schemas/iio/adc/adi,ad7606.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Analog Devices AD7606 Simultaneous Sampling ADC maintainers: - Michael Hennerich <michael.hennerich@analog.com> description: | Analog Devices AD7606 Simultaneous Sampling ADC https://www.analog.com/media/en/technical-documentation/data-sheets/AD7605-4.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD7606B.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606c-16.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606c-18.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7607.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7608.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ad7609.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD7616.pdf properties: compatible: enum: - adi,ad7605-4 - adi,ad7606-4 - adi,ad7606-6 - adi,ad7606-8 # Referred to as AD7606 (without -8) in the datasheet - adi,ad7606b - adi,ad7606c-16 - adi,ad7606c-18 - adi,ad7607 - adi,ad7608 - adi,ad7609 - adi,ad7616 reg: maxItems: 1 "#address-cells": const: 1 "#size-cells": const: 0 # According to the datasheet, "Data is clocked in from SDI on the falling # edge of SCLK, while data is clocked out on DOUTA on the rising edge of # SCLK". Also, even if not stated textually in the datasheet, it is made # clear on the diagrams that sclk idles at high. Subsequently, in case SPI # interface is used, the correct way is to only set spi-cpol. spi-cpha: true spi-cpol: true avcc-supply: true vdrive-supply: description: Determines the voltage level at which the interface logic pins will operate. refin-supply: description: The voltage supply for optional external reference voltage. interrupts: description: The BUSY pin falling edge indicates that the conversion is over, and thus new data is available. maxItems: 1 adi,conversion-start-gpios: description: Must be the device tree identifier of the CONVST pin(s). This logic input is used to initiate conversions on the analog input channels. As the line is active high, it should be marked GPIO_ACTIVE_HIGH. minItems: 1 maxItems: 2 reset-gpios: description: Must be the device tree identifier of the RESET pin. If specified, it will be asserted during driver probe. On the AD7606x, as the line is active high, it should be marked GPIO_ACTIVE_HIGH. On the AD7616, as the line is active low, it should be marked GPIO_ACTIVE_LOW. maxItems: 1 standby-gpios: description: Must be the device tree identifier of the STBY pin. This pin is used to place the AD7606 into one of two power-down modes, Standby mode or Shutdown mode. As the line is active low, it should be marked GPIO_ACTIVE_LOW. maxItems: 1 adi,first-data-gpios: description: Must be the device tree identifier of the FRSTDATA pin. The FRSTDATA output indicates when the first channel, V1, is being read back on either the parallel, byte or serial interface. As the line is active high, it should be marked GPIO_ACTIVE_HIGH. maxItems: 1 adi,range-gpios: description: Must be the device tree identifier of the RANGE pin. The state on this pin determines the input range of the analog input channels. If this pin is tied to a logic high, the analog input range is ±10V for all channels. On the AD760X, if this pin is tied to a logic low, the analog input range is ±5V for all channels. As the line is active high, it should be marked GPIO_ACTIVE_HIGH. On the AD7616, there are 2 pins, and if the 2 pins are tied to a logic high, software mode is enabled, otherwise one of the 3 possible range values is selected. minItems: 1 maxItems: 2 adi,oversampling-ratio-gpios: description: Must be the device tree identifier of the over-sampling mode pins. As the line is active high, it should be marked GPIO_ACTIVE_HIGH. On the AD7606X parts that support it, if all 3 pins are tied to a logic high, software mode is enabled. maxItems: 3 adi,sw-mode: description: Software mode of operation, so far available only for AD7616 and AD7606B. It is enabled when all three oversampling mode pins are connected to high level for the AD7606B, or both the range selection are connected to high level for the AD7616. The device is configured by the corresponding registers. If the adi,oversampling-ratio-gpios property is defined, then the driver will set the oversampling gpios to high. Otherwise, it is assumed that the pins are hardwired to VDD. type: boolean pwms: description: In case the conversion is triggered by a PWM instead of a GPIO plugged to the CONVST pin, the PWM must be referenced. The first is the PWM connected to CONVST or CONVST1 for the chips with the 2nd PWM connected to CONVST2, if CONVST2 is available and not shorted to CONVST1. minItems: 1 maxItems: 2 pwm-names: minItems: 1 items: - const: convst1 - const: convst2 io-backends: description: A reference to the iio-backend, which is responsible handling the BUSY pin's falling edge and communication. An example of backend can be found at http://analogdevicesinc.github.io/hdl/library/axi_ad7606x/index.html patternProperties: "^channel@[1-8]$": type: object $ref: adc.yaml unevaluatedProperties: false properties: reg: description: The channel number, as specified in the datasheet (from 1 to 8). minimum: 1 maximum: 8 diff-channels: description: Each channel can be configured as a bipolar differential channel. The ADC uses the same positive and negative inputs for this. This property must be specified as 'reg' (or the channel number) for both positive and negative inputs (i.e. diff-channels = <reg reg>). Since the configuration is bipolar differential, the 'bipolar' property is required. items: minimum: 1 maximum: 8 bipolar: description: The ADC channels can be configured as * Bipolar single-ended * Unipolar single-ended * Bipolar differential Therefore in the DT, if no channel node is specified, it is considered 'unipolar single-ended'. So for the other configurations the 'bipolar' property must be specified. If 'diff-channels' is specified, it is considered a bipolar differential channel. Otherwise it is bipolar single-ended. required: - reg - bipolar required: - compatible - reg - avcc-supply - vdrive-supply allOf: - $ref: /schemas/spi/spi-peripheral-props.yaml# - oneOf: - required: - adi,conversion-start-gpios - required: - pwms - oneOf: - required: - interrupts - required: - io-backends - if: properties: compatible: contains: const: adi,ad7616 then: properties: adi,first-data-gpios: false standby-gpios: false adi,range-gpios: maxItems: 2 else: properties: adi,range-gpios: maxItems: 1 - if: properties: compatible: contains: enum: - adi,ad7605-4 - adi,ad7616 then: properties: adi,oversampling-ratio-gpios: false - if: properties: compatible: contains: enum: - adi,ad7605-4 - adi,ad7606-4 - adi,ad7606-6 - adi,ad7606-8 - adi,ad7607 - adi,ad7608 - adi,ad7609 then: properties: adi,sw-mode: false else: properties: pwms: maxItems: 1 pwm-names: maxItems: 1 adi,conversion-start-gpios: maxItems: 1 - if: not: required: - adi,sw-mode then: patternProperties: "^channel@[1-8]$": false - if: not: properties: compatible: enum: - adi,ad7606c-16 - adi,ad7606c-18 then: patternProperties: "^channel@[1-8]$": false unevaluatedProperties: false examples: - | #include <dt-bindings/gpio/gpio.h> iio-backend { #address-cells = <1>; #size-cells = <0>; adi_adc@0 { compatible = "adi,ad7606b"; reg = <0>; pwms = <&axi_pwm_gen 0 0>; avcc-supply = <&adc_vref>; vdrive-supply = <&vdd_supply>; reset-gpios = <&gpio0 91 GPIO_ACTIVE_HIGH>; standby-gpios = <&gpio0 90 GPIO_ACTIVE_LOW>; adi,range-gpios = <&gpio0 89 GPIO_ACTIVE_HIGH>; adi,oversampling-ratio-gpios = <&gpio0 88 GPIO_ACTIVE_HIGH &gpio0 87 GPIO_ACTIVE_HIGH &gpio0 86 GPIO_ACTIVE_HIGH>; io-backends = <&iio_backend>; }; }; - | #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> spi { #address-cells = <1>; #size-cells = <0>; adc@0 { compatible = "adi,ad7606-8"; reg = <0>; spi-max-frequency = <1000000>; spi-cpol; avcc-supply = <&adc_vref>; vdrive-supply = <&vdd_supply>; interrupts = <25 IRQ_TYPE_EDGE_FALLING>; interrupt-parent = <&gpio>; adi,conversion-start-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>; adi,first-data-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; adi,oversampling-ratio-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>, <&gpio 23 GPIO_ACTIVE_HIGH>, <&gpio 26 GPIO_ACTIVE_HIGH>; standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>; }; }; - | #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/interrupt-controller/irq.h> spi { #address-cells = <1>; #size-cells = <0>; adc@0 { compatible = "adi,ad7606c-18"; reg = <0>; #address-cells = <1>; #size-cells = <0>; spi-max-frequency = <1000000>; spi-cpol; avcc-supply = <&adc_vref>; vdrive-supply = <&vdd_supply>; interrupts = <25 IRQ_TYPE_EDGE_FALLING>; interrupt-parent = <&gpio>; adi,conversion-start-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>; adi,first-data-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>; adi,sw-mode; channel@1 { reg = <1>; diff-channels = <1 1>; bipolar; }; channel@3 { reg = <3>; bipolar; }; channel@8 { reg = <8>; diff-channels = <8 8>; bipolar; }; }; }; ... |