Commit ade7afe3 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging / IIO driver updates from Greg KH:
 "Here is the large set of staging and IIO driver updates for 5.10-rc1.

  Included in here are:

   - new IIO drivers

   - new IIO driver frameworks

   - various IIO driver fixes and updates

   - IIO device tree conversions to yaml

   - so many minor staging driver coding style cleanups

   - most cdev driver moved out of staging

   - no staging drivers added or removed

  Full details are in the shortlog.

  All of these have been in linux-next for a while with no reported
  issues"

* tag 'staging-5.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (476 commits)
  staging: comedi: check validity of wMaxPacketSize of usb endpoints found
  staging: wfx: improve robustness of wfx_get_hw_rate()
  staging: wfx: drop unicode characters from strings
  staging: wfx: gpiod_get_value() can return an error
  staging: wfx: increase robustness of hif_generic_confirm()
  staging: wfx: wfx_init_common() returns NULL on error
  staging: wfx: standardize the error when vif does not exist
  staging: wfx: check memory allocation
  staging: wfx: improve error handling of hif_join()
  staging: dpaa2-switch: add a dpaa2_switch prefix to all functions in ethsw.c
  staging: dpaa2-switch: add a dpaa2_switch_ prefix to all functions in ethsw-ethtool.c
  staging: rtl8188eu: Fix long lines
  dt-bindings: staging: wfx: silabs,wfx yaml conversion
  staging: wfx: update copyrights dates
  staging: wfx: fix QoS priority for slow buses
  staging: wfx: fix BA sessions for older firmwares
  staging: wfx: remove remaining code of 'secure link' feature
  staging: wfx: fix handling of MMIC error
  staging: vchiq: Fix list_for_each exit tests
  staging: greybus: use __force when assigning __u8 value to snd_ctl_elem_type_t
  ...
