-
Notifications
You must be signed in to change notification settings - Fork 962
AD7768 upstream #3146
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jansunil
wants to merge
14
commits into
mirror_ci/jic23/iio/testing
Choose a base branch
from
ad7768-upstream
base: mirror_ci/jic23/iio/testing
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
AD7768 upstream #3146
Changes from all commits
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
235133e
dt-bindings: iio: adc: Add AD7768
jansunil 38b04a6
iio: backend: Add support for CRC
jansunil cf27692
iio: adc: adi-axi-adc: Initialize state mutex
jansunil 5b2029c
iio: adc: adi-axi-adc: Add support for CRC
jansunil dfd2831
iio: adc: Add AD7768 and AD7768-4 core support
jansunil f9146d6
iio: adc: ad7768: Add configurable sampling modes
jansunil e965178
iio: adc: ad7768: Add calibration controls
jansunil 02e406d
iio: adc: ad7768: Add per-channel conversion delay
jansunil 3eda0dd
iio: adc: ad7768: Add VCM regulator support
jansunil 2da7bcf
iio: adc: ad7768: Register GPIO auxiliary device
jansunil 44d7d3a
gpio: regmap: Use regmap_test_bits() for single bit reads
jansunil ff3adf9
gpio: regmap: Add optional runtime PM support
jansunil 84bccb8
gpio: ad7768: Add AD7768 GPIO auxiliary driver
jansunil ef7c8f9
Documentation: iio: Add AD7768 Documentation
jansunil File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
338 changes: 338 additions & 0 deletions
338
Documentation/devicetree/bindings/iio/adc/adi,ad7768.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,338 @@ | ||
| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
| %YAML 1.2 | ||
| --- | ||
| $id: http://devicetree.org/schemas/iio/adc/adi,ad7768.yaml# | ||
| $schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
|
||
| title: Analog Devices AD7768 and AD7768-4 ADC | ||
|
|
||
| maintainers: | ||
| - Janani Sunil <janani.sunil@analog.com> | ||
|
|
||
| description: | | ||
| The AD7768 is an 8-channel, 24-bit simultaneous sampling ADC with configurable | ||
| power and performance modes. The AD7768-4 is a 4-channel version. | ||
|
|
||
| This binding covers SPI mode only (register access via SPI). Pin control mode, | ||
| where configuration is set via hardware pins rather than SPI registers, is not | ||
| supported. | ||
|
|
||
| The io-backend represents the high-speed data output interface, consuming the | ||
| DOUTx data lines, DCLK (data clock), and DRDY (data ready) signals. | ||
|
|
||
| Datasheet at: | ||
| https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768.pdf | ||
|
|
||
| HDL reference design: | ||
| https://github.com/analogdevicesinc/hdl/tree/main/projects/ad7768evb | ||
|
|
||
| properties: | ||
| compatible: | ||
| enum: | ||
| - adi,ad7768 | ||
| - adi,ad7768-4 | ||
|
|
||
| reg: | ||
| maxItems: 1 | ||
|
|
||
| clocks: | ||
| maxItems: 1 | ||
| description: | ||
| Master clock (MCLK). Can be supplied as a CMOS clock on the XTAL2/MCLK | ||
| pin, a crystal oscillator connected between the XTAL1 and XTAL2 pins, or | ||
| an LVDS differential clock on the XTAL1/XTAL2 pin pair. The clock source | ||
| is selected by the CLK_SEL hardware pin. | ||
|
|
||
| avdd1-supply: | ||
| description: | ||
| Analog supply voltage for the AVDD1A and AVDD1B pins (5V ± 10% with | ||
| respect to AVSS). Powers the analog front end, reference input, and | ||
| common-mode output circuitry. Both pins must be tied to the same | ||
| potential. | ||
|
|
||
| avss-supply: | ||
| description: | ||
| Negative analog supply rail for the AVSS1A, AVSS1B, AVSS2A, AVSS2B, | ||
| and AVSS pins. This rail is referenced to DGND and all AVSS pins must | ||
| be tied to the same potential. In single-supply operation AVSS is | ||
| nominally 0V; in split-supply operation it can range from 0V to | ||
| -2.75V with respect to DGND. | ||
|
|
||
| avdd2-supply: | ||
| description: | ||
| Analog supply voltage for the AVDD2A and AVDD2B pins (2V to 5.5V with | ||
| respect to AVSS). Connects to internal 1.8V analog LDO regulators that | ||
| power the ADC core. Both pins must be tied to the same potential. | ||
|
|
||
| iovdd-supply: | ||
| description: | ||
| Digital supply voltage IOVDD (2.25V to 3.6V with respect to DGND). | ||
| Sets the logic levels for all interface pins and powers the digital | ||
| processing core via an internal LDO. For 1.8V operation (1.72V to | ||
| 1.88V), IOVDD must be tied to the DREGCAP pin. | ||
|
|
||
| ref1-supply: | ||
| description: | ||
| Differential reference voltage supply for the REF1+/REF1- input pair. | ||
| REF1+ voltage range is from (AVSS + 1V) to AVDD1; REF1- voltage range | ||
| is from AVSS to (AVDD1 - 1V). The differential reference voltage range | ||
| is 1V to |AVDD1 - AVSS|. On the AD7768 this reference is used for | ||
| channels 0 to 3; on the AD7768-4 for channels 0 and 1. | ||
|
|
||
| ref2-supply: | ||
| description: | ||
| Differential reference voltage supply for the REF2+/REF2- input pair. | ||
| REF2+ voltage range is from (AVSS + 1V) to AVDD1; REF2- voltage range | ||
| is from AVSS to (AVDD1 - 1V). The differential reference voltage range | ||
| is 1V to |AVDD1 - AVSS|. On the AD7768 this reference is used for | ||
| channels 4 to 7; on the AD7768-4 for channels 2 and 3. | ||
|
|
||
| reset-gpios: | ||
| maxItems: 1 | ||
| description: GPIO connected to the active-low RESET pin | ||
|
|
||
| start-gpios: | ||
| maxItems: 1 | ||
| description: | ||
| GPIO connected to the START pin. An active-low pulse on this pin | ||
| synchronizes the device to other AD7768 devices. When not used, this | ||
| pin must be tied to a logic high level through a pull-up resistor. | ||
| When used, SYNC_OUT must be wired back to SYNC_IN on all devices in | ||
| the synchronization chain. | ||
|
|
||
| sync-in-gpios: | ||
| maxItems: 1 | ||
| description: | ||
| GPIO connected to the SYNC_IN pin. Receives the synchronization pulse | ||
| generated on SYNC_OUT in response to a START pulse. Must be synchronous | ||
| to the MCLK clock domain. In multi-device or daisy-chained systems, | ||
| two successive synchronization pulses must be applied to guarantee all | ||
| ADCs are synchronized. | ||
|
|
||
| sync-out-gpios: | ||
| maxItems: 1 | ||
| description: | ||
| GPIO connected to the SYNC_OUT pin. Outputs a synchronization pulse | ||
| synchronous to MCLK in response to a START pulse or SPI_SYNC command. | ||
| In single-device configurations this pin must be wired back to SYNC_IN. | ||
| In multi-device configurations it can be routed to the SYNC_IN pins of | ||
| all devices in the chain. | ||
|
|
||
| gpio-controller: true | ||
|
|
||
| '#gpio-cells': | ||
| const: 2 | ||
|
|
||
| adi,data-lines-number: | ||
| $ref: /schemas/types.yaml#/definitions/uint32 | ||
| enum: [1, 2, 4, 8] | ||
| description: | ||
| Number of DOUTx lines used for the high-speed data output interface | ||
| (distinct from the SPI control interface). AD7768 supports 1, 2, or 8 | ||
| lines; AD7768-4 supports 1 or 4 lines. Defaults to the maximum number | ||
| of lines for the selected variant if omitted. | ||
|
|
||
| regulators: | ||
| type: object | ||
| description: Container for the on-chip VCM regulator. | ||
| additionalProperties: false | ||
|
|
||
| properties: | ||
| vcm-output: | ||
| type: object | ||
| description: | ||
| The VCM pin provides a buffered common-mode voltage output used to | ||
| bias the analog inputs. It supports three fixed output levels of | ||
| 1650000 uV, 2500000 uV, and 2140000 uV, as well as a | ||
| supply-dependent (AVDD1 - AVSS) / 2 output derived from | ||
| avdd1-supply. Select the voltage by setting regulator-min-microvolt | ||
| and regulator-max-microvolt to the same value. Use | ||
| regulator-always-on when no DT consumer node references the VCM | ||
| output. The VCM circuitry is associated with channel 0. When VCM is | ||
| used externally, channel@0 must be present and kept enabled because | ||
| placing channel 0 in standby disables the VCM output. | ||
| $ref: /schemas/regulator/regulator.yaml# | ||
| unevaluatedProperties: false | ||
|
|
||
| io-backends: | ||
| maxItems: 1 | ||
|
|
||
| '#address-cells': | ||
| const: 1 | ||
|
|
||
| '#size-cells': | ||
| const: 0 | ||
|
|
||
| patternProperties: | ||
| "^channel@[0-7]$": | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hi @ahmetalincak I have not seen any other driver take up an explicit property for enable/status per-channel |
||
| type: object | ||
| description: | | ||
| Represents the external channels which are connected to the device. | ||
| AD7768 supports channels 0-7, AD7768-4 supports channels 0-3. | ||
|
|
||
| properties: | ||
| reg: | ||
| minimum: 0 | ||
| maximum: 7 | ||
| description: The channel number | ||
|
|
||
| adi,prechargebuf-pos-enable: | ||
| type: boolean | ||
| description: Enable positive input precharge buffer | ||
|
|
||
| adi,prechargebuf-neg-enable: | ||
| type: boolean | ||
| description: Enable negative input precharge buffer | ||
|
|
||
| adi,refbuf-pos-enable: | ||
| type: boolean | ||
| description: Enable positive reference buffer | ||
|
|
||
| adi,refbuf-neg-enable: | ||
| type: boolean | ||
| description: Enable negative reference buffer | ||
|
|
||
| required: | ||
| - reg | ||
|
|
||
| additionalProperties: false | ||
|
|
||
| required: | ||
| - compatible | ||
| - reg | ||
| - clocks | ||
| - avdd1-supply | ||
| - avss-supply | ||
| - avdd2-supply | ||
| - iovdd-supply | ||
| - ref1-supply | ||
| - ref2-supply | ||
| - io-backends | ||
|
|
||
| allOf: | ||
| - $ref: /schemas/spi/spi-peripheral-props.yaml# | ||
| - if: | ||
| properties: | ||
| compatible: | ||
| contains: | ||
| const: adi,ad7768-4 | ||
| then: | ||
| properties: | ||
| adi,data-lines-number: | ||
| enum: [1, 4] | ||
| patternProperties: | ||
| "^channel@[0-3]$": | ||
| properties: | ||
| reg: | ||
| maximum: 3 | ||
| "^channel@[4-7]$": false | ||
| else: | ||
| properties: | ||
| adi,data-lines-number: | ||
| enum: [1, 2, 8] | ||
|
|
||
| unevaluatedProperties: false | ||
|
|
||
| examples: | ||
| - | | ||
| #include <dt-bindings/gpio/gpio.h> | ||
|
|
||
| spi { | ||
| #address-cells = <1>; | ||
| #size-cells = <0>; | ||
|
|
||
| adc@0 { | ||
| compatible = "adi,ad7768"; | ||
| reg = <0>; | ||
| spi-max-frequency = <1000000>; | ||
|
|
||
| avdd1-supply = <&avdd1_regulator>; | ||
| avss-supply = <&avss_regulator>; | ||
| avdd2-supply = <&avdd2_regulator>; | ||
| iovdd-supply = <&iovdd_regulator>; | ||
| ref1-supply = <&ref1_regulator>; | ||
| ref2-supply = <&ref2_regulator>; | ||
| reset-gpios = <&gpio0 86 GPIO_ACTIVE_LOW>; | ||
|
|
||
| clocks = <&ad7768_mclk>; | ||
|
|
||
| adi,data-lines-number = <8>; | ||
| gpio-controller; | ||
| #gpio-cells = <2>; | ||
|
|
||
| io-backends = <&iio_backend>; | ||
|
|
||
| #address-cells = <1>; | ||
| #size-cells = <0>; | ||
|
|
||
| channel@0 { | ||
| reg = <0>; | ||
| adi,prechargebuf-pos-enable; | ||
| adi,refbuf-pos-enable; | ||
| }; | ||
|
|
||
| channel@1 { | ||
| reg = <1>; | ||
| adi,prechargebuf-pos-enable; | ||
| adi,prechargebuf-neg-enable; | ||
| adi,refbuf-pos-enable; | ||
| adi,refbuf-neg-enable; | ||
| }; | ||
|
|
||
| channel@7 { | ||
| reg = <7>; | ||
| adi,prechargebuf-pos-enable; | ||
| adi,refbuf-pos-enable; | ||
| }; | ||
| }; | ||
| }; | ||
|
|
||
| - | | ||
| spi { | ||
| #address-cells = <1>; | ||
| #size-cells = <0>; | ||
|
|
||
| adc@1 { | ||
| compatible = "adi,ad7768-4"; | ||
| reg = <1>; | ||
| spi-max-frequency = <1000000>; | ||
|
|
||
| avdd1-supply = <&avdd1_regulator>; | ||
| avss-supply = <&avss_regulator>; | ||
| avdd2-supply = <&avdd2_regulator>; | ||
| iovdd-supply = <&iovdd_regulator>; | ||
| ref1-supply = <&ref1_regulator>; | ||
| ref2-supply = <&ref2_regulator>; | ||
|
|
||
| clocks = <&ad7768_mclk>; | ||
|
|
||
| adi,data-lines-number = <4>; | ||
|
|
||
| io-backends = <&iio_backend>; | ||
|
|
||
| #address-cells = <1>; | ||
| #size-cells = <0>; | ||
|
|
||
| regulators { | ||
| vcm-output { | ||
| regulator-name = "vcm-output"; | ||
| regulator-min-microvolt = <2140000>; | ||
| regulator-max-microvolt = <2140000>; | ||
| regulator-always-on; | ||
| }; | ||
| }; | ||
|
|
||
| channel@0 { | ||
| reg = <0>; | ||
| adi,prechargebuf-pos-enable; | ||
| adi,refbuf-pos-enable; | ||
| }; | ||
|
|
||
| channel@3 { | ||
| reg = <3>; | ||
| adi,prechargebuf-pos-enable; | ||
| adi,refbuf-pos-enable; | ||
| }; | ||
| }; | ||
| }; | ||
| ... | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.