Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

dt-bindings: iio: adc: Add AD4170-4

Add device tree documentation for AD4170-4 and similar sigma-delta ADCs.
The AD4170-4 is a 24-bit, multichannel, sigma-delta ADC.

Acked-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Marcelo Schmitt <marcelo.schmitt@analog.com>
Link: https://patch.msgid.link/aa4b3be541c7b759560f8e0c5340a456cb2f3801.1751895245.git.marcelo.schmitt@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Marcelo Schmitt and committed by
Jonathan Cameron
1b3cee41 7586eb9b

+561
+554
Documentation/devicetree/bindings/iio/adc/adi,ad4170-4.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/adi,ad4170-4.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Analog Devices AD4170-4 and similar Analog to Digital Converters 8 + 9 + maintainers: 10 + - Marcelo Schmitt <marcelo.schmitt@analog.com> 11 + 12 + description: | 13 + Analog Devices AD4170-4 series of Sigma-delta Analog to Digital Converters. 14 + Specifications can be found at: 15 + https://www.analog.com/media/en/technical-documentation/data-sheets/ad4170-4.pdf 16 + https://www.analog.com/media/en/technical-documentation/data-sheets/ad4190-4.pdf 17 + https://www.analog.com/media/en/technical-documentation/data-sheets/ad4195-4.pdf 18 + 19 + $ref: /schemas/spi/spi-peripheral-props.yaml# 20 + 21 + $defs: 22 + reference-buffer: 23 + description: | 24 + Enable precharge buffer, full buffer, or skip reference buffering of 25 + the positive/negative voltage reference. Because the output impedance 26 + of the source driving the voltage reference inputs may be dynamic, 27 + resistive/capacitive combinations of those inputs can cause DC gain 28 + errors if the reference inputs go unbuffered into the ADC. Enable 29 + reference buffering if the provided reference source has dynamic high 30 + impedance output. Note the absolute voltage allowed on REFINn+ and REFINn- 31 + inputs is from AVSS - 50 mV to AVDD + 50 mV when the reference buffers are 32 + disabled but narrows to AVSS to AVDD when reference buffering is enabled 33 + or in precharge mode. 34 + $ref: /schemas/types.yaml#/definitions/string 35 + enum: [ precharge, full, disabled ] 36 + default: full 37 + 38 + properties: 39 + compatible: 40 + enum: 41 + - adi,ad4170-4 42 + - adi,ad4190-4 43 + - adi,ad4195-4 44 + 45 + avss-supply: 46 + description: 47 + Reference voltage supply for AVSS. A −2.625V minimum and 0V maximum supply 48 + that powers the chip. If not provided, AVSS is assumed to be at system 49 + ground (0V). 50 + 51 + avdd-supply: 52 + description: 53 + A supply of 4.75V to 5.25V relative to AVSS that powers the chip (AVDD). 54 + 55 + iovdd-supply: 56 + description: 1.7V to 5.25V reference supply to the serial interface (IOVDD). 57 + 58 + refin1p-supply: 59 + description: REFIN+ supply that can be used as reference for conversion. 60 + 61 + refin1n-supply: 62 + description: REFIN- supply that can be used as reference for conversion. 63 + 64 + refin2p-supply: 65 + description: REFIN2+ supply that can be used as reference for conversion. 66 + 67 + refin2n-supply: 68 + description: REFIN2- supply that can be used as reference for conversion. 69 + 70 + spi-cpol: true 71 + 72 + spi-cpha: true 73 + 74 + interrupts: 75 + description: 76 + Interrupt for signaling the completion of conversion results. The data 77 + ready signal (RDY) used as interrupt is by default provided on the SDO 78 + pin. Alternatively, it can be provided on the DIG_AUX1 pin in which case 79 + the chip disables the RDY function on SDO. Thus, there can be only one 80 + data ready interrupt enabled at a time. 81 + 82 + interrupt-names: 83 + description: 84 + Specify which pin should be configured as Data Ready interrupt. 85 + enum: 86 + - sdo 87 + - dig_aux1 88 + 89 + clocks: 90 + maxItems: 1 91 + description: 92 + Optional external clock source. Can specify either an external clock or 93 + external crystal. 94 + 95 + clock-names: 96 + enum: 97 + - ext-clk 98 + - xtal 99 + default: ext-clk 100 + 101 + '#clock-cells': 102 + const: 0 103 + 104 + clock-output-names: 105 + maxItems: 1 106 + 107 + gpio-controller: true 108 + 109 + "#gpio-cells": 110 + const: 2 111 + description: | 112 + The first cell is for the GPIO number: 0 to 3. 113 + The second cell takes standard GPIO flags. 114 + 115 + ldac-gpios: 116 + description: 117 + GPIO connected to DIG_AUX2 pin to be used as LDAC toggle to control the 118 + transfer of data from the DAC_INPUT_A register to the DAC. 119 + maxItems: 1 120 + 121 + '#address-cells': 122 + const: 1 123 + 124 + '#size-cells': 125 + const: 0 126 + 127 + adi,vbias-pins: 128 + description: Analog inputs to apply a voltage bias of (AVDD − AVSS) / 2 to. 129 + $ref: /schemas/types.yaml#/definitions/uint32-array 130 + minItems: 1 131 + maxItems: 9 132 + items: 133 + minimum: 0 134 + maximum: 8 135 + 136 + allOf: 137 + # Some devices don't have integrated DAC 138 + - if: 139 + properties: 140 + compatible: 141 + contains: 142 + enum: 143 + - adi,ad4190-4 144 + - adi,ad4195-4 145 + then: 146 + properties: 147 + ldac-gpios: false 148 + 149 + # Require to specify the interrupt pin when using interrupts 150 + - if: 151 + required: 152 + - interrupts 153 + then: 154 + required: 155 + - interrupt-names 156 + 157 + # If an external clock is set, the internal clock cannot go out and vice versa 158 + - oneOf: 159 + - required: [clocks] 160 + properties: 161 + '#clock-cells': false 162 + - required: ['#clock-cells'] 163 + properties: 164 + clocks: false 165 + 166 + required: 167 + - compatible 168 + - reg 169 + - avdd-supply 170 + - iovdd-supply 171 + - spi-cpol 172 + - spi-cpha 173 + 174 + unevaluatedProperties: false 175 + 176 + patternProperties: 177 + "^channel@[0-9a-f]$": 178 + $ref: /schemas/iio/adc/adc.yaml# 179 + unevaluatedProperties: false 180 + description: 181 + Represents the external channels which are connected to the ADC. 182 + 183 + properties: 184 + reg: 185 + description: 186 + The channel number. 187 + minimum: 0 188 + maximum: 15 189 + 190 + diff-channels: 191 + description: | 192 + This property is used for defining the inputs of a differential 193 + voltage channel. The first value is the positive input and the second 194 + value is the negative input of the channel. 195 + 196 + Besides the analog input pins AIN0 to AIN8, there are special inputs 197 + that can be selected with the following values: 198 + 17: Internal temperature sensor 199 + 18: (AVDD-AVSS)/5 200 + 19: (IOVDD-DGND)/5 201 + 20: DAC output 202 + 21: ALDO 203 + 22: DLDO 204 + 23: AVSS 205 + 24: DGND 206 + 25: REFIN+ 207 + 26: REFIN- 208 + 27: REFIN2+ 209 + 28: REFIN2- 210 + 29: REFOUT 211 + For the internal temperature sensor, use the input number for both 212 + inputs (i.e. diff-channels = <17 17>). 213 + items: 214 + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25, 215 + 26, 27, 28, 29] 216 + 217 + adi,reference-select: 218 + description: | 219 + Select the reference source to use when converting on the 220 + specific channel. Valid values are: 221 + 0: REFIN+/REFIN- 222 + 1: REFIN2+/REFIN2− 223 + 2: REFOUT/AVSS (internal reference) 224 + 3: AVDD/AVSS 225 + If not specified, REFOUT/AVSS is used. 226 + $ref: /schemas/types.yaml#/definitions/uint32 227 + enum: [0, 1, 2, 3] 228 + default: 1 229 + 230 + adi,positive-reference-buffer: 231 + $ref: '#/$defs/reference-buffer' 232 + 233 + adi,negative-reference-buffer: 234 + $ref: '#/$defs/reference-buffer' 235 + 236 + adi,sensor-type: 237 + description: 238 + The AD4170-4 and similar designs have features to aid interfacing with 239 + load cell weigh scale, RTD, and thermocouple sensors. Each of those 240 + sensor types requires either distinct wiring configuration or 241 + external circuitry for proper sensor operation and can use different 242 + ADC chip functionality on their setups. A key characteristic of those 243 + external sensors is that they must be excited either by voltage supply 244 + or by ADC chip excitation signals. The sensor can then be read through 245 + a pair of analog inputs. This property specifies which particular 246 + sensor type is connected to the ADC so it can be properly setup and 247 + handled. Omit this property for conventional (not weigh scale, RTD, or 248 + thermocouple) ADC channel setups. 249 + $ref: /schemas/types.yaml#/definitions/string 250 + enum: [ weighscale, rtd, thermocouple ] 251 + 252 + adi,excitation-pin-0: 253 + description: 254 + Analog input to apply excitation current to while the channel 255 + is active. 256 + $ref: /schemas/types.yaml#/definitions/uint32 257 + minimum: 0 258 + maximum: 20 259 + default: 0 260 + 261 + adi,excitation-pin-1: 262 + description: 263 + Analog input to apply excitation current to while the channel 264 + is active. 265 + $ref: /schemas/types.yaml#/definitions/uint32 266 + minimum: 0 267 + maximum: 20 268 + default: 0 269 + 270 + adi,excitation-pin-2: 271 + description: 272 + Analog input to apply excitation current to while the channel 273 + is active. 274 + $ref: /schemas/types.yaml#/definitions/uint32 275 + minimum: 0 276 + maximum: 20 277 + default: 0 278 + 279 + adi,excitation-pin-3: 280 + description: 281 + Analog input to apply excitation current to while the channel 282 + is active. 283 + $ref: /schemas/types.yaml#/definitions/uint32 284 + minimum: 0 285 + maximum: 20 286 + default: 0 287 + 288 + adi,excitation-current-0-microamp: 289 + description: 290 + Excitation current in microamperes to be applied to pin specified in 291 + adi,excitation-pin-0 while this channel is active. 292 + enum: [0, 10, 50, 100, 250, 500, 1000, 1500] 293 + default: 0 294 + 295 + adi,excitation-current-1-microamp: 296 + description: 297 + Excitation current in microamperes to be applied to pin specified in 298 + adi,excitation-pin-1 while this channel is active. 299 + enum: [0, 10, 50, 100, 250, 500, 1000, 1500] 300 + default: 0 301 + 302 + adi,excitation-current-2-microamp: 303 + description: 304 + Excitation current in microamperes to be applied to pin specified in 305 + adi,excitation-pin-2 while this channel is active. 306 + enum: [0, 10, 50, 100, 250, 500, 1000, 1500] 307 + default: 0 308 + 309 + adi,excitation-current-3-microamp: 310 + description: 311 + Excitation current in microamperes to be applied to pin specified in 312 + adi,excitation-pin-3 while this channel is active. 313 + enum: [0, 10, 50, 100, 250, 500, 1000, 1500] 314 + default: 0 315 + 316 + adi,excitation-ac: 317 + type: boolean 318 + description: 319 + Whether the external sensor has to be AC or DC excited. When omitted, 320 + it is DC excited. 321 + 322 + allOf: 323 + - oneOf: 324 + - required: [single-channel, common-mode-channel] 325 + properties: 326 + diff-channels: false 327 + - required: [diff-channels] 328 + properties: 329 + single-channel: false 330 + common-mode-channel: false 331 + # Usual ADC channels don't need external circuitry excitation. 332 + - if: 333 + not: 334 + required: 335 + - adi,sensor-type 336 + then: 337 + properties: 338 + adi,excitation-pin-0: false 339 + adi,excitation-pin-1: false 340 + adi,excitation-pin-2: false 341 + adi,excitation-pin-3: false 342 + adi,excitation-current-0-microamp: false 343 + adi,excitation-current-1-microamp: false 344 + adi,excitation-current-2-microamp: false 345 + adi,excitation-current-3-microamp: false 346 + adi,excitation-ac: false 347 + # Weigh scale bridge AC excited with one pair of predefined signals. 348 + - if: 349 + allOf: 350 + - properties: 351 + adi,sensor-type: 352 + contains: 353 + const: weighscale 354 + - required: 355 + - adi,excitation-ac 356 + - adi,excitation-pin-2 357 + - adi,excitation-pin-3 358 + - not: 359 + required: 360 + - adi,excitation-current-2-microamp 361 + - adi,excitation-current-3-microamp 362 + then: 363 + properties: 364 + adi,excitation-pin-2: 365 + const: 19 366 + adi,excitation-pin-3: 367 + const: 20 368 + # Weigh scale bridge AC excited with two pairs of predefined signals. 369 + - if: 370 + allOf: 371 + - properties: 372 + adi,sensor-type: 373 + contains: 374 + const: weighscale 375 + - required: 376 + - adi,excitation-ac 377 + - adi,excitation-pin-0 378 + - adi,excitation-pin-1 379 + - adi,excitation-pin-2 380 + - adi,excitation-pin-3 381 + - not: 382 + required: 383 + - adi,excitation-current-0-microamp 384 + - adi,excitation-current-1-microamp 385 + - adi,excitation-current-2-microamp 386 + - adi,excitation-current-3-microamp 387 + then: 388 + properties: 389 + adi,excitation-pin-0: 390 + const: 17 391 + adi,excitation-pin-1: 392 + const: 18 393 + adi,excitation-pin-2: 394 + const: 19 395 + adi,excitation-pin-3: 396 + const: 20 397 + 398 + examples: 399 + - | 400 + #include <dt-bindings/interrupt-controller/irq.h> 401 + spi { 402 + #address-cells = <1>; 403 + #size-cells = <0>; 404 + 405 + adc@0 { 406 + compatible = "adi,ad4170-4"; 407 + reg = <0>; 408 + spi-max-frequency = <20000000>; 409 + spi-cpol; 410 + spi-cpha; 411 + avdd-supply = <&avdd>; 412 + iovdd-supply = <&iovdd>; 413 + clocks = <&clk>; 414 + clock-names = "xtal"; 415 + interrupts = <0 IRQ_TYPE_EDGE_FALLING>; 416 + interrupt-names = "dig_aux1"; 417 + adi,vbias-pins = <8>; 418 + #address-cells = <1>; 419 + #size-cells = <0>; 420 + 421 + // Sample AIN0 with respect to DGND throughout AVDD/DGND input range 422 + // Pseudo-differential unipolar 423 + channel@0 { 424 + reg = <0>; 425 + single-channel = <0>; 426 + common-mode-channel = <24>; 427 + adi,reference-select = <3>; 428 + }; 429 + // Weigh scale sensor 430 + channel@1 { 431 + reg = <1>; 432 + bipolar; 433 + diff-channels = <1 2>; 434 + adi,reference-select = <0>; 435 + adi,positive-reference-buffer = "precharge"; 436 + adi,negative-reference-buffer = "precharge"; 437 + adi,sensor-type = "weighscale"; 438 + adi,excitation-pin-2 = <19>; 439 + adi,excitation-pin-3 = <20>; 440 + adi,excitation-ac; 441 + }; 442 + // RTD sensor 443 + channel@2 { 444 + reg = <2>; 445 + bipolar; 446 + diff-channels = <3 4>; 447 + adi,reference-select = <0>; 448 + adi,sensor-type = "rtd"; 449 + adi,excitation-pin-0 = <5>; 450 + adi,excitation-pin-1 = <6>; 451 + adi,excitation-current-0-microamp = <500>; 452 + adi,excitation-current-1-microamp = <500>; 453 + adi,excitation-ac; 454 + }; 455 + // Thermocouple sensor 456 + channel@3 { 457 + reg = <3>; 458 + bipolar; 459 + diff-channels = <7 8>; 460 + adi,reference-select = <0>; 461 + adi,sensor-type = "thermocouple"; 462 + adi,excitation-pin-0 = <18>; 463 + adi,excitation-current-0-microamp = <500>; 464 + }; 465 + }; 466 + }; 467 + - | 468 + #include <dt-bindings/interrupt-controller/irq.h> 469 + spi { 470 + #address-cells = <1>; 471 + #size-cells = <0>; 472 + 473 + adc@0 { 474 + compatible = "adi,ad4170-4"; 475 + reg = <0>; 476 + spi-max-frequency = <20000000>; 477 + spi-cpol; 478 + spi-cpha; 479 + avdd-supply = <&avdd>; 480 + iovdd-supply = <&iovdd>; 481 + #clock-cells = <0>; 482 + clock-output-names = "ad4170-clk16mhz"; 483 + interrupts = <0 IRQ_TYPE_EDGE_FALLING>; 484 + interrupt-names = "dig_aux1"; 485 + #address-cells = <1>; 486 + #size-cells = <0>; 487 + 488 + // Sample AIN0 with respect to AIN1 throughout AVDD/AVSS input range 489 + // Differential bipolar. If AVSS < 0V, differential true bipolar 490 + channel@0 { 491 + reg = <0>; 492 + bipolar; 493 + diff-channels = <0 1>; 494 + adi,reference-select = <3>; 495 + }; 496 + // Sample AIN2 with respect to DGND throughout AVDD/DGND input range 497 + // Pseudo-differential unipolar 498 + channel@1 { 499 + reg = <1>; 500 + single-channel = <2>; 501 + common-mode-channel = <24>; 502 + adi,reference-select = <3>; 503 + }; 504 + // Sample AIN3 with respect to 2.5V throughout AVDD/AVSS input range 505 + // Pseudo-differential bipolar 506 + channel@2 { 507 + reg = <2>; 508 + bipolar; 509 + single-channel = <3>; 510 + common-mode-channel = <29>; 511 + adi,reference-select = <3>; 512 + }; 513 + // Sample AIN4 with respect to DGND throughout AVDD/AVSS input range 514 + // Pseudo-differential bipolar 515 + channel@3 { 516 + reg = <3>; 517 + bipolar; 518 + single-channel = <4>; 519 + common-mode-channel = <24>; 520 + adi,reference-select = <3>; 521 + }; 522 + // Sample AIN5 with respect to 2.5V throughout AVDD/AVSS input range 523 + // Pseudo-differential unipolar (AD4170-4 datasheet page 46 example) 524 + channel@4 { 525 + reg = <4>; 526 + single-channel = <5>; 527 + common-mode-channel = <29>; 528 + adi,reference-select = <3>; 529 + }; 530 + // Sample AIN6 with respect to 2.5V throughout REFIN+/REFIN- input range 531 + // Pseudo-differential bipolar 532 + channel@5 { 533 + reg = <5>; 534 + bipolar; 535 + single-channel = <6>; 536 + common-mode-channel = <29>; 537 + adi,reference-select = <0>; 538 + }; 539 + // Weigh scale sensor 540 + channel@6 { 541 + reg = <6>; 542 + bipolar; 543 + diff-channels = <7 8>; 544 + adi,reference-select = <0>; 545 + adi,sensor-type = "weighscale"; 546 + adi,excitation-pin-0 = <17>; 547 + adi,excitation-pin-1 = <18>; 548 + adi,excitation-pin-2 = <19>; 549 + adi,excitation-pin-3 = <20>; 550 + adi,excitation-ac; 551 + }; 552 + }; 553 + }; 554 + ...
+7
MAINTAINERS
··· 1392 1392 F: Documentation/devicetree/bindings/iio/adc/adi,ad4130.yaml 1393 1393 F: drivers/iio/adc/ad4130.c 1394 1394 1395 + ANALOG DEVICES INC AD4170-4 DRIVER 1396 + M: Marcelo Schmitt <marcelo.schmitt@analog.com> 1397 + L: linux-iio@vger.kernel.org 1398 + S: Supported 1399 + W: https://ez.analog.com/linux-software-drivers 1400 + F: Documentation/devicetree/bindings/iio/adc/adi,ad4170-4.yaml 1401 + 1395 1402 ANALOG DEVICES INC AD4695 DRIVER 1396 1403 M: Michael Hennerich <michael.hennerich@analog.com> 1397 1404 M: Nuno Sá <nuno.sa@analog.com>