parents 3e4fb434 e1f13c87
...@@ -1942,6 +1942,10 @@ S: Post Office Box 611311 ...@@ -1942,6 +1942,10 @@ S: Post Office Box 611311
S: San Jose, California 95161-1311 S: San Jose, California 95161-1311
S: USA S: USA
N: Hartmut Knaack
E: knaack.h@gmx.de
D: IIO subsystem and drivers
N: Thorsten Knabe N: Thorsten Knabe
E: Thorsten Knabe <tek@rbg.informatik.tu-darmstadt.de> E: Thorsten Knabe <tek@rbg.informatik.tu-darmstadt.de>
E: Thorsten Knabe <tek01@hrzpub.tu-darmstadt.de> E: Thorsten Knabe <tek01@hrzpub.tu-darmstadt.de>
......
...@@ -40,6 +40,7 @@ Description: ...@@ -40,6 +40,7 @@ Description:
buffered samples and events for device X. buffered samples and events for device X.
What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_sampling_frequency
What: /sys/bus/iio/devices/iio:deviceX/buffer/sampling_frequency What: /sys/bus/iio/devices/iio:deviceX/buffer/sampling_frequency
What: /sys/bus/iio/devices/triggerX/sampling_frequency What: /sys/bus/iio/devices/triggerX/sampling_frequency
KernelVersion: 2.6.35 KernelVersion: 2.6.35
...@@ -49,12 +50,13 @@ Description: ...@@ -49,12 +50,13 @@ Description:
resulting sampling frequency. In many devices this resulting sampling frequency. In many devices this
parameter has an effect on input filters etc. rather than parameter has an effect on input filters etc. rather than
simply controlling when the input is sampled. As this simply controlling when the input is sampled. As this
effects data ready triggers, hardware buffers and the sysfs affects data ready triggers, hardware buffers and the sysfs
direct access interfaces, it may be found in any of the direct access interfaces, it may be found in any of the
relevant directories. If it effects all of the above relevant directories. If it affects all of the above
then it is to be found in the base device directory. then it is to be found in the base device directory.
What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency_available What: /sys/bus/iio/devices/iio:deviceX/sampling_frequency_available
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_sampling_frequency_available
What: /sys/bus/iio/devices/iio:deviceX/in_proximity_sampling_frequency_available What: /sys/bus/iio/devices/iio:deviceX/in_proximity_sampling_frequency_available
What: /sys/.../iio:deviceX/buffer/sampling_frequency_available What: /sys/.../iio:deviceX/buffer/sampling_frequency_available
What: /sys/bus/iio/devices/triggerX/sampling_frequency_available What: /sys/bus/iio/devices/triggerX/sampling_frequency_available
...@@ -374,6 +376,9 @@ What: /sys/bus/iio/devices/iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_scale ...@@ -374,6 +376,9 @@ What: /sys/bus/iio/devices/iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_scale
What: /sys/bus/iio/devices/iio:deviceX/in_illuminance_scale What: /sys/bus/iio/devices/iio:deviceX/in_illuminance_scale
What: /sys/bus/iio/devices/iio:deviceX/in_countY_scale What: /sys/bus/iio/devices/iio:deviceX/in_countY_scale
What: /sys/bus/iio/devices/iio:deviceX/in_angl_scale What: /sys/bus/iio/devices/iio:deviceX/in_angl_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_x_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_y_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_z_scale
KernelVersion: 2.6.35 KernelVersion: 2.6.35
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
...@@ -401,21 +406,21 @@ Description: ...@@ -401,21 +406,21 @@ Description:
Hardware applied calibration offset (assumed to fix production Hardware applied calibration offset (assumed to fix production
inaccuracies). inaccuracies).
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_supply_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_i_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_q_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltage_i_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltage_q_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_voltage_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_calibscale
What /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_calibscale
what /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_illuminance0_calibscale
what /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_proximity0_calibscale
What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_pressureY_calibscale
What: /sys/bus/iio/devices/iio:deviceX/in_pressure_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_pressure_calibscale
What: /sys/bus/iio/devices/iio:deviceX/in_illuminance_calibscale What: /sys/bus/iio/devices/iio:deviceX/in_illuminance_calibscale
...@@ -483,7 +488,8 @@ Description: ...@@ -483,7 +488,8 @@ Description:
If a discrete set of scale values is available, they If a discrete set of scale values is available, they
are listed in this attribute. are listed in this attribute.
What /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain What: /sys/bus/iio/devices/iio:deviceX/out_voltageY_hardwaregain
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_hardwaregain
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_red_hardwaregain What: /sys/bus/iio/devices/iio:deviceX/in_intensity_red_hardwaregain
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_green_hardwaregain What: /sys/bus/iio/devices/iio:deviceX/in_intensity_green_hardwaregain
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_blue_hardwaregain What: /sys/bus/iio/devices/iio:deviceX/in_intensity_blue_hardwaregain
...@@ -494,6 +500,13 @@ Description: ...@@ -494,6 +500,13 @@ Description:
Hardware applied gain factor. If shared across all channels, Hardware applied gain factor. If shared across all channels,
<type>_hardwaregain is used. <type>_hardwaregain is used.
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_hardwaregain_available
KernelVersion: 5.10
Contact: linux-iio@vger.kernel.org
Description:
Lists all available hardware applied gain factors. Shared across all
channels.
What: /sys/.../in_accel_filter_low_pass_3db_frequency What: /sys/.../in_accel_filter_low_pass_3db_frequency
What: /sys/.../in_magn_filter_low_pass_3db_frequency What: /sys/.../in_magn_filter_low_pass_3db_frequency
What: /sys/.../in_anglvel_filter_low_pass_3db_frequency What: /sys/.../in_anglvel_filter_low_pass_3db_frequency
...@@ -750,9 +763,9 @@ What: /sys/.../events/in_voltageY_raw_thresh_falling_value ...@@ -750,9 +763,9 @@ What: /sys/.../events/in_voltageY_raw_thresh_falling_value
What: /sys/.../events/in_tempY_raw_thresh_rising_value What: /sys/.../events/in_tempY_raw_thresh_rising_value
What: /sys/.../events/in_tempY_raw_thresh_falling_value What: /sys/.../events/in_tempY_raw_thresh_falling_value
What: /sys/.../events/in_illuminance0_thresh_falling_value What: /sys/.../events/in_illuminance0_thresh_falling_value
what: /sys/.../events/in_illuminance0_thresh_rising_value What: /sys/.../events/in_illuminance0_thresh_rising_value
what: /sys/.../events/in_proximity0_thresh_falling_value What: /sys/.../events/in_proximity0_thresh_falling_value
what: /sys/.../events/in_proximity0_thresh_rising_value What: /sys/.../events/in_proximity0_thresh_rising_value
What: /sys/.../events/in_illuminance_thresh_rising_value What: /sys/.../events/in_illuminance_thresh_rising_value
What: /sys/.../events/in_illuminance_thresh_falling_value What: /sys/.../events/in_illuminance_thresh_falling_value
KernelVersion: 2.6.37 KernelVersion: 2.6.37
...@@ -832,11 +845,11 @@ What: /sys/.../events/in_tempY_thresh_rising_hysteresis ...@@ -832,11 +845,11 @@ What: /sys/.../events/in_tempY_thresh_rising_hysteresis
What: /sys/.../events/in_tempY_thresh_falling_hysteresis What: /sys/.../events/in_tempY_thresh_falling_hysteresis
What: /sys/.../events/in_tempY_thresh_either_hysteresis What: /sys/.../events/in_tempY_thresh_either_hysteresis
What: /sys/.../events/in_illuminance0_thresh_falling_hysteresis What: /sys/.../events/in_illuminance0_thresh_falling_hysteresis
what: /sys/.../events/in_illuminance0_thresh_rising_hysteresis What: /sys/.../events/in_illuminance0_thresh_rising_hysteresis
what: /sys/.../events/in_illuminance0_thresh_either_hysteresis What: /sys/.../events/in_illuminance0_thresh_either_hysteresis
what: /sys/.../events/in_proximity0_thresh_falling_hysteresis What: /sys/.../events/in_proximity0_thresh_falling_hysteresis
what: /sys/.../events/in_proximity0_thresh_rising_hysteresis What: /sys/.../events/in_proximity0_thresh_rising_hysteresis
what: /sys/.../events/in_proximity0_thresh_either_hysteresis What: /sys/.../events/in_proximity0_thresh_either_hysteresis
KernelVersion: 3.13 KernelVersion: 3.13
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
...@@ -1013,7 +1026,7 @@ What: /sys/.../events/in_activity_running_thresh_falling_en ...@@ -1013,7 +1026,7 @@ What: /sys/.../events/in_activity_running_thresh_falling_en
KernelVersion: 3.19 KernelVersion: 3.19
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
Enables or disables activitity events. Depending on direction Enables or disables activity events. Depending on direction
an event is generated when sensor ENTERS or LEAVES a given state. an event is generated when sensor ENTERS or LEAVES a given state.
What: /sys/.../events/in_activity_still_thresh_rising_value What: /sys/.../events/in_activity_still_thresh_rising_value
...@@ -1333,6 +1346,7 @@ Description: ...@@ -1333,6 +1346,7 @@ Description:
standardised CIE Erythemal Action Spectrum. UV index values range standardised CIE Erythemal Action Spectrum. UV index values range
from 0 (low) to >=11 (extreme). from 0 (low) to >=11 (extreme).
What: /sys/.../iio:deviceX/in_intensity_integration_time
What: /sys/.../iio:deviceX/in_intensity_red_integration_time What: /sys/.../iio:deviceX/in_intensity_red_integration_time
What: /sys/.../iio:deviceX/in_intensity_green_integration_time What: /sys/.../iio:deviceX/in_intensity_green_integration_time
What: /sys/.../iio:deviceX/in_intensity_blue_integration_time What: /sys/.../iio:deviceX/in_intensity_blue_integration_time
...@@ -1342,7 +1356,8 @@ KernelVersion: 3.12 ...@@ -1342,7 +1356,8 @@ KernelVersion: 3.12
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
This attribute is used to get/set the integration time in This attribute is used to get/set the integration time in
seconds. seconds. If shared across all channels of a given type,
<type>_integration_time is used.
What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_integration_time What: /sys/.../iio:deviceX/in_velocity_sqrt(x^2+y^2+z^2)_integration_time
KernelVersion: 4.0 KernelVersion: 4.0
...@@ -1564,6 +1579,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_concentration_ethanol_raw ...@@ -1564,6 +1579,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_concentration_ethanol_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_ethanol_raw What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_ethanol_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentration_h2_raw What: /sys/bus/iio/devices/iio:deviceX/in_concentration_h2_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_h2_raw What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_h2_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentration_o2_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_o2_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentration_voc_raw What: /sys/bus/iio/devices/iio:deviceX/in_concentration_voc_raw
What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_voc_raw What: /sys/bus/iio/devices/iio:deviceX/in_concentrationX_voc_raw
KernelVersion: 4.3 KernelVersion: 4.3
...@@ -1740,3 +1757,20 @@ KernelVersion: 5.5 ...@@ -1740,3 +1757,20 @@ KernelVersion: 5.5
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
Description: Description:
One of the following thermocouple types: B, E, J, K, N, R, S, T. One of the following thermocouple types: B, E, J, K, N, R, S, T.
What: /sys/bus/iio/devices/iio:deviceX/in_temp_object_calibambient
What: /sys/bus/iio/devices/iio:deviceX/in_tempX_object_calibambient
KernelVersion: 5.10
Contact: linux-iio@vger.kernel.org
Description:
Calibrated ambient temperature for object temperature
calculation in milli degrees Celsius.
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_x_raw
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_y_raw
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_z_raw
KernelVersion: 5.10
Contact: linux-iio@vger.kernel.org
Description:
Unscaled light intensity according to CIE 1931/DIN 5033 color space.
Units after application of scale are nano nanowatts per square meter.
What: /sys/bus/iio/devices/triggerX/name = "adxl372-devX-peak"
KernelVersion:
Contact: linux-iio@vger.kernel.org
Description:
The adxl372 accelerometer kernel module provides an additional trigger,
which sets the device in a mode in which it will record only the peak acceleration
sensed over the set period of time in the events sysfs.
What: /sys/bus/iio/devices/iio:deviceX/out_current_heater_raw
What: /sys/bus/iio/devices/iio:deviceX/out_current_heater_raw_available
KernelVersion: 5.3.8
Contact: linux-iio@vger.kernel.org
Description:
Controls the heater device within the humidity sensor to get
rid of excess condensation.
Valid control values are 0 = OFF, and 1 = ON.
* Analog Devices AD7949/AD7682/AD7689
Required properties:
- compatible: Should be one of
* "adi,ad7949"
* "adi,ad7682"
* "adi,ad7689"
- reg: spi chip select number for the device
- vref-supply: The regulator supply for ADC reference voltage
Example:
adc@0 {
compatible = "adi,ad7949";
reg = <0>;
vref-supply = <&vdd_supply>;
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad7291.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: AD7291 8-Channel, I2C, 12-Bit SAR ADC with Temperature Sensor
maintainers:
- Michael Auchter <michael.auchter@ni.com>
description: |
Analog Devices AD7291 8-Channel I2C 12-Bit SAR ADC with Temperature Sensor
https://www.analog.com/media/en/technical-documentation/data-sheets/ad7291.pdf
properties:
compatible:
enum:
- adi,ad7291
reg:
maxItems: 1
vref-supply:
description: |
The regulator supply for ADC reference voltage.
required:
- compatible
- reg
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
ad7291: adc@0 {
compatible = "adi,ad7291";
reg = <0>;
vref-supply = <&adc_vref>;
};
};
...
\ No newline at end of file
Analog Devices AD7768-1 ADC device driver
Required properties for the AD7768-1:
- compatible: Must be "adi,ad7768-1"
- reg: SPI chip select number for the device
- spi-max-frequency: Max SPI frequency to use
see: Documentation/devicetree/bindings/spi/spi-bus.txt
- clocks: phandle to the master clock (mclk)
see: Documentation/devicetree/bindings/clock/clock-bindings.txt
- clock-names: Must be "mclk".
- interrupts: IRQ line for the ADC
see: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
- vref-supply: vref supply can be used as reference for conversion
- adi,sync-in-gpios: must be the device tree identifier of the SYNC-IN pin. Enables
synchronization of multiple devices that require simultaneous sampling.
A pulse is always required if the configuration is changed in any way, for example
if the filter decimation rate changes. As the line is active low, it should
be marked GPIO_ACTIVE_LOW.
Optional properties:
- reset-gpios : GPIO spec for the RESET pin. If specified, it will be asserted during
driver probe. As the line is active low, it should be marked GPIO_ACTIVE_LOW.
Example:
adc@0 {
compatible = "adi,ad7768-1";
reg = <0>;
spi-max-frequency = <2000000>;
spi-cpol;
spi-cpha;
vref-supply = <&adc_vref>;
interrupts = <25 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gpio>;
adi,sync-in-gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
clocks = <&ad7768_mclk>;
clock-names = "mclk";
};
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad7768-1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD7768-1 ADC device driver
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
description: |
Datasheet at:
https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768-1.pdf
properties:
compatible:
const: adi,ad7768-1
reg:
maxItems: 1
clocks:
maxItems: 1
clock-names:
const: mclk
interrupts:
maxItems: 1
vref-supply:
description:
ADC reference voltage supply
adi,sync-in-gpios:
description:
Enables synchronization of multiple devices that require simultaneous
sampling. A pulse is always required if the configuration is changed
in any way, for example if the filter decimation rate changes.
As the line is active low, it should be marked GPIO_ACTIVE_LOW.
reset-gpios:
maxItems: 1
spi-max-frequency: true
spi-cpol: true
spi-cpha : true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- clocks
- clock-names
- vref-supply
- spi-cpol
- spi-cpha
- adi,sync-in-gpios
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/gpio/gpio.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "adi,ad7768-1";
reg = <0>;
spi-max-frequency = <2000000>;
spi-cpol;
spi-cpha;
vref-supply = <&adc_vref>;
interrupts = <25 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gpio>;
adi,sync-in-gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
reset-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
clocks = <&ad7768_mclk>;
clock-names = "mclk";
};
};
...
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ad7949.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD7949/AD7682/AD7689 analog to digital converters
maintainers:
- Charles-Antoine Couret <charles-antoine.couret@essensium.com>
description: |
Specifications on the converters can be found at:
AD7949:
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7949.pdf
AD7682/AD7698:
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7682_7689.pdf
properties:
compatible:
enum:
- adi,ad7682
- adi,ad7689
- adi,ad7949
reg:
maxItems: 1
vref-supply:
description:
ADC reference voltage supply
spi-max-frequency: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "adi,ad7949";
reg = <0>;
vref-supply = <&vdd_supply>;
};
};
...
...@@ -4,21 +4,30 @@ ...@@ -4,21 +4,30 @@
$id: http://devicetree.org/schemas/iio/adc/adi,ad9467.yaml# $id: http://devicetree.org/schemas/iio/adc/adi,ad9467.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD9467 High-Speed ADC title: Analog Devices AD9467 and similar High-Speed ADCs
maintainers: maintainers:
- Michael Hennerich <michael.hennerich@analog.com> - Michael Hennerich <michael.hennerich@analog.com>
- Alexandru Ardelean <alexandru.ardelean@analog.com> - Alexandru Ardelean <alexandru.ardelean@analog.com>
description: | description: |
The AD9467 is a 16-bit, monolithic, IF sampling analog-to-digital The AD9467 and the parts similar with it, are high-speed analog-to-digital
converter (ADC). converters (ADCs), operating in the range of 100 to 500 mega samples
per second (MSPS). Some parts support higher MSPS and some
lower MSPS, suitable for the intended application of each part.
All the parts support the register map described by Application Note AN-877
https://www.analog.com/media/en/technical-documentation/application-notes/AN-877.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9265.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9434.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/AD9467.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD9467.pdf
properties: properties:
compatible: compatible:
enum: enum:
- adi,ad9265
- adi,ad9434
- adi,ad9467 - adi,ad9467
reg: reg:
......
ADS1015 (I2C)
This device is a 12-bit A-D converter with 4 inputs.
The inputs can be used single ended or in certain differential combinations.
For configuration all possible combinations are mapped to 8 channels:
0: Voltage over AIN0 and AIN1.
1: Voltage over AIN0 and AIN3.
2: Voltage over AIN1 and AIN3.
3: Voltage over AIN2 and AIN3.
4: Voltage over AIN0 and GND.
5: Voltage over AIN1 and GND.
6: Voltage over AIN2 and GND.
7: Voltage over AIN3 and GND.
Each channel can be configured individually:
- pga is the programmable gain amplifier (values are full scale)
0: +/- 6.144 V
1: +/- 4.096 V
2: +/- 2.048 V (default)
3: +/- 1.024 V
4: +/- 0.512 V
5: +/- 0.256 V
- data_rate in samples per second
0: 128
1: 250
2: 490
3: 920
4: 1600 (default)
5: 2400
6: 3300
1) The /ads1015 node
Required properties:
- compatible : must be "ti,ads1015"
- reg : I2C bus address of the device
- #address-cells : must be <1>
- #size-cells : must be <0>
The node contains child nodes for each channel that the platform uses.
Example ADS1015 node:
ads1015@49 {
compatible = "ti,ads1015";
reg = <0x49>;
#address-cells = <1>;
#size-cells = <0>;
[ child node definitions... ]
}
2) channel nodes
Required properties:
- reg : the channel number
Optional properties:
- ti,gain : the programmable gain amplifier setting
- ti,datarate : the converter data rate
Example ADS1015 channel node:
channel@4 {
reg = <4>;
ti,gain = <3>;
ti,datarate = <5>;
};
* Amlogic Meson SAR (Successive Approximation Register) A/D converter
Required properties:
- compatible: depending on the SoC this should be one of:
- "amlogic,meson8-saradc" for Meson8
- "amlogic,meson8b-saradc" for Meson8b
- "amlogic,meson8m2-saradc" for Meson8m2
- "amlogic,meson-gxbb-saradc" for GXBB
- "amlogic,meson-gxl-saradc" for GXL
- "amlogic,meson-gxm-saradc" for GXM
- "amlogic,meson-axg-saradc" for AXG
- "amlogic,meson-g12a-saradc" for AXG
along with the generic "amlogic,meson-saradc"
- reg: the physical base address and length of the registers
- interrupts: the interrupt indicating end of sampling
- clocks: phandle and clock identifier (see clock-names)
- clock-names: mandatory clocks:
- "clkin" for the reference clock (typically XTAL)
- "core" for the SAR ADC core clock
optional clocks:
- "adc_clk" for the ADC (sampling) clock
- "adc_sel" for the ADC (sampling) clock mux
- vref-supply: the regulator supply for the ADC reference voltage
- #io-channel-cells: must be 1, see ../iio-bindings.txt
Optional properties:
- amlogic,hhi-sysctrl: phandle to the syscon which contains the 5th bit
of the TSC (temperature sensor coefficient) on
Meson8b and Meson8m2 (which used to calibrate the
temperature sensor)
- nvmem-cells: phandle to the temperature_calib eFuse cells
- nvmem-cell-names: if present (to enable the temperature sensor
calibration) this must contain "temperature_calib"
Example:
saradc: adc@8680 {
compatible = "amlogic,meson-gxl-saradc", "amlogic,meson-saradc";
#io-channel-cells = <1>;
reg = <0x0 0x8680 0x0 0x34>;
interrupts = <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>;
clocks = <&xtal>,
<&clkc CLKID_SAR_ADC>,
<&clkc CLKID_SANA>,
<&clkc CLKID_SAR_ADC_CLK>,
<&clkc CLKID_SAR_ADC_SEL>;
clock-names = "clkin", "core", "sana", "adc_clk", "adc_sel";
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/amlogic,meson-saradc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson SAR (Successive Approximation Register) A/D converter
maintainers:
- Martin Blumenstingl <martin.blumenstingl@googlemail.com>
description:
Binding covers a range of ADCs found on Amlogic Meson SoCs.
properties:
compatible:
oneOf:
- const: amlogic,meson-saradc
- items:
- enum:
- amlogic,meson8-saradc
- amlogic,meson8b-saradc
- amlogic,meson8m2-saradc
- amlogic,meson-gxbb-saradc
- amlogic,meson-gxl-saradc
- amlogic,meson-gxm-saradc
- amlogic,meson-axg-saradc
- amlogic,meson-g12a-saradc
- const: amlogic,meson-saradc
reg:
maxItems: 1
interrupts:
description: Interrupt indicates end of sampling.
maxItems: 1
clocks:
minItems: 2
maxItems: 4
clock-names:
minItems: 2
maxItems: 4
items:
- const: clkin
- const: core
- const: adc_clk
- const: adc_sel
vref-supply: true
"#io-channel-cells":
const: 1
amlogic,hhi-sysctrl:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Syscon which contains the 5th bit of the TSC (temperature sensor
coefficient) on Meson8b and Meson8m2 (which used to calibrate the
temperature sensor)
nvmem-cells:
description: phandle to the temperature_calib eFuse cells
maxItems: 1
nvmem-cell-names:
const: temperature_calib
allOf:
- if:
properties:
compatible:
contains:
enum:
- amlogic,meson8-saradc
- amlogic,meson8b-saradc
- amlogic,meson8m2-saradc
then:
properties:
clocks:
maxItems: 2
clock-names:
maxItems: 2
else:
properties:
nvmem-cells: false
mvmem-cel-names: false
clocks:
minItems: 4
clock-names:
minItems: 4
- if:
properties:
compatible:
contains:
enum:
- amlogic,meson8b-saradc
- amlogic,meson8m2-saradc
then:
properties:
amlogic,hhi-sysctrl: true
else:
properties:
amlogic,hhi-sysctrl: false
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- "#io-channel-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/gxbb-clkc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
adc@8680 {
compatible = "amlogic,meson-gxl-saradc", "amlogic,meson-saradc";
#io-channel-cells = <1>;
reg = <0x0 0x8680 0x0 0x34>;
interrupts = <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>;
clocks = <&xtal>,
<&clkc CLKID_SAR_ADC>,
<&clkc CLKID_SAR_ADC_CLK>,
<&clkc CLKID_SAR_ADC_SEL>;
clock-names = "clkin", "core", "adc_clk", "adc_sel";
};
adc@9680 {
compatible = "amlogic,meson8b-saradc", "amlogic,meson-saradc";
#io-channel-cells = <1>;
reg = <0x0 0x9680 0x0 0x34>;
interrupts = <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>;
clocks = <&xtal>, <&clkc CLKID_SAR_ADC>;
clock-names = "clkin", "core";
nvmem-cells = <&tsens_caldata>;
nvmem-cell-names = "temperature_calib";
amlogic,hhi-sysctrl = <&hhi>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/aspeed,ast2400-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ADC that forms part of an ASPEED server management processor.
maintainers:
- Joel Stanley <joel@jms.id.au>
description:
This device is a 10-bit converter for 16 voltage channels. All inputs are
single ended.
properties:
compatible:
enum:
- aspeed,ast2400-adc
- aspeed,ast2500-adc
reg:
maxItems: 1
clocks:
description:
Input clock used to derive the sample clock. Expected to be the
SoC's APB clock.
resets:
maxItems: 1
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- clocks
- resets
- "#io-channel-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/aspeed-clock.h>
adc@1e6e9000 {
compatible = "aspeed,ast2400-adc";
reg = <0x1e6e9000 0xb0>;
clocks = <&syscon ASPEED_CLK_APB>;
resets = <&syscon ASPEED_RESET_ADC>;
#io-channel-cells = <1>;
};
...
Aspeed ADC
This device is a 10-bit converter for 16 voltage channels. All inputs are
single ended.
Required properties:
- compatible: Should be "aspeed,ast2400-adc" or "aspeed,ast2500-adc"
- reg: memory window mapping address and length
- clocks: Input clock used to derive the sample clock. Expected to be the
SoC's APB clock.
- resets: Reset controller phandle
- #io-channel-cells: Must be set to <1> to indicate channels are selected
by index.
Example:
adc@1e6e9000 {
compatible = "aspeed,ast2400-adc";
reg = <0x1e6e9000 0xb0>;
clocks = <&syscon ASPEED_CLK_APB>;
resets = <&syscon ASPEED_RESET_ADC>;
#io-channel-cells = <1>;
};
* Berlin Analog to Digital Converter (ADC)
The Berlin ADC has 8 channels, with one connected to a temperature sensor.
It is part of the system controller register set. The ADC node should be a
sub-node of the system controller node.
Required properties:
- compatible: must be "marvell,berlin2-adc"
- interrupts: the interrupts for the ADC and the temperature sensor
- interrupt-names: should be "adc" and "tsen"
Example:
adc: adc {
compatible = "marvell,berlin2-adc";
interrupt-parent = <&sic>;
interrupts = <12>, <14>;
interrupt-names = "adc", "tsen";
};
* Cosmic Circuits - Analog to Digital Converter (CC-10001-ADC)
Required properties:
- compatible: Should be "cosmic,10001-adc"
- reg: Should contain adc registers location and length.
- clock-names: Should contain "adc".
- clocks: Should contain a clock specifier for each entry in clock-names
- vref-supply: The regulator supply ADC reference voltage.
Optional properties:
- adc-reserved-channels: Bitmask of reserved channels,
i.e. channels that cannot be used by the OS.
Example:
adc: adc@18101600 {
compatible = "cosmic,10001-adc";
reg = <0x18101600 0x24>;
adc-reserved-channels = <0x2>;
clocks = <&adc_clk>;
clock-names = "adc";
vref-supply = <&reg_1v8>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/cosmic,10001-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cosmic Circuits CC-10001 ADC
maintainers:
- Jonathan Cameron <jic23@kernel.org>
description:
Cosmic Circuits 10001 10-bit ADC device.
properties:
compatible:
const: cosmic,10001-adc
reg:
maxItems: 1
adc-reserved-channels:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Bitmask of reserved channels, i.e. channels that cannot be
used by the OS.
clocks:
maxItems: 1
clock-names:
const: adc
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- clocks
- clock-names
- vref-supply
additionalProperties: false
examples:
- |
adc@18101600 {
compatible = "cosmic,10001-adc";
reg = <0x18101600 0x24>;
adc-reserved-channels = <0x2>;
clocks = <&adc_clk>;
clock-names = "adc";
vref-supply = <&reg_1v8>;
};
...
Motorola CPCAP PMIC ADC binding
Required properties:
- compatible: Should be "motorola,cpcap-adc" or "motorola,mapphone-cpcap-adc"
- interrupts: The interrupt number for the ADC device
- interrupt-names: Should be "adcdone"
- #io-channel-cells: Number of cells in an IIO specifier
Example:
cpcap_adc: adc {
compatible = "motorola,mapphone-cpcap-adc";
interrupt-parent = <&cpcap>;
interrupts = <8 IRQ_TYPE_NONE>;
interrupt-names = "adcdone";
#io-channel-cells = <1>;
};
Dialog Semiconductor DA9150 IIO GPADC bindings
Required properties:
- compatible: "dlg,da9150-gpadc" for DA9150 IIO GPADC
- #io-channel-cells: Should be set to <1>
(See Documentation/devicetree/bindings/iio/iio-bindings.txt for further info)
For further information on GPADC channels, see device datasheet.
Example:
gpadc: da9150-gpadc {
compatible = "dlg,da9150-gpadc";
#io-channel-cells = <1>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/dlg,da9150-gpadc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Dialog Semiconductor DA9150 IIO GPADC
maintainers:
- Adam Thomson <Adam.Thomson.Opensource@diasemi.com>
description:
This patch adds support for general purpose ADC within the
DA9150 Charger & Fuel-Gauge IC.
properties:
compatible:
const: dlg,da9150-gpadc
"#io-channel-cells":
const: 1
required:
- compatible
- "#io-channel-cells"
additionalProperties: false
examples:
- |
adc {
compatible = "dlg,da9150-gpadc";
#io-channel-cells = <1>;
};
...
Freescale i.MX25 ADC GCQ device
This is a generic conversion queue device that can convert any of the
analog inputs using the ADC unit of the i.MX25.
Required properties:
- compatible: Should be "fsl,imx25-gcq".
- reg: Should be the register range of the module.
- interrupts: Should be the interrupt number of the module.
Typically this is <1>.
- #address-cells: Should be <1> (setting for the subnodes)
- #size-cells: Should be <0> (setting for the subnodes)
Optional properties:
- vref-ext-supply: The regulator supplying the ADC reference voltage.
Required when at least one subnode uses the this reference.
- vref-xp-supply: The regulator supplying the ADC reference voltage on pin XP.
Required when at least one subnode uses this reference.
- vref-yp-supply: The regulator supplying the ADC reference voltage on pin YP.
Required when at least one subnode uses this reference.
Sub-nodes:
Optionally you can define subnodes which define the reference voltage
for the analog inputs.
Required properties for subnodes:
- reg: Should be the number of the analog input.
0: xp
1: yp
2: xn
3: yn
4: wiper
5: inaux0
6: inaux1
7: inaux2
Optional properties for subnodes:
- fsl,adc-refp: specifies the positive reference input as defined in
<dt-bindings/iio/adc/fsl-imx25-gcq.h>
- fsl,adc-refn: specifies the negative reference input as defined in
<dt-bindings/iio/adc/fsl-imx25-gcq.h>
Example:
adc: adc@50030800 {
compatible = "fsl,imx25-gcq";
reg = <0x50030800 0x60>;
interrupt-parent = <&tscadc>;
interrupts = <1>;
#address-cells = <1>;
#size-cells = <0>;
inaux@5 {
reg = <5>;
fsl,adc-refp = <MX25_ADC_REFP_INT>;
fsl,adc-refn = <MX25_ADC_REFN_NGND>;
};
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/fsl,imx25-gcq.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale ADC GCQ device
description:
This is a generic conversion queue device that can convert any of the
analog inputs using the ADC unit of the i.MX25.
maintainers:
- Jonathan Cameron <jic23@kernel.org>
properties:
compatible:
const: fsl,imx25-gcq
reg:
maxItems: 1
interrupts:
maxItems: 1
vref-ext-supply:
description:
The regulator supplying the ADC reference voltage.
Required when at least one subnode uses the this reference.
vref-xp-supply:
description:
The regulator supplying the ADC reference voltage on pin XP.
Required when at least one subnode uses this reference.
vref-yp-supply:
description:
The regulator supplying the ADC reference voltage on pin YP.
Required when at least one subnode uses this reference.
"#io-channel-cells":
const: 1
"#address-cells":
const: 1
"#size-cells":
const: 0
required:
- compatible
- reg
- interrupts
- "#address-cells"
- "#size-cells"
patternProperties:
"[a-z][a-z0-9]+@[0-9a-f]+$":
type: object
description:
Child nodes used to define the reference voltages used for each channel
properties:
reg:
description: |
Number of the analog input.
0: xp
1: yp
2: xn
3: yn
4: wiper
5: inaux0
6: inaux1
7: inaux2
items:
- minimum: 0
maximum: 7
fsl,adc-refp:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
Specifies the positive reference input as defined in
<dt-bindings/iio/adc/fsl-imx25-gcq.h>
0: YP voltage reference
1: XP voltage reference
2: External voltage reference
3: Internal voltage reference (default)
minimum: 0
maximum: 3
fsl,adc-refn:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
Specifies the negative reference input as defined in
<dt-bindings/iio/adc/fsl-imx25-gcq.h>
0: XN ground reference
1: YN ground reference
2: Internal ground reference
3: External ground reference (default)
minimum: 0
maximum: 3
required:
- reg
additionalProperties: false
additionalProperties: false
examples:
- |
#include <dt-bindings/iio/adc/fsl-imx25-gcq.h>
soc {
#address-cells = <1>;
#size-cells = <1>;
adc@50030800 {
compatible = "fsl,imx25-gcq";
reg = <0x50030800 0x60>;
interrupt-parent = <&tscadc>;
interrupts = <1>;
#address-cells = <1>;
#size-cells = <0>;
inaux@5 {
reg = <5>;
fsl,adc-refp = <MX25_ADC_REFP_INT>;
fsl,adc-refn = <MX25_ADC_REFN_NGND>;
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/fsl,imx7d-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale ADC found on the imx7d SoC
maintainers:
- Haibo Chen <haibo.chen@nxp.com>
properties:
compatible:
const: fsl,imx7d-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
clock-names:
const: adc
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- vref-supply
- "#io-channel-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/imx7d-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
soc {
#address-cells = <1>;
#size-cells = <1>;
adc@30610000 {
compatible = "fsl,imx7d-adc";
reg = <0x30610000 0x10000>;
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_ADC_ROOT_CLK>;
clock-names = "adc";
vref-supply = <&reg_vcc_3v3_mcu>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/fsl,vf610-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ADC found on Freescale vf610 and similar SoCs
maintainers:
- Fugang Duan <fugang.duan@nxp.com>
description:
ADCs found on vf610/i.MX6slx and upward SoCs from Freescale.
properties:
compatible:
const: fsl,vf610-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
description: ADC source clock (ipg clock)
maxItems: 1
clock-names:
const: adc
vref-supply:
description: ADC reference voltage supply.
fsl,adck-max-frequency:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 3
maxItems: 3
description: |
Maximum frequencies from datasheet operating requirements.
Three values necessary to cover the 3 conversion modes.
* Frequency in normal mode (ADLPC=0, ADHSC=0)
* Frequency in high-speed mode (ADLPC=0, ADHSC=1)
* Frequency in low-power mode (ADLPC=1, ADHSC=0)
min-sample-time:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Minimum sampling time in nanoseconds. This value has
to be chosen according to the conversion mode and the connected analog
source resistance (R_as) and capacitance (C_as). Refer the datasheet's
operating requirements. A safe default across a wide range of R_as and
C_as as well as conversion modes is 1000ns.
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- vref-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/vf610-clock.h>
adc@4003b000 {
compatible = "fsl,vf610-adc";
reg = <0x4003b000 0x1000>;
interrupts = <0 53 0x04>;
clocks = <&clks VF610_CLK_ADC0>;
clock-names = "adc";
fsl,adck-max-frequency = <30000000>, <40000000>, <20000000>;
vref-supply = <&reg_vcc_3v3_mcu>;
min-sample-time = <10000>;
};
...
Holt Integrated Circuits HI-8435 threshold detector bindings
Required properties:
- compatible: should be "holt,hi8435"
- reg: spi chip select number for the device
Recommended properties:
- spi-max-frequency: definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Optional properties:
- gpios: GPIO used for controlling the reset pin
Example:
sensor@0 {
compatible = "holt,hi8435";
reg = <0>;
gpios = <&gpio6 1 0>;
spi-max-frequency = <1000000>;
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/holt,hi8435.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Holt Integrated Circuits HI-8435 SPI threshold detector
maintainers:
- Vladimir Barinov <vladimir.barinov@cogentembedded.com>
description: |
Datasheet: http://www.holtic.com/documents/427-hi-8435_v-rev-lpdf.do
properties:
compatible:
const: holt,hi8435
reg:
maxItems: 1
gpios:
description:
GPIO used for controlling the reset pin
maxItems: 1
spi-max-frequency: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
threshold-detector@0 {
compatible = "holt,hi8435";
reg = <0>;
gpios = <&gpio6 1 0>;
spi-max-frequency = <1000000>;
};
};
...
Freescale imx7d ADC bindings
The devicetree bindings are for the ADC driver written for
imx7d SoC.
Required properties:
- compatible: Should be "fsl,imx7d-adc"
- reg: Offset and length of the register set for the ADC device
- interrupts: The interrupt number for the ADC device
- clocks: The root clock of the ADC controller
- clock-names: Must contain "adc", matching entry in the clocks property
- vref-supply: The regulator supply ADC reference voltage
- #io-channel-cells: Must be 1 as per ../iio-bindings.txt
Example:
adc1: adc@30610000 {
compatible = "fsl,imx7d-adc";
reg = <0x30610000 0x10000>;
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_ADC_ROOT_CLK>;
clock-names = "adc";
vref-supply = <&reg_vcc_3v3_mcu>;
#io-channel-cells = <1>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/lltc,ltc2497.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Linear Technology / Analog Devices LTC2497 ADC
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
description: |
16bit ADC supporting up to 16 single ended or 8 differential inputs.
I2C interface.
properties:
compatible:
const:
lltc,ltc2497
reg: true
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
adc@76 {
compatible = "lltc,ltc2497";
reg = <0x76>;
vref-supply = <&ltc2497_reg>;
#io-channel-cells = <1>;
};
};
...
NXP LPC1850 ADC bindings
Required properties:
- compatible: Should be "nxp,lpc1850-adc"
- reg: Offset and length of the register set for the ADC device
- interrupts: The interrupt number for the ADC device
- clocks: The root clock of the ADC controller
- vref-supply: The regulator supply ADC reference voltage
- resets: phandle to reset controller and line specifier
Example:
adc0: adc@400e3000 {
compatible = "nxp,lpc1850-adc";
reg = <0x400e3000 0x1000>;
interrupts = <17>;
clocks = <&ccu1 CLK_APB3_ADC0>;
vref-supply = <&reg_vdda>;
resets = <&rgu 40>;
};
* NXP LPC32xx SoC ADC controller
Required properties:
- compatible: must be "nxp,lpc3220-adc"
- reg: physical base address of the controller and length of memory mapped
region.
- interrupts: The ADC interrupt
Optional:
- vref-supply: The regulator supply ADC reference voltage, optional
for legacy reason, but highly encouraging to us in new device tree
Example:
adc@40048000 {
compatible = "nxp,lpc3220-adc";
reg = <0x40048000 0x1000>;
interrupt-parent = <&mic>;
interrupts = <39 0>;
vref-supply = <&vcc>;
};
* Linear Technology / Analog Devices LTC2497 ADC
Required properties:
- compatible: Must be "lltc,ltc2497"
- reg: Must contain the ADC I2C address
- vref-supply: The regulator supply for ADC reference voltage
Example:
ltc2497: adc@76 {
compatible = "lltc,ltc2497";
reg = <0x76>;
vref-supply = <&ltc2497_reg>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/marvell,berlin2-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Berlin 2 Analog to Digital Converter (ADC)
maintainers:
- Antoine Tenart <antoine.tenart@free-electrons.com>
description:
The Berlin ADC has 8 channels, with one connected to a temperature sensor.
It is part of the system controller register set. The ADC node should be a
sub-node of the system controller node.
properties:
compatible:
const: marvell,berlin2-adc
interrupts:
minItems: 2
maxItems: 2
interrupt-names:
items:
- const: adc
- const: tsen
"#io-channel-cells":
const: 1
required:
- compatible
- interrupts
- interrupt-names
additionalProperties: false
examples:
- |
sysctrl {
adc {
compatible = "marvell,berlin2-adc";
interrupt-parent = <&sic>;
interrupts = <12>, <14>;
interrupt-names = "adc", "tsen";
};
};
...
* Maxim max11100 Analog to Digital Converter (ADC)
Required properties:
- compatible: Should be "maxim,max11100"
- reg: the adc unit address
- vref-supply: phandle to the regulator that provides reference voltage
Optional properties:
- spi-max-frequency: SPI maximum frequency
Example:
max11100: adc@0 {
compatible = "maxim,max11100";
reg = <0>;
vref-supply = <&adc0_vref>;
spi-max-frequency = <240000>;
};
* MAX1117/MAX1118/MAX1119 8-bit, dual-channel ADCs
Required properties:
- compatible: Should be one of
* "maxim,max1117"
* "maxim,max1118"
* "maxim,max1119"
- reg: spi chip select number for the device
- (max1118 only) vref-supply: The regulator supply for ADC reference voltage
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "maxim,max1118";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <1000000>;
};
* Maxim max9611/max9612 current sense amplifier with 12-bits ADC interface
Maxim max9611/max9612 is an high-side current sense amplifier with integrated
12-bits ADC communicating over I2c bus.
The device node for this driver shall be a child of a I2c controller.
Required properties
- compatible: Should be "maxim,max9611" or "maxim,max9612"
- reg: The 7-bits long I2c address of the device
- shunt-resistor-micro-ohms: Value, in micro Ohms, of the current sense shunt
resistor
Example:
&i2c4 {
csa: adc@7c {
compatible = "maxim,max9611";
reg = <0x7c>;
shunt-resistor-micro-ohms = <5000>;
};
};
This device node describes a current sense amplifier sitting on I2c4 bus
with address 0x7c (read address is 0xf9, write address is 0xf8).
A sense resistor of 0,005 Ohm is installed between RS+ and RS- current-sensing
inputs.
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/maxim,max11100.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Maxim MAX11100 ADC
maintainers:
- Jacopo Mondi <jacopo@jmondi.org>
description: |
Single channel 16 bit ADC with SPI interface.
properties:
compatible:
const: maxim,max11100
reg:
maxItems: 1
vref-supply:
description: External reference, needed to establish input scaling.
spi-max-frequency:
minimum: 100000
maximum: 4800000
additionalProperties: false
required:
- compatible
- reg
- vref-supply
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "maxim,max11100";
reg = <0>;
vref-supply = <&adc_vref>;
spi-max-frequency = <240000>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/maxim,max1118.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Maxim MAX1118 and similar ADCs
maintainers:
- Akinobu Mita <akinobu.mita@gmail.com>
description: |
Dual channel 8bit ADCs.
properties:
compatible:
enum:
- maxim,max1117
- maxim,max1118
- maxim,max1119
reg:
maxItems: 1
spi-max-frequency:
maximum: 5000000
vref-supply:
description: External reference, needed to establish input scaling
if:
properties:
compatible:
contains:
const: maxim,max1118
then:
required:
- vref-supply
else:
properties:
vref-supply: false
required:
- compatible
- reg
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "maxim,max1118";
reg = <0>;
vref-supply = <&adc_vref>;
spi-max-frequency = <1000000>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/maxim,max9611.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Maxim MAX9611 and similar current sense amplifiers with integrated ADCs
maintainers:
- Jacopo Mondi <jacopo@jmondi.org>
description: |
These devices combine a high-side current sense amplifier with a 12 bit ADC.
They have an i2c interface.
properties:
compatible:
enum:
- maxim,max9611
- maxim,max9612
reg:
maxItems: 1
shunt-resistor-micro-ohms:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
Value in micro Ohms of the shunt resistor connected between the RS+ and
RS- inputs, across which the current is measured. Value needed to compute
the scaling of the measured current.
additionalProperties: false
required:
- compatible
- reg
- shunt-resistor-micro-ohms
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
adc@7c {
compatible = "maxim,max9611";
reg = <0x7c>;
shunt-resistor-micro-ohms = <5000>;
};
};
...
* Microchip Analog to Digital Converter (ADC)
The node for this driver must be a child node of a SPI controller, hence
all mandatory properties described in
Documentation/devicetree/bindings/spi/spi-bus.txt
must be specified.
Required properties:
- compatible: Must be one of the following, depending on the
model:
"mcp3001" (DEPRECATED)
"mcp3002" (DEPRECATED)
"mcp3004" (DEPRECATED)
"mcp3008" (DEPRECATED)
"mcp3201" (DEPRECATED)
"mcp3202" (DEPRECATED)
"mcp3204" (DEPRECATED)
"mcp3208" (DEPRECATED)
"mcp3301" (DEPRECATED)
"microchip,mcp3001"
"microchip,mcp3002"
"microchip,mcp3004"
"microchip,mcp3008"
"microchip,mcp3201"
"microchip,mcp3202"
"microchip,mcp3204"
"microchip,mcp3208"
"microchip,mcp3301"
"microchip,mcp3550-50"
"microchip,mcp3550-60"
"microchip,mcp3551"
"microchip,mcp3553"
NOTE: The use of the compatibles with no vendor prefix
is deprecated and only listed because old DT use them.
- spi-cpha, spi-cpol (boolean):
Either SPI mode (0,0) or (1,1) must be used, so specify
none or both of spi-cpha, spi-cpol. The MCP3550/1/3
is more efficient in mode (1,1) as only 3 instead of
4 bytes need to be read from the ADC, but not all SPI
masters support it.
- vref-supply: Phandle to the external reference voltage supply.
Examples:
spi_controller {
mcp3x0x@0 {
compatible = "microchip,mcp3002";
reg = <0>;
spi-max-frequency = <1000000>;
vref-supply = <&vref_reg>;
};
};
* Microchip mcp3421/2/3/4/6/7/8 chip family (ADC)
Required properties:
- compatible: Should be
"microchip,mcp3421" or
"microchip,mcp3422" or
"microchip,mcp3423" or
"microchip,mcp3424" or
"microchip,mcp3425" or
"microchip,mcp3426" or
"microchip,mcp3427" or
"microchip,mcp3428"
- reg: I2C address for the device
Example:
adc@0 {
compatible = "microchip,mcp3424";
reg = <0x68>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/microchip,mcp3201.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip mcp3201 and similar ADCs
maintainers:
- Oskar Andero <oskar.andero@gmail.com>
description: |
Family of simple ADCs with an I2C inteface.
properties:
compatible:
enum:
- microchip,mcp3001
- microchip,mcp3002
- microchip,mcp3004
- microchip,mcp3008
- microchip,mcp3201
- microchip,mcp3202
- microchip,mcp3204
- microchip,mcp3208
- microchip,mcp3301
- microchip,mcp3550-50
- microchip,mcp3550-60
- microchip,mcp3551
- microchip,mcp3553
reg:
maxItems: 1
spi-max-frequency: true
spi-cpha: true
spi-cpol: true
vref-supply:
description: External reference.
"#io-channel-cells":
const: 1
dependencies:
spi-cpol: [ spi-cpha ]
spi-cpha: [ spi-cpol ]
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "microchip,mcp3002";
reg = <0>;
vref-supply = <&vref_reg>;
spi-cpha;
spi-cpol;
#io-channel-cells = <1>;
};
adc@1 {
compatible = "microchip,mcp3002";
reg = <1>;
vref-supply = <&vref_reg>;
spi-max-frequency = <1500000>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/motorola,cpcap-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Motorola CPCAP PMIC ADC binding
maintainers:
- Tony Lindgren <tony@atomide.com>
description:
On Motorola phones like droid 4 there is a custom CPCAP PMIC. This PMIC
has ADCs that are used for battery charging and USB PHY VBUS and ID pin
detection.
properties:
compatible:
enum:
- motorola,cpcap-adc
- motorola,mapphone-cpcap-adc
interrupts:
maxItems: 1
interrupt-names:
const: adcdone
"#io-channel-cells":
const: 1
required:
- compatible
- interrupts
- "#io-channel-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
pmic {
#address-cells = <1>;
#size-cells = <0>;
adc {
compatible = "motorola,mapphone-cpcap-adc";
interrupt-parent = <&cpcap>;
interrupts = <8 IRQ_TYPE_NONE>;
interrupt-names = "adcdone";
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/nuvoton,nau7802.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Nuvoton NAU7802 I2c Analog to Digital Converter (ADC)
maintainers:
- Alexandre Belloni <alexandre.belloni@bootlin.com>
- Maxime Ripard <mripard@kernel.org>
properties:
compatible:
const: nuvoton,nau7802
reg:
maxItems: 1
interrupts:
maxItems: 1
nuvoton,vldo:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Internal reference voltage in millivolts to be configured.
minimum: 2400
maximum: 4500
"#io-channel-cells":
const: 1
required:
- compatible
- reg
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
nau7802@2a {
compatible = "nuvoton,nau7802";
reg = <0x2a>;
nuvoton,vldo = <3000>;
};
};
...
Nuvoton NPCM Analog to Digital Converter (ADC)
The NPCM ADC is a 10-bit converter for eight channel inputs.
Required properties:
- compatible: "nuvoton,npcm750-adc" for the NPCM7XX BMC.
- reg: specifies physical base address and size of the registers.
- interrupts: Contain the ADC interrupt with flags for falling edge.
- resets : phandle to the reset control for this device.
Optional properties:
- clocks: phandle of ADC reference clock, in case the clock is not
added the ADC will use the default ADC sample rate.
- vref-supply: The regulator supply ADC reference voltage, in case the
vref-supply is not added the ADC will use internal voltage
reference.
Example:
adc: adc@f000c000 {
compatible = "nuvoton,npcm750-adc";
reg = <0xf000c000 0x8>;
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk NPCM7XX_CLK_ADC>;
resets = <&rstc NPCM7XX_RESET_IPSRST1 NPCM7XX_RESET_ADC>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/nuvoton,npcm750-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Nuvoton NPCM BMC Analog to Digital Converter (ADC)
maintainers:
- Tomer Maimon <tmaimon77@gmail.com>
description:
The NPCM ADC is a 10-bit converter for eight channel inputs.
properties:
compatible:
const: nuvoton,npcm750-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
description: ADC interrupt, should be set for falling edge.
resets:
maxItems: 1
clocks:
maxItems: 1
description: If not provided the defulat ADC sample rate will be used.
vref-supply:
description: If not supplied, the internal voltage reference will be used.
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
- resets
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/nuvoton,npcm7xx-clock.h>
#include <dt-bindings/reset/nuvoton,npcm7xx-reset.h>
soc {
#address-cells = <1>;
#size-cells = <1>;
adc@f000c000 {
compatible = "nuvoton,npcm750-adc";
reg = <0xf000c000 0x8>;
interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk NPCM7XX_CLK_ADC>;
resets = <&rstc NPCM7XX_RESET_IPSRST1 NPCM7XX_RESET_ADC>;
};
};
...
* Nuvoton NAU7802 Analog to Digital Converter (ADC)
Required properties:
- compatible: Should be "nuvoton,nau7802"
- reg: Should contain the ADC I2C address
Optional properties:
- nuvoton,vldo: Internal reference voltage in millivolts to be
configured valid values are between 2400 mV and 4500 mV.
- interrupts: IRQ line for the ADC. If not used the driver will use
polling.
Example:
adc2: nau7802@2a {
compatible = "nuvoton,nau7802";
reg = <0x2a>;
nuvoton,vldo = <3000>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/nxp,lpc1850-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP LPC1850 ADC bindings
maintainers:
- Joachim Eastwood <manabian@gmail.com>
description:
Supports the ADC found on the LPC1850 SoC.
properties:
compatible:
const: nxp,lpc1850-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
vref-supply: true
resets:
maxItems: 1
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
- clocks
- vref-supply
- resets
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/lpc18xx-ccu.h>
soc {
#address-cells = <1>;
#size-cells = <1>;
adc@400e3000 {
compatible = "nxp,lpc1850-adc";
reg = <0x400e3000 0x1000>;
interrupts = <17>;
clocks = <&ccu1 CLK_APB3_ADC0>;
vref-supply = <&reg_vdda>;
resets = <&rgu 40>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/nxp,lpc3220-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP LPC3220 SoC ADC controller
maintainers:
- Gregory Clement <gregory.clement@bootlin.com>
description:
This hardware block has been used on several LPC32XX SoCs.
properties:
compatible:
const: nxp,lpc3220-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
additionalProperties: false
examples:
- |
soc {
#address-cells = <1>;
#size-cells = <1>;
adc@40048000 {
compatible = "nxp,lpc3220-adc";
reg = <0x40048000 0x1000>;
interrupt-parent = <&mic>;
interrupts = <39 0>;
vref-supply = <&vcc>;
};
};
...
...@@ -41,7 +41,10 @@ properties: ...@@ -41,7 +41,10 @@ properties:
maxItems: 2 maxItems: 2
interrupts: interrupts:
maxItems: 1 description:
ADC interrupt followed by optional touchscreen interrupt.
minItems: 1
maxItems: 2
"#io-channel-cells": "#io-channel-cells":
const: 1 const: 1
...@@ -83,7 +86,6 @@ allOf: ...@@ -83,7 +86,6 @@ allOf:
- samsung,exynos-adc-v2 - samsung,exynos-adc-v2
- samsung,exynos3250-adc - samsung,exynos3250-adc
- samsung,exynos4212-adc - samsung,exynos4212-adc
- samsung,s5pv210-adc
then: then:
required: required:
- samsung,syscon-phandle - samsung,syscon-phandle
...@@ -112,6 +114,15 @@ allOf: ...@@ -112,6 +114,15 @@ allOf:
items: items:
- const: adc - const: adc
- if:
required:
- has-touchscreen
then:
properties:
interrupts:
minItems: 2
maxItems: 2
examples: examples:
- | - |
adc: adc@12d10000 { adc: adc@12d10000 {
......
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/sprd,sc2720-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Spreadtrum SC27XX series PMICs ADC binding
maintainers:
- Baolin Wang <baolin.wang7@gmail.com>
description:
Supports the ADC found on these PMICs.
properties:
compatible:
enum:
- sprd,sc2720-adc
- sprd,sc2721-adc
- sprd,sc2723-adc
- sprd,sc2730-adc
- sprd,sc2731-adc
reg:
maxItems: 1
interrupts:
maxItems: 1
"#io-channel-cells":
const: 1
hwlocks:
maxItems: 1
nvmem-cells:
maxItems: 2
nvmem-cell-names:
items:
- const: big_scale_calib
- const: small_scale_calib
required:
- compatible
- reg
- interrupts
- "#io-channel-cells"
- hwlocks
- nvmem-cells
- nvmem-cell-names
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
pmic {
#address-cells = <1>;
#size-cells = <0>;
adc@480 {
compatible = "sprd,sc2731-adc";
reg = <0x480>;
interrupt-parent = <&sc2731_pmic>;
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
hwlocks = <&hwlock 4>;
nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
nvmem-cell-names = "big_scale_calib", "small_scale_calib";
};
};
...
Spreadtrum SC27XX series PMICs ADC binding
Required properties:
- compatible: Should be one of the following.
"sprd,sc2720-adc"
"sprd,sc2721-adc"
"sprd,sc2723-adc"
"sprd,sc2730-adc"
"sprd,sc2731-adc"
- reg: The address offset of ADC controller.
- interrupt-parent: The interrupt controller.
- interrupts: The interrupt number for the ADC device.
- #io-channel-cells: Number of cells in an IIO specifier.
- hwlocks: Reference to a phandle of a hwlock provider node.
- nvmem-cells: A phandle to the calibration cells provided by eFuse device.
- nvmem-cell-names: Should be "big_scale_calib", "small_scale_calib".
Example:
sc2731_pmic: pmic@0 {
compatible = "sprd,sc2731";
reg = <0>;
spi-max-frequency = <26000000>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
#interrupt-cells = <2>;
#address-cells = <1>;
#size-cells = <0>;
pmic_adc: adc@480 {
compatible = "sprd,sc2731-adc";
reg = <0x480>;
interrupt-parent = <&sc2731_pmic>;
interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
hwlocks = <&hwlock 4>;
nvmem-cells = <&adc_big_scale>, <&adc_small_scale>;
nvmem-cell-names = "big_scale_calib", "small_scale_calib";
};
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/st,stmpe-adc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ADC on an STMPE multifunction device.
maintainers:
- Stefan Agner <stefan@agner.ch>
description:
This ADC forms part of an ST microelectronics STMPE multifunction device .
The ADC is shared with the STMPE touchscreen. As a result some ADC related
settings are specified in the parent node.
The node name myst be stmpe_adc and should be a child node of the stmpe node
to which it belongs.
properties:
compatible:
const: st,stmpe-adc
st,norequest-mask:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Bitmask specifying which ADC channels should _not_ be
requestable due to different usage (e.g. touch).
"#io-channel-cells":
const: 1
required:
- compatible
additionalProperties: false
examples:
- |
stmpe {
stmpe_adc {
compatible = "st,stmpe-adc";
st,norequest-mask = <0x0F>; /* dont use ADC CH3-0 */
};
};
...
STMPE ADC driver
----------------
Required properties:
- compatible: "st,stmpe-adc"
Optional properties:
Note that the ADC is shared with the STMPE touchscreen. ADC related settings
have to be done in the mfd.
- st,norequest-mask: bitmask specifying which ADC channels should _not_ be
requestable due to different usage (e.g. touch)
Node name must be stmpe_adc and should be child node of stmpe node to
which it belongs.
Example:
stmpe_adc {
compatible = "st,stmpe-adc";
st,norequest-mask = <0x0F>; /* dont use ADC CH3-0 */
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,adc0832.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADC0832 and similar ADCs
maintainers:
- Akinobu Mita <akinobu.mita@gmail.com>
description: |
8 bit ADCs with 1, 2, 4 or 8 inputs for single ended or differential
conversion.
properties:
compatible:
enum:
- ti,adc0831
- ti,adc0832
- ti,adc0834
- ti,adc0838
reg:
maxItems: 1
spi-max-frequency: true
vref-supply:
description: External reference, needed to establish input scaling
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,adc0832";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <200000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,adc108s102.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADC108S102 and ADC128S102
maintainers:
- Bogdan Pricop <bogdan.pricop@emutex.com>
description: |
Family of 8 channel, 10/12 bit, SPI, single ended ADCs.
properties:
compatible:
const:
ti,adc108s102
reg: true
vref-supply: true
spi-max-frequency: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells= <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,adc108s102";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <1000000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,adc12138.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADC12138 and similar self-calibrating ADCs
maintainers:
- Akinobu Mita <akinobu.mita@gmail.com>
description: |
13 bit ADCs with 1, 2 or 8 inputs and self calibrating circuitry to
correct for linearity, zero and full scale errors.
properties:
compatible:
enum:
- ti,adc12130
- ti,adc12132
- ti,adc12138
reg:
maxItems: 1
interrupts:
maxItems: 1
description: End of Conversion (EOC) interrupt
clocks:
maxItems: 1
description: Conversion clock input.
spi-max-frequency: true
vref-p-supply:
description: The regulator supply for positive analog voltage reference
vref-n-supply:
description: |
The regulator supply for negative analog voltage reference
(Note that this must not go below GND or exceed vref-p)
If not specified, this is assumed to be analog ground.
ti,acquisition-time:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [ 6, 10, 18, 34 ]
description: |
The number of conversion clock periods for the S/H's acquisition time.
For high source impedances, this value can be increased to 18 or 34.
For less ADC accuracy and/or slower CCLK frequencies this value may be
decreased to 6. See section 6.0 INPUT SOURCE RESISTANCE in the
datasheet for details.
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- interrupts
- clocks
- vref-p-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,adc12138";
reg = <0>;
interrupts = <28 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gpio1>;
clocks = <&cclk>;
vref-p-supply = <&ldo4_reg>;
spi-max-frequency = <5000000>;
ti,acquisition-time = <6>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,adc128s052.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADC128S052 and similar ADCs
maintainers:
- Angelo Compagnucci <angelo.compagnucci@gmail.com>
description: |
Family of 12 bit SPI ADCs with 2 to 8 channels with a range of different
target sample rates.
properties:
compatible:
enum:
- ti,adc122s021
- ti,adc122s051
- ti,adc122s101
- ti,adc124s021
- ti,adc124s051
- ti,adc124s101
- ti,adc128s052
reg:
maxItems: 1
spi-max-frequency: true
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,adc128s052";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <1000000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,adc161s626.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADC141S626 and ADC161S626 ADCs
maintainers:
- Matt Ranostay <matt.ranostay@konsulko.com>
description: |
Single channel 14/16bit differential ADCs
properties:
compatible:
enum:
- ti,adc141s626
- ti,adc161s626
reg:
maxItems: 1
spi-max-frequency: true
vdda-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,adc161s626";
vdda-supply = <&vdda_fixed>;
reg = <0>;
spi-max-frequency = <4300000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,ads1015.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: TI ADS1015 4 channel I2C analog to digital converter
maintainers:
- Daniel Baluta <daniel.baluta@nxp.com>
description: |
Datasheet at: https://www.ti.com/lit/gpn/ads1015
Supports both single ended and differential channels.
properties:
compatible:
const: ti,ads1015
reg:
maxItems: 1
"#address-cells":
const: 1
"#size-cells":
const: 0
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
additionalProperties: false
patternProperties:
"^channel@[0-7]+$":
type: object
description:
Child nodes needed for each channel that the platform uses.
properties:
reg:
description: |
0: Voltage over AIN0 and AIN1.
1: Voltage over AIN0 and AIN3.
2: Voltage over AIN1 and AIN3.
3: Voltage over AIN2 and AIN3.
4: Voltage over AIN0 and GND.
5: Voltage over AIN1 and GND.
6: Voltage over AIN2 and GND.
7: Voltage over AIN3 and GND.
items:
- minimum: 0
maximum: 7
ti,gain:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 5
description: |
pga is the programmable gain amplifier (values are full scale)
0: +/- 6.144 V
1: +/- 4.096 V
2: +/- 2.048 V (default)
3: +/- 1.024 V
4: +/- 0.512 V
5: +/- 0.256 V
ti,datarate:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 6
description: |
Data acquisition rate in samples per second
0: 128
1: 250
2: 490
3: 920
4: 1600 (default)
5: 2400
6: 3300
required:
- reg
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
adc@49 {
compatible = "ti,ads1015";
reg = <0x49>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
};
channel@4 {
reg = <4>;
ti,gain = <3>;
ti,datarate = <5>;
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,ads7950.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADS7950 and similar ADCs
maintainers:
- David Lechner <david@lechnology.com>
description: |
Family of 4-16 channel, 8-12 bit ADCs with SPI interface.
properties:
compatible:
enum:
- ti,ads7950
- ti,ads7951
- ti,ads7952
- ti,ads7953
- ti,ads7954
- ti,ads7955
- ti,ads7956
- ti,ads7957
- ti,ads7958
- ti,ads7959
- ti,ads7960
- ti,ads7961
reg:
maxItems: 1
spi-max-frequency:
maximum: 20000000
vref-supply:
description: Supplies the 2.5V or 5V reference voltage
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
- "#io-channel-cells"
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,ads7957";
reg = <0>;
vref-supply = <&refin_supply>;
spi-max-frequency = <10000000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,ads8344.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments ADS8344 ADC
maintainers:
- Gregory Clement <gregory.clement@bootlin.com>
description: |
16bit 8-channel ADC with single ended inputs.
properties:
compatible:
const: ti,ads8344
reg:
maxItems: 1
spi-max-frequency: true
vref-supply:
description: Supply the 2.5V or 5V reference voltage
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,ads8344";
reg = <0>;
vref-supply = <&refin_supply>;
spi-max-frequency = <10000000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,tlc4541.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments TLC4541 and similar ADCs
maintainers:
- Phil Reid <preid@electromag.com.au>
description: |
14/16bit single channel ADC with SPI interface.
properties:
compatible:
enum:
- ti,tlc3541
- ti,tlc4541
reg:
maxItems: 1
spi-max-frequency: true
vref-supply: true
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- vref-supply
additionalProperties: false
examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "ti,tlc4541";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <200000>;
#io-channel-cells = <1>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,twl4030-madc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MADC subsystem in the TWL4030 power module
maintainers:
- Sebastian Reichel <sre@kernel.org>
description:
The MADC subsystem in the TWL4030 consists of a 10-bit ADC
combined with a 16-input analog multiplexer.
properties:
compatible:
const: ti,twl4030-madc
interrupts:
maxItems: 1
ti,system-uses-second-madc-irq:
type: boolean
description:
Set if the second madc irq register should be used, which is intended
to be used by Co-Processors (e.g. a modem).
"#io-channel-cells":
const: 1
required:
- compatible
- interrupts
- "#io-channel-cells"
additionalProperties: false
examples:
- |
twl {
madc {
compatible = "ti,twl4030-madc";
interrupts = <3>;
#io-channel-cells = <1>;
};
};
...
* Texas Instruments' ADC0831/ADC0832/ADC0832/ADC0838
Required properties:
- compatible: Should be one of
* "ti,adc0831"
* "ti,adc0832"
* "ti,adc0834"
* "ti,adc0838"
- reg: spi chip select number for the device
- vref-supply: The regulator supply for ADC reference voltage
- spi-max-frequency: Max SPI frequency to use (< 400000)
Example:
adc@0 {
compatible = "ti,adc0832";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <200000>;
};
* Texas Instruments' ADC108S102 and ADC128S102 ADC chip
Required properties:
- compatible: Should be "ti,adc108s102"
- reg: spi chip select number for the device
- vref-supply: The regulator supply for ADC reference voltage
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "ti,adc108s102";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <1000000>;
};
* Texas Instruments' ADC12130/ADC12132/ADC12138
Required properties:
- compatible: Should be one of
* "ti,adc12130"
* "ti,adc12132"
* "ti,adc12138"
- reg: SPI chip select number for the device
- interrupts: Should contain interrupt for EOC (end of conversion)
- clocks: phandle to conversion clock input
- spi-max-frequency: Definision as per
Documentation/devicetree/bindings/spi/spi-bus.txt
- vref-p-supply: The regulator supply for positive analog voltage reference
Optional properties:
- vref-n-supply: The regulator supply for negative analog voltage reference
(Note that this must not go below GND or exceed vref-p)
If not specified, this is assumed to be analog ground.
- ti,acquisition-time: The number of conversion clock periods for the S/H's
acquisition time. Should be one of 6, 10, 18, 34. If not specified,
default value of 10 is used.
For high source impedances, this value can be increased to 18 or 34.
For less ADC accuracy and/or slower CCLK frequencies this value may be
decreased to 6. See section 6.0 INPUT SOURCE RESISTANCE in the
datasheet for details.
Example:
adc@0 {
compatible = "ti,adc12138";
reg = <0>;
interrupts = <28 IRQ_TYPE_EDGE_RISING>;
interrupt-parent = <&gpio1>;
clocks = <&cclk>;
vref-p-supply = <&ldo4_reg>;
spi-max-frequency = <5000000>;
ti,acquisition-time = <6>;
};
* Texas Instruments' ADC128S052, ADC122S021 and ADC124S021 ADC chip
Required properties:
- compatible: Should be one of:
- "ti,adc128s052"
- "ti,adc122s021"
- "ti,adc122s051"
- "ti,adc122s101"
- "ti,adc124s021"
- "ti,adc124s051"
- "ti,adc124s101"
- reg: spi chip select number for the device
- vref-supply: The regulator supply for ADC reference voltage
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "ti,adc128s052";
reg = <0>;
vref-supply = <&vdd_supply>;
spi-max-frequency = <1000000>;
};
* Texas Instruments ADC141S626 and ADC161S626 chips
Required properties:
- compatible: Should be "ti,adc141s626" or "ti,adc161s626"
- reg: spi chip select number for the device
- vdda-supply: supply voltage to VDDA pin
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "ti,adc161s626";
vdda-supply = <&vdda_fixed>;
reg = <0>;
spi-max-frequency = <4300000>;
};
* Texas Instruments ADS7950 family of A/DC chips
Required properties:
- compatible: Must be one of "ti,ads7950", "ti,ads7951", "ti,ads7952",
"ti,ads7953", "ti,ads7954", "ti,ads7955", "ti,ads7956", "ti,ads7957",
"ti,ads7958", "ti,ads7959", "ti,ads7960", or "ti,ads7961"
- reg: SPI chip select number for the device
- #io-channel-cells: Must be 1 as per ../iio-bindings.txt
- vref-supply: phandle to a regulator node that supplies the 2.5V or 5V
reference voltage
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "ti,ads7957";
reg = <0>;
#io-channel-cells = <1>;
vref-supply = <&refin_supply>;
spi-max-frequency = <10000000>;
};
* Texas Instruments ADS8344 A/DC chip
Required properties:
- compatible: Must be "ti,ads8344"
- reg: SPI chip select number for the device
- vref-supply: phandle to a regulator node that supplies the
reference voltage
Recommended properties:
- spi-max-frequency: Definition as per
Documentation/devicetree/bindings/spi/spi-bus.txt
Example:
adc@0 {
compatible = "ti,ads8344";
reg = <0>;
vref-supply = <&refin_supply>;
spi-max-frequency = <10000000>;
};
* TWL4030 Monitoring Analog to Digital Converter (MADC)
The MADC subsystem in the TWL4030 consists of a 10-bit ADC
combined with a 16-input analog multiplexer.
Required properties:
- compatible: Should contain "ti,twl4030-madc".
- interrupts: IRQ line for the MADC submodule.
- #io-channel-cells: Should be set to <1>.
Optional properties:
- ti,system-uses-second-madc-irq: boolean, set if the second madc irq register
should be used, which is intended to be used
by Co-Processors (e.g. a modem).
Example:
&twl {
madc {
compatible = "ti,twl4030-madc";
interrupts = <3>;
#io-channel-cells = <1>;
};
};
Freescale vf610 Analog to Digital Converter bindings
The devicetree bindings are for the new ADC driver written for
vf610/i.MX6slx and upward SoCs from Freescale.
Required properties:
- compatible: Should contain "fsl,vf610-adc"
- reg: Offset and length of the register set for the device
- interrupts: Should contain the interrupt for the device
- clocks: The clock is needed by the ADC controller, ADC clock source is ipg clock.
- clock-names: Must contain "adc", matching entry in the clocks property.
- vref-supply: The regulator supply ADC reference voltage.
Recommended properties:
- fsl,adck-max-frequency: Maximum frequencies according to datasheets operating
requirements. Three values are required, depending on conversion mode:
- Frequency in normal mode (ADLPC=0, ADHSC=0)
- Frequency in high-speed mode (ADLPC=0, ADHSC=1)
- Frequency in low-power mode (ADLPC=1, ADHSC=0)
- min-sample-time: Minimum sampling time in nanoseconds. This value has
to be chosen according to the conversion mode and the connected analog
source resistance (R_as) and capacitance (C_as). Refer the datasheet's
operating requirements. A safe default across a wide range of R_as and
C_as as well as conversion modes is 1000ns.
Example:
adc0: adc@4003b000 {
compatible = "fsl,vf610-adc";
reg = <0x4003b000 0x1000>;
interrupts = <0 53 0x04>;
clocks = <&clks VF610_CLK_ADC0>;
clock-names = "adc";
fsl,adck-max-frequency = <30000000>, <40000000>,
<20000000>;
vref-supply = <&reg_vcc_3v3_mcu>;
};
...@@ -19,6 +19,8 @@ description: | ...@@ -19,6 +19,8 @@ description: |
http://www.atlas-scientific.com/_files/_datasheets/_oem/pH_oem_datasheet.pdf http://www.atlas-scientific.com/_files/_datasheets/_oem/pH_oem_datasheet.pdf
http://www.atlas-scientific.com/_files/_datasheets/_oem/RTD_oem_datasheet.pdf http://www.atlas-scientific.com/_files/_datasheets/_oem/RTD_oem_datasheet.pdf
http://www.atlas-scientific.com/_files/_datasheets/_probe/EZO_CO2_Datasheet.pdf http://www.atlas-scientific.com/_files/_datasheets/_probe/EZO_CO2_Datasheet.pdf
https://www.atlas-scientific.com/files/EZO_O2_datasheet.pdf
https://www.atlas-scientific.com/files/EZO_HUM_Datasheet.pdf
properties: properties:
compatible: compatible:
...@@ -29,6 +31,8 @@ properties: ...@@ -29,6 +31,8 @@ properties:
- atlas,ph-sm - atlas,ph-sm
- atlas,rtd-sm - atlas,rtd-sm
- atlas,co2-ezo - atlas,co2-ezo
- atlas,o2-ezo
- atlas,hum-ezo
reg: reg:
maxItems: 1 maxItems: 1
......
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: "http://devicetree.org/schemas/iio/dac/lltc,ltc2632.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: Linear Technology LTC263x 12-/10-/8-Bit Rail-to-Rail DAC
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
description: |
Bindings for the Linear Technology LTC2632/2634/2636 DAC
Datasheet can be found here: https://www.analog.com/media/en/technical-documentation/data-sheets/LTC263[246].pdf
properties:
compatible:
enum:
- lltc,ltc2632-l12
- lltc,ltc2632-l10
- lltc,ltc2632-l8
- lltc,ltc2632-h12
- lltc,ltc2632-h10
- lltc,ltc2632-h8
- lltc,ltc2634-l12
- lltc,ltc2634-l10
- lltc,ltc2634-l8
- lltc,ltc2634-h12
- lltc,ltc2634-h10
- lltc,ltc2634-h8
- lltc,ltc2636-l12
- lltc,ltc2636-l10
- lltc,ltc2636-l8
- lltc,ltc2636-h12
- lltc,ltc2636-h10
- lltc,ltc2636-h8
reg:
maxItems: 1
spi-max-frequency:
maximum: 2000000
vref-supply:
description:
Phandle to the external reference voltage supply. This should
only be set if there is an external reference voltage connected to the VREF
pin. If the property is not set the internal reference is used.
required:
- compatible
- reg
additionalProperties: false
examples:
- |
vref: regulator-vref {
compatible = "regulator-fixed";
regulator-name = "vref-ltc2632";
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1250000>;
regulator-always-on;
};
spi {
#address-cells = <1>;
#size-cells = <0>;
dac@0 {
compatible = "lltc,ltc2632";
reg = <0>; /* CS0 */
spi-max-frequency = <1000000>;
vref-supply = <&vref>;
};
};
...
Linear Technology LTC2632/2634/2636 DAC
Required properties:
- compatible: Has to contain one of the following:
lltc,ltc2632-l12
lltc,ltc2632-l10
lltc,ltc2632-l8
lltc,ltc2632-h12
lltc,ltc2632-h10
lltc,ltc2632-h8
lltc,ltc2634-l12
lltc,ltc2634-l10
lltc,ltc2634-l8
lltc,ltc2634-h12
lltc,ltc2634-h10
lltc,ltc2634-h8
lltc,ltc2636-l12
lltc,ltc2636-l10
lltc,ltc2636-l8
lltc,ltc2636-h12
lltc,ltc2636-h10
lltc,ltc2636-h8
Property rules described in Documentation/devicetree/bindings/spi/spi-bus.txt
apply. In particular, "reg" and "spi-max-frequency" properties must be given.
Optional properties:
- vref-supply: Phandle to the external reference voltage supply. This should
only be set if there is an external reference voltage connected to the VREF
pin. If the property is not set the internal reference is used.
Example:
vref: regulator-vref {
compatible = "regulator-fixed";
regulator-name = "vref-ltc2632";
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1250000>;
regulator-always-on;
};
spi_master {
dac: ltc2632@0 {
compatible = "lltc,ltc2632-l12";
reg = <0>; /* CS0 */
spi-max-frequency = <1000000>;
vref-supply = <&vref>; /* optional */
};
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2020 Analog Devices Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/gyroscope/adi,adxrs290.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices ADXRS290 Dual-Axis MEMS Gyroscope
maintainers:
- Nishant Malpani <nish.malpani25@gmail.com>
description: |
Bindings for the Analog Devices ADXRS290 dual-axis MEMS gyroscope device.
https://www.analog.com/media/en/technical-documentation/data-sheets/ADXRS290.pdf
properties:
compatible:
const: adi,adxrs290
reg:
maxItems: 1
spi-max-frequency:
maximum: 5000000
spi-cpol: true
spi-cpha: true
interrupts:
maxItems: 1
required:
- compatible
- reg
- spi-max-frequency
- spi-cpol
- spi-cpha
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
gyro@0 {
compatible = "adi,adxrs290";
reg = <0>;
spi-max-frequency = <5000000>;
spi-cpol;
spi-cpha;
interrupt-parent = <&gpio>;
interrupts = <25 IRQ_TYPE_EDGE_RISING>;
};
};
...
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/humidity/ti,hdc2010.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: HDC2010/HDC2080 humidity and temperature iio sensors
maintainers:
- Eugene Zaikonnikov <ez@norophonic.com>
description: |
Relative humidity and tempereature sensors on I2C bus
Datasheets are available at:
http://www.ti.com/product/HDC2010/datasheet
http://www.ti.com/product/HDC2080/datasheet
properties:
compatible:
enum:
- ti,hdc2010
- ti,hdc2080
vdd-supply:
maxItems: 1
reg:
maxItems: 1
required:
- compatible
- reg
examples:
- |
i2c0 {
#address-cells = <1>;
#size-cells = <0>;
humidity@40 {
compatible = "ti,hdc2010";
reg = <0x40>;
};
};
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/light/ams,as73211.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: AMS AS73211 JENCOLOR(R) Digital XYZ Sensor
maintainers:
- Christian Eggers <ceggers@arri.de>
description: |
XYZ True Color Sensor with I2C Interface
https://ams.com/documents/20143/36005/AS73211_DS000556_3-01.pdf/a65474c0-b302-c2fd-e30a-c98df87616df
properties:
compatible:
enum:
- ams,as73211
reg:
description:
I2C address of the device (0x74...0x77).
maxItems: 1
interrupts:
description:
Interrupt specifier for the READY interrupt generated by the device.
maxItems: 1
required:
- compatible
- reg
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
as73211@74 {
compatible = "ams,as73211";
reg = <0x74>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_color_sensor>;
interrupt-parent = <&gpio2>;
interrupts = <19 IRQ_TYPE_EDGE_RISING>; /* READY */
};
};
...
...@@ -24,6 +24,10 @@ properties: ...@@ -24,6 +24,10 @@ properties:
- vishay,vcnl4020 - vishay,vcnl4020
- vishay,vcnl4040 - vishay,vcnl4040
- vishay,vcnl4200 - vishay,vcnl4200
interrupts:
maxItems: 1
reg: reg:
maxItems: 1 maxItems: 1
......
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/proximity/semtech,sx9310.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Semtech's SX9310 capacitive proximity sensor
maintainers:
- Daniel Campello <campello@chromium.org>
description: |
Semtech's SX9310/SX9311 capacitive proximity/button solution.
Specifications about the devices can be found at:
https://www.semtech.com/products/smart-sensing/sar-sensors/sx9310
properties:
compatible:
enum:
- semtech,sx9310
- semtech,sx9311
reg:
maxItems: 1
interrupts:
description:
The sole interrupt generated by the device used to announce the
preceding reading request has finished and that data is
available or that a close/far proximity event has happened.
maxItems: 1
vdd-supply:
description: Main power supply
svdd-supply:
description: Host interface power supply
"#io-channel-cells":
const: 1
required:
- compatible
- reg
- "#io-channel-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
proximity@28 {
compatible = "semtech,sx9310";
reg = <0x28>;
interrupt-parent = <&pio>;
interrupts = <5 IRQ_TYPE_LEVEL_LOW 5>;
vdd-supply = <&pp3300_a>;
svdd-supply = <&pp1800_prox>;
#io-channel-cells = <1>;
};
};
...@@ -4,9 +4,15 @@ Required properties: ...@@ -4,9 +4,15 @@ Required properties:
- compatible: must be "st,vl53l0x" - compatible: must be "st,vl53l0x"
- reg: i2c address where to find the device - reg: i2c address where to find the device
Optional properties:
- interrupts: Interrupt for notifying that new measurement is ready.
If no interrupt is specified, polling is used.
Example: Example:
vl53l0x@29 { vl53l0x@29 {
compatible = "st,vl53l0x"; compatible = "st,vl53l0x";
reg = <0x29>; reg = <0x29>;
interrupt-parent = <&gpio>;
interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
}; };
...@@ -132,6 +132,22 @@ properties: ...@@ -132,6 +132,22 @@ properties:
- mcube,mc3230 - mcube,mc3230
# MEMSIC 2-axis 8-bit digital accelerometer # MEMSIC 2-axis 8-bit digital accelerometer
- memsic,mxc6225 - memsic,mxc6225
# Microchip differential I2C ADC, 1 Channel, 18 bit
- microchip,mcp3421
# Microchip differential I2C ADC, 2 Channel, 18 bit
- microchip,mcp3422
# Microchip differential I2C ADC, 2 Channel, 18 bit
- microchip,mcp3423
# Microchip differential I2C ADC, 4 Channel, 18 bit
- microchip,mcp3424
# Microchip differential I2C ADC, 1 Channel, 16 bit
- microchip,mcp3425
# Microchip differential I2C ADC, 2 Channel, 16 bit
- microchip,mcp3426
# Microchip differential I2C ADC, 2 Channel, 16 bit
- microchip,mcp3427
# Microchip differential I2C ADC, 4 Channel, 16 bit
- microchip,mcp3428
# Microchip 7-bit Single I2C Digital POT (5k) # Microchip 7-bit Single I2C Digital POT (5k)
- microchip,mcp4017-502 - microchip,mcp4017-502
# Microchip 7-bit Single I2C Digital POT (10k) # Microchip 7-bit Single I2C Digital POT (10k)
......
...@@ -950,37 +950,12 @@ S: Supported ...@@ -950,37 +950,12 @@ S: Supported
F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
F: drivers/net/ethernet/amd/xgbe/ F: drivers/net/ethernet/amd/xgbe/
ANALOG DEVICES INC AD5686 DRIVER AMS AS73211 DRIVER
M: Michael Hennerich <Michael.Hennerich@analog.com> M: Christian Eggers <ceggers@arri.de>
L: linux-pm@vger.kernel.org
S: Supported
W: http://ez.analog.com/community/linux-device-drivers
F: drivers/iio/dac/ad5686*
F: drivers/iio/dac/ad5696*
ANALOG DEVICES INC AD5758 DRIVER
M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/dac/ad5758.txt
F: drivers/iio/dac/ad5758.c
ANALOG DEVICES INC AD7091R5 DRIVER
M: Beniamin Bia <beniamin.bia@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml
F: drivers/iio/adc/ad7091r5.c
ANALOG DEVICES INC AD7124 DRIVER
M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
S: Supported S: Maintained
W: http://ez.analog.com/community/linux-device-drivers F: Documentation/devicetree/bindings/iio/light/ams,as73211.yaml
F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml F: drivers/iio/light/as73211.c
F: drivers/iio/adc/ad7124.c
ANALOG DEVICES INC AD7192 DRIVER ANALOG DEVICES INC AD7192 DRIVER
M: Alexandru Tachici <alexandru.tachici@analog.com> M: Alexandru Tachici <alexandru.tachici@analog.com>
...@@ -998,15 +973,6 @@ W: http://ez.analog.com/community/linux-device-drivers ...@@ -998,15 +973,6 @@ W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
F: drivers/iio/adc/ad7292.c F: drivers/iio/adc/ad7292.c
ANALOG DEVICES INC AD7606 DRIVER
M: Michael Hennerich <Michael.Hennerich@analog.com>
M: Beniamin Bia <beniamin.bia@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
F: drivers/iio/adc/ad7606.c
ANALOG DEVICES INC AD7768-1 DRIVER ANALOG DEVICES INC AD7768-1 DRIVER
M: Michael Hennerich <Michael.Hennerich@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
...@@ -1068,7 +1034,6 @@ F: drivers/iio/imu/adis16475.c ...@@ -1068,7 +1034,6 @@ F: drivers/iio/imu/adis16475.c
F: Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml F: Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml
ANALOG DEVICES INC ADM1177 DRIVER ANALOG DEVICES INC ADM1177 DRIVER
M: Beniamin Bia <beniamin.bia@analog.com>
M: Michael Hennerich <Michael.Hennerich@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
L: linux-hwmon@vger.kernel.org L: linux-hwmon@vger.kernel.org
S: Supported S: Supported
...@@ -1115,6 +1080,13 @@ L: linux-media@vger.kernel.org ...@@ -1115,6 +1080,13 @@ L: linux-media@vger.kernel.org
S: Maintained S: Maintained
F: drivers/media/i2c/adv7842* F: drivers/media/i2c/adv7842*
ANALOG DEVICES INC ADXRS290 DRIVER
M: Nishant Malpani <nish.malpani25@gmail.com>
L: linux-iio@vger.kernel.org
S: Supported
F: drivers/iio/gyro/adxrs290.c
F: Documentation/devicetree/bindings/iio/gyroscope/adi,adxrs290.yaml
ANALOG DEVICES INC ASOC CODEC DRIVERS ANALOG DEVICES INC ASOC CODEC DRIVERS
M: Lars-Peter Clausen <lars@metafoo.de> M: Lars-Peter Clausen <lars@metafoo.de>
M: Nuno Sá <nuno.sa@analog.com> M: Nuno Sá <nuno.sa@analog.com>
...@@ -1135,15 +1107,6 @@ S: Supported ...@@ -1135,15 +1107,6 @@ S: Supported
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
F: drivers/dma/dma-axi-dmac.c F: drivers/dma/dma-axi-dmac.c
ANALOG DEVICES INC HMC425A DRIVER
M: Beniamin Bia <beniamin.bia@analog.com>
M: Michael Hennerich <michael.hennerich@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/devicetree/bindings/iio/amplifiers/adi,hmc425a.yaml
F: drivers/iio/amplifiers/hmc425a.c
ANALOG DEVICES INC IIO DRIVERS ANALOG DEVICES INC IIO DRIVERS
M: Lars-Peter Clausen <lars@metafoo.de> M: Lars-Peter Clausen <lars@metafoo.de>
M: Michael Hennerich <Michael.Hennerich@analog.com> M: Michael Hennerich <Michael.Hennerich@analog.com>
...@@ -1152,8 +1115,11 @@ W: http://wiki.analog.com/ ...@@ -1152,8 +1115,11 @@ W: http://wiki.analog.com/
W: http://ez.analog.com/community/linux-device-drivers W: http://ez.analog.com/community/linux-device-drivers
F: Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523 F: Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
F: Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350 F: Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
F: Documentation/devicetree/bindings/iio/*/adi,*
F: Documentation/devicetree/bindings/iio/dac/ad5758.txt
F: drivers/iio/*/ad* F: drivers/iio/*/ad*
F: drivers/iio/adc/ltc249* F: drivers/iio/adc/ltc249*
F: drivers/iio/amplifiers/hmc425a.c
F: drivers/staging/iio/*/ad* F: drivers/staging/iio/*/ad*
X: drivers/iio/*/adjd* X: drivers/iio/*/adjd*
...@@ -7944,6 +7910,12 @@ F: drivers/crypto/hisilicon/sec2/sec_crypto.c ...@@ -7944,6 +7910,12 @@ F: drivers/crypto/hisilicon/sec2/sec_crypto.c
F: drivers/crypto/hisilicon/sec2/sec_crypto.h F: drivers/crypto/hisilicon/sec2/sec_crypto.h
F: drivers/crypto/hisilicon/sec2/sec_main.c F: drivers/crypto/hisilicon/sec2/sec_main.c
HISILICON STAGING DRIVERS FOR HIKEY 960/970
M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
L: devel@driverdev.osuosl.org
S: Maintained
F: drivers/staging/hikey9xx/
HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT
M: Zaibo Xu <xuzaibo@huawei.com> M: Zaibo Xu <xuzaibo@huawei.com>
S: Maintained S: Maintained
...@@ -8521,7 +8493,6 @@ F: drivers/iio/multiplexer/iio-mux.c ...@@ -8521,7 +8493,6 @@ F: drivers/iio/multiplexer/iio-mux.c
IIO SUBSYSTEM AND DRIVERS IIO SUBSYSTEM AND DRIVERS
M: Jonathan Cameron <jic23@kernel.org> M: Jonathan Cameron <jic23@kernel.org>
R: Hartmut Knaack <knaack.h@gmx.de>
R: Lars-Peter Clausen <lars@metafoo.de> R: Lars-Peter Clausen <lars@metafoo.de>
R: Peter Meerwald-Stadler <pmeerw@pmeerw.net> R: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
L: linux-iio@vger.kernel.org L: linux-iio@vger.kernel.org
...@@ -16533,7 +16504,6 @@ F: drivers/staging/rtl8712/ ...@@ -16533,7 +16504,6 @@ F: drivers/staging/rtl8712/
STAGING - SEPS525 LCD CONTROLLER DRIVERS STAGING - SEPS525 LCD CONTROLLER DRIVERS
M: Michael Hennerich <michael.hennerich@analog.com> M: Michael Hennerich <michael.hennerich@analog.com>
M: Beniamin Bia <beniamin.bia@analog.com>
L: linux-fbdev@vger.kernel.org L: linux-fbdev@vger.kernel.org
S: Supported S: Supported
F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
......
...@@ -253,7 +253,7 @@ static struct counter_count mchp_tc_counts[] = { ...@@ -253,7 +253,7 @@ static struct counter_count mchp_tc_counts[] = {
}, },
}; };
static struct counter_ops mchp_tc_ops = { static const struct counter_ops mchp_tc_ops = {
.signal_read = mchp_tc_count_signal_read, .signal_read = mchp_tc_count_signal_read,
.count_read = mchp_tc_count_read, .count_read = mchp_tc_count_read,
.function_get = mchp_tc_count_function_get, .function_get = mchp_tc_count_function_get,
......
...@@ -439,7 +439,7 @@ static int ti_eqep_remove(struct platform_device *pdev) ...@@ -439,7 +439,7 @@ static int ti_eqep_remove(struct platform_device *pdev)
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
counter_unregister(&priv->counter); counter_unregister(&priv->counter);
pm_runtime_put_sync(dev), pm_runtime_put_sync(dev);
pm_runtime_disable(dev); pm_runtime_disable(dev);
return 0; return 0;
......
...@@ -63,7 +63,7 @@ config IIO_SW_TRIGGER ...@@ -63,7 +63,7 @@ config IIO_SW_TRIGGER
using the API provided. using the API provided.
config IIO_TRIGGERED_EVENT config IIO_TRIGGERED_EVENT
tristate tristate "Enable triggered events support"
select IIO_TRIGGER select IIO_TRIGGER
help help
Provides helper functions for setting up triggered events. Provides helper functions for setting up triggered events.
......
...@@ -281,34 +281,15 @@ static int adis16201_probe(struct spi_device *spi) ...@@ -281,34 +281,15 @@ static int adis16201_probe(struct spi_device *spi)
if (ret) if (ret)
return ret; return ret;
ret = adis_setup_buffer_and_trigger(st, indio_dev, NULL); ret = devm_adis_setup_buffer_and_trigger(st, indio_dev, NULL);
if (ret) if (ret)
return ret; return ret;
ret = adis_initial_startup(st); ret = adis_initial_startup(st);
if (ret) if (ret)
goto error_cleanup_buffer_trigger;
ret = iio_device_register(indio_dev);
if (ret < 0)
goto error_cleanup_buffer_trigger;
return 0;
error_cleanup_buffer_trigger:
adis_cleanup_buffer_and_trigger(st, indio_dev);
return ret; return ret;
}
static int adis16201_remove(struct spi_device *spi)
{
struct iio_dev *indio_dev = spi_get_drvdata(spi);
struct adis *st = iio_priv(indio_dev);
iio_device_unregister(indio_dev);
adis_cleanup_buffer_and_trigger(st, indio_dev);
return 0; return devm_iio_device_register(&spi->dev, indio_dev);
} }
static struct spi_driver adis16201_driver = { static struct spi_driver adis16201_driver = {
...@@ -316,7 +297,6 @@ static struct spi_driver adis16201_driver = { ...@@ -316,7 +297,6 @@ static struct spi_driver adis16201_driver = {
.name = "adis16201", .name = "adis16201",
}, },
.probe = adis16201_probe, .probe = adis16201_probe,
.remove = adis16201_remove,
}; };
module_spi_driver(adis16201_driver); module_spi_driver(adis16201_driver);
......
...@@ -291,33 +291,15 @@ static int adis16209_probe(struct spi_device *spi) ...@@ -291,33 +291,15 @@ static int adis16209_probe(struct spi_device *spi)
if (ret) if (ret)
return ret; return ret;
ret = adis_setup_buffer_and_trigger(st, indio_dev, NULL); ret = devm_adis_setup_buffer_and_trigger(st, indio_dev, NULL);
if (ret) if (ret)
return ret; return ret;
ret = adis_initial_startup(st); ret = adis_initial_startup(st);
if (ret) if (ret)
goto error_cleanup_buffer_trigger;
ret = iio_device_register(indio_dev);
if (ret)
goto error_cleanup_buffer_trigger;
return 0;
error_cleanup_buffer_trigger:
adis_cleanup_buffer_and_trigger(st, indio_dev);
return ret; return ret;
}
static int adis16209_remove(struct spi_device *spi)
{
struct iio_dev *indio_dev = spi_get_drvdata(spi);
struct adis *st = iio_priv(indio_dev);
iio_device_unregister(indio_dev);
adis_cleanup_buffer_and_trigger(st, indio_dev);
return 0; return devm_iio_device_register(&spi->dev, indio_dev);
} }
static struct spi_driver adis16209_driver = { static struct spi_driver adis16209_driver = {
...@@ -325,7 +307,6 @@ static struct spi_driver adis16209_driver = { ...@@ -325,7 +307,6 @@ static struct spi_driver adis16209_driver = {
.name = "adis16209", .name = "adis16209",
}, },
.probe = adis16209_probe, .probe = adis16209_probe,
.remove = adis16209_remove,
}; };
module_spi_driver(adis16209_driver); module_spi_driver(adis16209_driver);
......
This diff is collapsed.
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
*/ */
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/regmap.h> #include <linux/regmap.h>
...@@ -46,9 +47,16 @@ static const struct i2c_device_id adxl372_i2c_id[] = { ...@@ -46,9 +47,16 @@ static const struct i2c_device_id adxl372_i2c_id[] = {
}; };
MODULE_DEVICE_TABLE(i2c, adxl372_i2c_id); MODULE_DEVICE_TABLE(i2c, adxl372_i2c_id);
static const struct of_device_id adxl372_of_match[] = {
{ .compatible = "adi,adxl372" },
{ }
};
MODULE_DEVICE_TABLE(of, adxl372_of_match);
static struct i2c_driver adxl372_i2c_driver = { static struct i2c_driver adxl372_i2c_driver = {
.driver = { .driver = {
.name = "adxl372_i2c", .name = "adxl372_i2c",
.of_match_table = adxl372_of_match,
}, },
.probe = adxl372_i2c_probe, .probe = adxl372_i2c_probe,
.id_table = adxl372_i2c_id, .id_table = adxl372_i2c_id,
......
...@@ -41,7 +41,7 @@ MODULE_DEVICE_TABLE(spi, adxl372_spi_id); ...@@ -41,7 +41,7 @@ MODULE_DEVICE_TABLE(spi, adxl372_spi_id);
static const struct of_device_id adxl372_of_match[] = { static const struct of_device_id adxl372_of_match[] = {
{ .compatible = "adi,adxl372" }, { .compatible = "adi,adxl372" },
{ }, { }
}; };
MODULE_DEVICE_TABLE(of, adxl372_of_match); MODULE_DEVICE_TABLE(of, adxl372_of_match);
......
...@@ -673,7 +673,7 @@ static const struct iio_chan_spec_ext_info bma023_ext_info[] = { ...@@ -673,7 +673,7 @@ static const struct iio_chan_spec_ext_info bma023_ext_info[] = {
}; };
static const struct iio_chan_spec_ext_info bma180_ext_info[] = { static const struct iio_chan_spec_ext_info bma180_ext_info[] = {
IIO_ENUM("power_mode", true, &bma180_power_mode_enum), IIO_ENUM("power_mode", IIO_SHARED_BY_TYPE, &bma180_power_mode_enum),
IIO_ENUM_AVAILABLE("power_mode", &bma180_power_mode_enum), IIO_ENUM_AVAILABLE("power_mode", &bma180_power_mode_enum),
IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bma180_accel_get_mount_matrix), IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bma180_accel_get_mount_matrix),
{ } { }
...@@ -1000,19 +1000,15 @@ static int bma180_probe(struct i2c_client *client, ...@@ -1000,19 +1000,15 @@ static int bma180_probe(struct i2c_client *client,
return ret; return ret;
data->vdd_supply = devm_regulator_get(dev, "vdd"); data->vdd_supply = devm_regulator_get(dev, "vdd");
if (IS_ERR(data->vdd_supply)) { if (IS_ERR(data->vdd_supply))
if (PTR_ERR(data->vdd_supply) != -EPROBE_DEFER) return dev_err_probe(dev, PTR_ERR(data->vdd_supply),
dev_err(dev, "Failed to get vdd regulator %d\n", "Failed to get vdd regulator\n");
(int)PTR_ERR(data->vdd_supply));
return PTR_ERR(data->vdd_supply);
}
data->vddio_supply = devm_regulator_get(dev, "vddio"); data->vddio_supply = devm_regulator_get(dev, "vddio");
if (IS_ERR(data->vddio_supply)) { if (IS_ERR(data->vddio_supply))
if (PTR_ERR(data->vddio_supply) != -EPROBE_DEFER) return dev_err_probe(dev, PTR_ERR(data->vddio_supply),
dev_err(dev, "Failed to get vddio regulator %d\n", "Failed to get vddio regulator\n");
(int)PTR_ERR(data->vddio_supply));
return PTR_ERR(data->vddio_supply);
}
/* Typical voltage 2.4V these are min and max */ /* Typical voltage 2.4V these are min and max */
ret = regulator_set_voltage(data->vdd_supply, 1620000, 3600000); ret = regulator_set_voltage(data->vdd_supply, 1620000, 3600000);
if (ret) if (ret)
......
...@@ -2,16 +2,18 @@ ...@@ -2,16 +2,18 @@
/** /**
* BMA220 Digital triaxial acceleration sensor driver * BMA220 Digital triaxial acceleration sensor driver
* *
* Copyright (c) 2016, Intel Corporation. * Copyright (c) 2016,2020 Intel Corporation.
*/ */
#include <linux/acpi.h> #include <linux/bits.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/spi/spi.h>
#include <linux/iio/buffer.h> #include <linux/iio/buffer.h>
#include <linux/iio/iio.h> #include <linux/iio/iio.h>
#include <linux/iio/sysfs.h> #include <linux/iio/sysfs.h>
#include <linux/spi/spi.h>
#include <linux/iio/trigger_consumer.h> #include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h> #include <linux/iio/triggered_buffer.h>
...@@ -23,14 +25,13 @@ ...@@ -23,14 +25,13 @@
#define BMA220_REG_SUSPEND 0x18 #define BMA220_REG_SUSPEND 0x18
#define BMA220_CHIP_ID 0xDD #define BMA220_CHIP_ID 0xDD
#define BMA220_READ_MASK 0x80 #define BMA220_READ_MASK BIT(7)
#define BMA220_RANGE_MASK 0x03 #define BMA220_RANGE_MASK GENMASK(1, 0)
#define BMA220_DATA_SHIFT 2 #define BMA220_DATA_SHIFT 2
#define BMA220_SUSPEND_SLEEP 0xFF #define BMA220_SUSPEND_SLEEP 0xFF
#define BMA220_SUSPEND_WAKE 0x00 #define BMA220_SUSPEND_WAKE 0x00
#define BMA220_DEVICE_NAME "bma220" #define BMA220_DEVICE_NAME "bma220"
#define BMA220_SCALE_AVAILABLE "0.623 1.248 2.491 4.983"
#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \ #define BMA220_ACCEL_CHANNEL(index, reg, axis) { \
.type = IIO_ACCEL, \ .type = IIO_ACCEL, \
...@@ -55,19 +56,8 @@ enum bma220_axis { ...@@ -55,19 +56,8 @@ enum bma220_axis {
AXIS_Z, AXIS_Z,
}; };
static IIO_CONST_ATTR(in_accel_scale_available, BMA220_SCALE_AVAILABLE); static const int bma220_scale_table[][2] = {
{0, 623000}, {1, 248000}, {2, 491000}, {4, 983000},
static struct attribute *bma220_attributes[] = {
&iio_const_attr_in_accel_scale_available.dev_attr.attr,
NULL,
};
static const struct attribute_group bma220_attribute_group = {
.attrs = bma220_attributes,
};
static const int bma220_scale_table[][4] = {
{0, 623000}, {1, 248000}, {2, 491000}, {4, 983000}
}; };
struct bma220_data { struct bma220_data {
...@@ -182,10 +172,26 @@ static int bma220_write_raw(struct iio_dev *indio_dev, ...@@ -182,10 +172,26 @@ static int bma220_write_raw(struct iio_dev *indio_dev,
return -EINVAL; return -EINVAL;
} }
static int bma220_read_avail(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
const int **vals, int *type, int *length,
long mask)
{
switch (mask) {
case IIO_CHAN_INFO_SCALE:
*vals = (int *)bma220_scale_table;
*type = IIO_VAL_INT_PLUS_MICRO;
*length = ARRAY_SIZE(bma220_scale_table) * 2;
return IIO_AVAIL_LIST;
default:
return -EINVAL;
}
}
static const struct iio_info bma220_info = { static const struct iio_info bma220_info = {
.read_raw = bma220_read_raw, .read_raw = bma220_read_raw,
.write_raw = bma220_write_raw, .write_raw = bma220_write_raw,
.attrs = &bma220_attribute_group, .read_avail = bma220_read_avail,
}; };
static int bma220_init(struct spi_device *spi) static int bma220_init(struct spi_device *spi)
...@@ -198,10 +204,12 @@ static int bma220_init(struct spi_device *spi) ...@@ -198,10 +204,12 @@ static int bma220_init(struct spi_device *spi)
/* Make sure the chip is powered on */ /* Make sure the chip is powered on */
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND); ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
if (ret == BMA220_SUSPEND_WAKE)
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
if (ret < 0) if (ret < 0)
return ret; return ret;
else if (ret == BMA220_SUSPEND_WAKE) if (ret == BMA220_SUSPEND_WAKE)
return bma220_read_reg(spi, BMA220_REG_SUSPEND); return -EBUSY;
return 0; return 0;
} }
...@@ -212,10 +220,12 @@ static int bma220_deinit(struct spi_device *spi) ...@@ -212,10 +220,12 @@ static int bma220_deinit(struct spi_device *spi)
/* Make sure the chip is powered off */ /* Make sure the chip is powered off */
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND); ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
if (ret == BMA220_SUSPEND_SLEEP)
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
if (ret < 0) if (ret < 0)
return ret; return ret;
else if (ret == BMA220_SUSPEND_SLEEP) if (ret == BMA220_SUSPEND_SLEEP)
return bma220_read_reg(spi, BMA220_REG_SUSPEND); return -EBUSY;
return 0; return 0;
} }
...@@ -245,7 +255,7 @@ static int bma220_probe(struct spi_device *spi) ...@@ -245,7 +255,7 @@ static int bma220_probe(struct spi_device *spi)
indio_dev->available_scan_masks = bma220_accel_scan_masks; indio_dev->available_scan_masks = bma220_accel_scan_masks;
ret = bma220_init(data->spi_device); ret = bma220_init(data->spi_device);
if (ret < 0) if (ret)
return ret; return ret;
ret = iio_triggered_buffer_setup(indio_dev, iio_pollfunc_store_time, ret = iio_triggered_buffer_setup(indio_dev, iio_pollfunc_store_time,
...@@ -278,56 +288,43 @@ static int bma220_remove(struct spi_device *spi) ...@@ -278,56 +288,43 @@ static int bma220_remove(struct spi_device *spi)
return bma220_deinit(spi); return bma220_deinit(spi);
} }
#ifdef CONFIG_PM_SLEEP static __maybe_unused int bma220_suspend(struct device *dev)
static int bma220_suspend(struct device *dev)
{ {
struct bma220_data *data = struct bma220_data *data = iio_priv(dev_get_drvdata(dev));
iio_priv(spi_get_drvdata(to_spi_device(dev)));
/* The chip can be suspended/woken up by a simple register read. */ /* The chip can be suspended/woken up by a simple register read. */
return bma220_read_reg(data->spi_device, BMA220_REG_SUSPEND); return bma220_read_reg(data->spi_device, BMA220_REG_SUSPEND);
} }
static int bma220_resume(struct device *dev) static __maybe_unused int bma220_resume(struct device *dev)
{ {
struct bma220_data *data = struct bma220_data *data = iio_priv(dev_get_drvdata(dev));
iio_priv(spi_get_drvdata(to_spi_device(dev)));
return bma220_read_reg(data->spi_device, BMA220_REG_SUSPEND); return bma220_read_reg(data->spi_device, BMA220_REG_SUSPEND);
} }
static SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume); static SIMPLE_DEV_PM_OPS(bma220_pm_ops, bma220_suspend, bma220_resume);
#define BMA220_PM_OPS (&bma220_pm_ops)
#else
#define BMA220_PM_OPS NULL
#endif
static const struct spi_device_id bma220_spi_id[] = { static const struct spi_device_id bma220_spi_id[] = {
{"bma220", 0}, {"bma220", 0},
{} {}
}; };
#ifdef CONFIG_ACPI
static const struct acpi_device_id bma220_acpi_id[] = { static const struct acpi_device_id bma220_acpi_id[] = {
{"BMA0220", 0}, {"BMA0220", 0},
{} {}
}; };
MODULE_DEVICE_TABLE(spi, bma220_spi_id); MODULE_DEVICE_TABLE(spi, bma220_spi_id);
#endif
static struct spi_driver bma220_driver = { static struct spi_driver bma220_driver = {
.driver = { .driver = {
.name = "bma220_spi", .name = "bma220_spi",
.pm = BMA220_PM_OPS, .pm = &bma220_pm_ops,
.acpi_match_table = ACPI_PTR(bma220_acpi_id), .acpi_match_table = bma220_acpi_id,
}, },
.probe = bma220_probe, .probe = bma220_probe,
.remove = bma220_remove, .remove = bma220_remove,
.id_table = bma220_spi_id, .id_table = bma220_spi_id,
}; };
module_spi_driver(bma220_driver); module_spi_driver(bma220_driver);
MODULE_AUTHOR("Tiberiu Breana <tiberiu.a.breana@intel.com>"); MODULE_AUTHOR("Tiberiu Breana <tiberiu.a.breana@intel.com>");
......
...@@ -215,7 +215,7 @@ static int cros_ec_accel_legacy_probe(struct platform_device *pdev) ...@@ -215,7 +215,7 @@ static int cros_ec_accel_legacy_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
ret = cros_ec_sensors_core_init(pdev, indio_dev, true, ret = cros_ec_sensors_core_init(pdev, indio_dev, true,
cros_ec_sensors_capture, NULL); cros_ec_sensors_capture, NULL, false);
if (ret) if (ret)
return ret; return ret;
......
...@@ -1543,22 +1543,14 @@ static int mma8452_probe(struct i2c_client *client, ...@@ -1543,22 +1543,14 @@ static int mma8452_probe(struct i2c_client *client,
data->chip_info = match->data; data->chip_info = match->data;
data->vdd_reg = devm_regulator_get(&client->dev, "vdd"); data->vdd_reg = devm_regulator_get(&client->dev, "vdd");
if (IS_ERR(data->vdd_reg)) { if (IS_ERR(data->vdd_reg))
if (PTR_ERR(data->vdd_reg) == -EPROBE_DEFER) return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg),
return -EPROBE_DEFER; "failed to get VDD regulator!\n");
dev_err(&client->dev, "failed to get VDD regulator!\n");
return PTR_ERR(data->vdd_reg);
}
data->vddio_reg = devm_regulator_get(&client->dev, "vddio"); data->vddio_reg = devm_regulator_get(&client->dev, "vddio");
if (IS_ERR(data->vddio_reg)) { if (IS_ERR(data->vddio_reg))
if (PTR_ERR(data->vddio_reg) == -EPROBE_DEFER) return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg),
return -EPROBE_DEFER; "failed to get VDDIO regulator!\n");
dev_err(&client->dev, "failed to get VDDIO regulator!\n");
return PTR_ERR(data->vddio_reg);
}
ret = regulator_enable(data->vdd_reg); ret = regulator_enable(data->vdd_reg);
if (ret) { if (ret) {
......
...@@ -340,7 +340,7 @@ config AXP288_ADC ...@@ -340,7 +340,7 @@ config AXP288_ADC
config BCM_IPROC_ADC config BCM_IPROC_ADC
tristate "Broadcom IPROC ADC driver" tristate "Broadcom IPROC ADC driver"
depends on ARCH_BCM_IPROC || COMPILE_TEST depends on (ARCH_BCM_IPROC && OF) || COMPILE_TEST
depends on MFD_SYSCON depends on MFD_SYSCON
default ARCH_BCM_CYGNUS default ARCH_BCM_CYGNUS
help help
...@@ -863,7 +863,7 @@ config RN5T618_ADC ...@@ -863,7 +863,7 @@ config RN5T618_ADC
config ROCKCHIP_SARADC config ROCKCHIP_SARADC
tristate "Rockchip SARADC driver" tristate "Rockchip SARADC driver"
depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST) depends on ARCH_ROCKCHIP || COMPILE_TEST
depends on RESET_CONTROLLER depends on RESET_CONTROLLER
select IIO_BUFFER select IIO_BUFFER
select IIO_TRIGGERED_BUFFER select IIO_TRIGGERED_BUFFER
......
...@@ -20,8 +20,6 @@ ...@@ -20,8 +20,6 @@
#include <linux/iio/sysfs.h> #include <linux/iio/sysfs.h>
#include <linux/iio/events.h> #include <linux/iio/events.h>
#include <linux/platform_data/ad7291.h>
/* /*
* Simplified handling * Simplified handling
* *
...@@ -465,7 +463,6 @@ static const struct iio_info ad7291_info = { ...@@ -465,7 +463,6 @@ static const struct iio_info ad7291_info = {
static int ad7291_probe(struct i2c_client *client, static int ad7291_probe(struct i2c_client *client,
const struct i2c_device_id *id) const struct i2c_device_id *id)
{ {
struct ad7291_platform_data *pdata = client->dev.platform_data;
struct ad7291_chip_info *chip; struct ad7291_chip_info *chip;
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
int ret; int ret;
...@@ -475,16 +472,6 @@ static int ad7291_probe(struct i2c_client *client, ...@@ -475,16 +472,6 @@ static int ad7291_probe(struct i2c_client *client,
return -ENOMEM; return -ENOMEM;
chip = iio_priv(indio_dev); chip = iio_priv(indio_dev);
if (pdata && pdata->use_external_ref) {
chip->reg = devm_regulator_get(&client->dev, "vref");
if (IS_ERR(chip->reg))
return PTR_ERR(chip->reg);
ret = regulator_enable(chip->reg);
if (ret)
return ret;
}
mutex_init(&chip->state_lock); mutex_init(&chip->state_lock);
/* this is only used for device removal purposes */ /* this is only used for device removal purposes */
i2c_set_clientdata(client, indio_dev); i2c_set_clientdata(client, indio_dev);
...@@ -495,8 +482,21 @@ static int ad7291_probe(struct i2c_client *client, ...@@ -495,8 +482,21 @@ static int ad7291_probe(struct i2c_client *client,
AD7291_T_SENSE_MASK | /* Tsense always enabled */ AD7291_T_SENSE_MASK | /* Tsense always enabled */
AD7291_ALERT_POLARITY; /* set irq polarity low level */ AD7291_ALERT_POLARITY; /* set irq polarity low level */
if (pdata && pdata->use_external_ref) chip->reg = devm_regulator_get_optional(&client->dev, "vref");
if (IS_ERR(chip->reg)) {
if (PTR_ERR(chip->reg) != -ENODEV)
return PTR_ERR(chip->reg);
chip->reg = NULL;
}
if (chip->reg) {
ret = regulator_enable(chip->reg);
if (ret)
return ret;
chip->command |= AD7291_EXT_REF; chip->command |= AD7291_EXT_REF;
}
indio_dev->name = id->name; indio_dev->name = id->name;
indio_dev->channels = ad7291_channels; indio_dev->channels = ad7291_channels;
...@@ -567,9 +567,16 @@ static const struct i2c_device_id ad7291_id[] = { ...@@ -567,9 +567,16 @@ static const struct i2c_device_id ad7291_id[] = {
MODULE_DEVICE_TABLE(i2c, ad7291_id); MODULE_DEVICE_TABLE(i2c, ad7291_id);
static const struct of_device_id ad7291_of_match[] = {
{ .compatible = "adi,ad7291" },
{}
};
MODULE_DEVICE_TABLE(of, ad7291_of_match);
static struct i2c_driver ad7291_driver = { static struct i2c_driver ad7291_driver = {
.driver = { .driver = {
.name = KBUILD_MODNAME, .name = KBUILD_MODNAME,
.of_match_table = ad7291_of_match,
}, },
.probe = ad7291_probe, .probe = ad7291_probe,
.remove = ad7291_remove, .remove = ad7291_remove,
......
...@@ -310,9 +310,11 @@ static int ad7292_probe(struct spi_device *spi) ...@@ -310,9 +310,11 @@ static int ad7292_probe(struct spi_device *spi)
for_each_available_child_of_node(spi->dev.of_node, child) { for_each_available_child_of_node(spi->dev.of_node, child) {
diff_channels = of_property_read_bool(child, "diff-channels"); diff_channels = of_property_read_bool(child, "diff-channels");
if (diff_channels) if (diff_channels) {
of_node_put(child);
break; break;
} }
}
if (diff_channels) { if (diff_channels) {
indio_dev->num_channels = ARRAY_SIZE(ad7292_channels_diff); indio_dev->num_channels = ARRAY_SIZE(ad7292_channels_diff);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment