Staging / IIO driver updates for 5.10-rc1
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 new 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. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCX4g+oQ8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ymAyQCghI58tN/Np3itPlZuc+HYFN7OHH8An1TKzCm1 bwkfw5qAcHab+R7KQZOA =BaXS -----END PGP SIGNATURE----- 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 ...
This commit is contained in:
commit
ade7afe3e6
4
CREDITS
4
CREDITS
|
@ -1942,6 +1942,10 @@ S: Post Office Box 611311
|
|||
S: San Jose, California 95161-1311
|
||||
S: USA
|
||||
|
||||
N: Hartmut Knaack
|
||||
E: knaack.h@gmx.de
|
||||
D: IIO subsystem and drivers
|
||||
|
||||
N: Thorsten Knabe
|
||||
E: Thorsten Knabe <tek@rbg.informatik.tu-darmstadt.de>
|
||||
E: Thorsten Knabe <tek01@hrzpub.tu-darmstadt.de>
|
||||
|
|
|
@ -40,6 +40,7 @@ Description:
|
|||
buffered samples and events for device X.
|
||||
|
||||
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/triggerX/sampling_frequency
|
||||
KernelVersion: 2.6.35
|
||||
|
@ -49,12 +50,13 @@ Description:
|
|||
resulting sampling frequency. In many devices this
|
||||
parameter has an effect on input filters etc. rather than
|
||||
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
|
||||
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.
|
||||
|
||||
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/.../iio:deviceX/buffer/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
|
|||
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_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
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -401,21 +406,21 @@ Description:
|
|||
Hardware applied calibration offset (assumed to fix production
|
||||
inaccuracies).
|
||||
|
||||
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_i_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_q_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_y_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_y_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_proximity0_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_i_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_q_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_y_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_y_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_proximity0_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_illuminance_calibscale
|
||||
|
@ -483,7 +488,8 @@ Description:
|
|||
If a discrete set of scale values is available, they
|
||||
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_green_hardwaregain
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_blue_hardwaregain
|
||||
|
@ -494,6 +500,13 @@ Description:
|
|||
Hardware applied gain factor. If shared across all channels,
|
||||
<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_magn_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
|
|||
What: /sys/.../events/in_tempY_raw_thresh_rising_value
|
||||
What: /sys/.../events/in_tempY_raw_thresh_falling_value
|
||||
What: /sys/.../events/in_illuminance0_thresh_falling_value
|
||||
what: /sys/.../events/in_illuminance0_thresh_rising_value
|
||||
what: /sys/.../events/in_proximity0_thresh_falling_value
|
||||
what: /sys/.../events/in_proximity0_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_rising_value
|
||||
What: /sys/.../events/in_illuminance_thresh_rising_value
|
||||
What: /sys/.../events/in_illuminance_thresh_falling_value
|
||||
KernelVersion: 2.6.37
|
||||
|
@ -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_either_hysteresis
|
||||
What: /sys/.../events/in_illuminance0_thresh_falling_hysteresis
|
||||
what: /sys/.../events/in_illuminance0_thresh_rising_hysteresis
|
||||
what: /sys/.../events/in_illuminance0_thresh_either_hysteresis
|
||||
what: /sys/.../events/in_proximity0_thresh_falling_hysteresis
|
||||
what: /sys/.../events/in_proximity0_thresh_rising_hysteresis
|
||||
what: /sys/.../events/in_proximity0_thresh_either_hysteresis
|
||||
What: /sys/.../events/in_illuminance0_thresh_rising_hysteresis
|
||||
What: /sys/.../events/in_illuminance0_thresh_either_hysteresis
|
||||
What: /sys/.../events/in_proximity0_thresh_falling_hysteresis
|
||||
What: /sys/.../events/in_proximity0_thresh_rising_hysteresis
|
||||
What: /sys/.../events/in_proximity0_thresh_either_hysteresis
|
||||
KernelVersion: 3.13
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
|
@ -1013,7 +1026,7 @@ What: /sys/.../events/in_activity_running_thresh_falling_en
|
|||
KernelVersion: 3.19
|
||||
Contact: linux-iio@vger.kernel.org
|
||||
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.
|
||||
|
||||
What: /sys/.../events/in_activity_still_thresh_rising_value
|
||||
|
@ -1333,6 +1346,7 @@ Description:
|
|||
standardised CIE Erythemal Action Spectrum. UV index values range
|
||||
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_green_integration_time
|
||||
What: /sys/.../iio:deviceX/in_intensity_blue_integration_time
|
||||
|
@ -1342,7 +1356,8 @@ KernelVersion: 3.12
|
|||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
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
|
||||
KernelVersion: 4.0
|
||||
|
@ -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_concentration_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_concentrationX_voc_raw
|
||||
KernelVersion: 4.3
|
||||
|
@ -1740,3 +1757,20 @@ KernelVersion: 5.5
|
|||
Contact: linux-iio@vger.kernel.org
|
||||
Description:
|
||||
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.
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
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.
|
|
@ -0,0 +1,9 @@
|
|||
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.
|
|
@ -1,16 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -0,0 +1,46 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,41 +0,0 @@
|
|||
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";
|
||||
};
|
|
@ -0,0 +1,89 @@
|
|||
# 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";
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,57 @@
|
|||
# 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 @@
|
|||
$id: http://devicetree.org/schemas/iio/adc/adi,ad9467.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:
|
||||
- Michael Hennerich <michael.hennerich@analog.com>
|
||||
- Alexandru Ardelean <alexandru.ardelean@analog.com>
|
||||
|
||||
description: |
|
||||
The AD9467 is a 16-bit, monolithic, IF sampling analog-to-digital
|
||||
converter (ADC).
|
||||
The AD9467 and the parts similar with it, are high-speed analog-to-digital
|
||||
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
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- adi,ad9265
|
||||
- adi,ad9434
|
||||
- adi,ad9467
|
||||
|
||||
reg:
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -1,48 +0,0 @@
|
|||
* 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";
|
||||
};
|
|
@ -0,0 +1,149 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,55 @@
|
|||
# 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>;
|
||||
};
|
||||
...
|
|
@ -1,22 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -1,19 +0,0 @@
|
|||
* 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";
|
||||
};
|
|
@ -1,22 +0,0 @@
|
|||
* 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 = <®_1v8>;
|
||||
};
|
|
@ -0,0 +1,59 @@
|
|||
# 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 = <®_1v8>;
|
||||
};
|
||||
...
|
|
@ -1,17 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -1,16 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -0,0 +1,35 @@
|
|||
# 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>;
|
||||
};
|
||||
...
|
|
@ -1,57 +0,0 @@
|
|||
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>;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,131 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,62 @@
|
|||
# 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 = <®_vcc_3v3_mcu>;
|
||||
#io-channel-cells = <1>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,81 @@
|
|||
# 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 = <®_vcc_3v3_mcu>;
|
||||
min-sample-time = <10000>;
|
||||
};
|
||||
...
|
|
@ -1,21 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -0,0 +1,50 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,24 +0,0 @@
|
|||
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 = <®_vcc_3v3_mcu>;
|
||||
#io-channel-cells = <1>;
|
||||
};
|
|
@ -0,0 +1,44 @@
|
|||
# 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 = <<c2497_reg>;
|
||||
#io-channel-cells = <1>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,20 +0,0 @@
|
|||
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 = <®_vdda>;
|
||||
resets = <&rgu 40>;
|
||||
};
|
|
@ -1,21 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,13 +0,0 @@
|
|||
* 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 = <<c2497_reg>;
|
||||
};
|
|
@ -0,0 +1,50 @@
|
|||
# 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";
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,18 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,21 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,27 +0,0 @@
|
|||
* 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.
|
|
@ -0,0 +1,49 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,62 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,51 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,57 +0,0 @@
|
|||
* 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>;
|
||||
};
|
||||
};
|
|
@ -1,19 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -0,0 +1,77 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,53 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,50 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,26 +0,0 @@
|
|||
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>;
|
||||
};
|
|
@ -0,0 +1,64 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,18 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -0,0 +1,61 @@
|
|||
# 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 = <®_vdda>;
|
||||
resets = <&rgu 40>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,50 @@
|
|||
# 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:
|
|||
maxItems: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
description:
|
||||
ADC interrupt followed by optional touchscreen interrupt.
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
|
||||
"#io-channel-cells":
|
||||
const: 1
|
||||
|
@ -83,7 +86,6 @@ allOf:
|
|||
- samsung,exynos-adc-v2
|
||||
- samsung,exynos3250-adc
|
||||
- samsung,exynos4212-adc
|
||||
- samsung,s5pv210-adc
|
||||
then:
|
||||
required:
|
||||
- samsung,syscon-phandle
|
||||
|
@ -112,6 +114,15 @@ allOf:
|
|||
items:
|
||||
- const: adc
|
||||
|
||||
- if:
|
||||
required:
|
||||
- has-touchscreen
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
examples:
|
||||
- |
|
||||
adc: adc@12d10000 {
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
# 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";
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,40 +0,0 @@
|
|||
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";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,45 @@
|
|||
# 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 */
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,21 +0,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 */
|
||||
};
|
|
@ -0,0 +1,56 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,47 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,86 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,59 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,51 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,112 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,65 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,51 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,52 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,48 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,19 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,18 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,37 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,25 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,18 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,23 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,19 +0,0 @@
|
|||
* 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>;
|
||||
};
|
|
@ -1,24 +0,0 @@
|
|||
* 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>;
|
||||
};
|
||||
};
|
|
@ -1,36 +0,0 @@
|
|||
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 = <®_vcc_3v3_mcu>;
|
||||
};
|
|
@ -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/RTD_oem_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:
|
||||
compatible:
|
||||
|
@ -29,6 +31,8 @@ properties:
|
|||
- atlas,ph-sm
|
||||
- atlas,rtd-sm
|
||||
- atlas,co2-ezo
|
||||
- atlas,o2-ezo
|
||||
- atlas,hum-ezo
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
|
|
@ -0,0 +1,77 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -1,49 +0,0 @@
|
|||
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 */
|
||||
};
|
||||
};
|
|
@ -0,0 +1,59 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
||||
...
|
|
@ -0,0 +1,45 @@
|
|||
# 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>;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,54 @@
|
|||
# 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:
|
|||
- vishay,vcnl4020
|
||||
- vishay,vcnl4040
|
||||
- vishay,vcnl4200
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# 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:
|
|||
- compatible: must be "st,vl53l0x"
|
||||
- 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:
|
||||
|
||||
vl53l0x@29 {
|
||||
compatible = "st,vl53l0x";
|
||||
reg = <0x29>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
|
||||
};
|
||||
|
|
|
@ -132,6 +132,22 @@ properties:
|
|||
- mcube,mc3230
|
||||
# MEMSIC 2-axis 8-bit digital accelerometer
|
||||
- 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,mcp4017-502
|
||||
# Microchip 7-bit Single I2C Digital POT (10k)
|
||||
|
|
72
MAINTAINERS
72
MAINTAINERS
|
@ -950,37 +950,12 @@ S: Supported
|
|||
F: arch/arm64/boot/dts/amd/amd-seattle-xgbe*.dtsi
|
||||
F: drivers/net/ethernet/amd/xgbe/
|
||||
|
||||
ANALOG DEVICES INC AD5686 DRIVER
|
||||
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||
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>
|
||||
AMS AS73211 DRIVER
|
||||
M: Christian Eggers <ceggers@arri.de>
|
||||
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
|
||||
S: Supported
|
||||
W: http://ez.analog.com/community/linux-device-drivers
|
||||
F: Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
|
||||
F: drivers/iio/adc/ad7124.c
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iio/light/ams,as73211.yaml
|
||||
F: drivers/iio/light/as73211.c
|
||||
|
||||
ANALOG DEVICES INC AD7192 DRIVER
|
||||
M: Alexandru Tachici <alexandru.tachici@analog.com>
|
||||
|
@ -998,15 +973,6 @@ W: http://ez.analog.com/community/linux-device-drivers
|
|||
F: Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
|
||||
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
|
||||
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||
L: linux-iio@vger.kernel.org
|
||||
|
@ -1068,7 +1034,6 @@ F: drivers/iio/imu/adis16475.c
|
|||
F: Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml
|
||||
|
||||
ANALOG DEVICES INC ADM1177 DRIVER
|
||||
M: Beniamin Bia <beniamin.bia@analog.com>
|
||||
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||
L: linux-hwmon@vger.kernel.org
|
||||
S: Supported
|
||||
|
@ -1115,6 +1080,13 @@ L: linux-media@vger.kernel.org
|
|||
S: Maintained
|
||||
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
|
||||
M: Lars-Peter Clausen <lars@metafoo.de>
|
||||
M: Nuno Sá <nuno.sa@analog.com>
|
||||
|
@ -1135,15 +1107,6 @@ S: Supported
|
|||
W: http://ez.analog.com/community/linux-device-drivers
|
||||
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
|
||||
M: Lars-Peter Clausen <lars@metafoo.de>
|
||||
M: Michael Hennerich <Michael.Hennerich@analog.com>
|
||||
|
@ -1152,8 +1115,11 @@ W: http://wiki.analog.com/
|
|||
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-adf4350
|
||||
F: Documentation/devicetree/bindings/iio/*/adi,*
|
||||
F: Documentation/devicetree/bindings/iio/dac/ad5758.txt
|
||||
F: drivers/iio/*/ad*
|
||||
F: drivers/iio/adc/ltc249*
|
||||
F: drivers/iio/amplifiers/hmc425a.c
|
||||
F: drivers/staging/iio/*/ad*
|
||||
X: drivers/iio/*/adjd*
|
||||
|
||||
|
@ -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_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
|
||||
M: Zaibo Xu <xuzaibo@huawei.com>
|
||||
S: Maintained
|
||||
|
@ -8521,7 +8493,6 @@ F: drivers/iio/multiplexer/iio-mux.c
|
|||
|
||||
IIO SUBSYSTEM AND DRIVERS
|
||||
M: Jonathan Cameron <jic23@kernel.org>
|
||||
R: Hartmut Knaack <knaack.h@gmx.de>
|
||||
R: Lars-Peter Clausen <lars@metafoo.de>
|
||||
R: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
|
||||
L: linux-iio@vger.kernel.org
|
||||
|
@ -16533,7 +16504,6 @@ F: drivers/staging/rtl8712/
|
|||
|
||||
STAGING - SEPS525 LCD CONTROLLER DRIVERS
|
||||
M: Michael Hennerich <michael.hennerich@analog.com>
|
||||
M: Beniamin Bia <beniamin.bia@analog.com>
|
||||
L: linux-fbdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
|
||||
|
|
|
@ -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,
|
||||
.count_read = mchp_tc_count_read,
|
||||
.function_get = mchp_tc_count_function_get,
|
||||
|
|
|
@ -439,7 +439,7 @@ static int ti_eqep_remove(struct platform_device *pdev)
|
|||
struct device *dev = &pdev->dev;
|
||||
|
||||
counter_unregister(&priv->counter);
|
||||
pm_runtime_put_sync(dev),
|
||||
pm_runtime_put_sync(dev);
|
||||
pm_runtime_disable(dev);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -63,7 +63,7 @@ config IIO_SW_TRIGGER
|
|||
using the API provided.
|
||||
|
||||
config IIO_TRIGGERED_EVENT
|
||||
tristate
|
||||
tristate "Enable triggered events support"
|
||||
select IIO_TRIGGER
|
||||
help
|
||||
Provides helper functions for setting up triggered events.
|
||||
|
|
|
@ -281,34 +281,15 @@ static int adis16201_probe(struct spi_device *spi)
|
|||
if (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)
|
||||
return ret;
|
||||
|
||||
ret = adis_initial_startup(st);
|
||||
if (ret)
|
||||
goto error_cleanup_buffer_trigger;
|
||||
return ret;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 = {
|
||||
|
@ -316,7 +297,6 @@ static struct spi_driver adis16201_driver = {
|
|||
.name = "adis16201",
|
||||
},
|
||||
.probe = adis16201_probe,
|
||||
.remove = adis16201_remove,
|
||||
};
|
||||
module_spi_driver(adis16201_driver);
|
||||
|
||||
|
|
|
@ -291,33 +291,15 @@ static int adis16209_probe(struct spi_device *spi)
|
|||
if (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)
|
||||
return ret;
|
||||
|
||||
ret = adis_initial_startup(st);
|
||||
if (ret)
|
||||
goto error_cleanup_buffer_trigger;
|
||||
ret = iio_device_register(indio_dev);
|
||||
if (ret)
|
||||
goto error_cleanup_buffer_trigger;
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
|
||||
error_cleanup_buffer_trigger:
|
||||
adis_cleanup_buffer_and_trigger(st, indio_dev);
|
||||
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 = {
|
||||
|
@ -325,7 +307,6 @@ static struct spi_driver adis16209_driver = {
|
|||
.name = "adis16209",
|
||||
},
|
||||
.probe = adis16209_probe,
|
||||
.remove = adis16209_remove,
|
||||
};
|
||||
module_spi_driver(adis16209_driver);
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
* Copyright 2018 Analog Devices Inc.
|
||||
*/
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
|
@ -113,6 +114,11 @@
|
|||
#define ADXL372_STATUS_1_AWAKE(x) (((x) >> 6) & 0x1)
|
||||
#define ADXL372_STATUS_1_ERR_USR_REGS(x) (((x) >> 7) & 0x1)
|
||||
|
||||
/* ADXL372_STATUS_2 */
|
||||
#define ADXL372_STATUS_2_INACT(x) (((x) >> 4) & 0x1)
|
||||
#define ADXL372_STATUS_2_ACT(x) (((x) >> 5) & 0x1)
|
||||
#define ADXL372_STATUS_2_AC2(x) (((x) >> 6) & 0x1)
|
||||
|
||||
/* ADXL372_INT1_MAP */
|
||||
#define ADXL372_INT1_MAP_DATA_RDY_MSK BIT(0)
|
||||
#define ADXL372_INT1_MAP_DATA_RDY_MODE(x) (((x) & 0x1) << 0)
|
||||
|
@ -131,8 +137,17 @@
|
|||
#define ADXL372_INT1_MAP_LOW_MSK BIT(7)
|
||||
#define ADXL372_INT1_MAP_LOW_MODE(x) (((x) & 0x1) << 7)
|
||||
|
||||
/* ADX372_THRESH */
|
||||
#define ADXL372_THRESH_VAL_H_MSK GENMASK(10, 3)
|
||||
#define ADXL372_THRESH_VAL_H_SEL(x) FIELD_GET(ADXL372_THRESH_VAL_H_MSK, x)
|
||||
#define ADXL372_THRESH_VAL_L_MSK GENMASK(2, 0)
|
||||
#define ADXL372_THRESH_VAL_L_SEL(x) FIELD_GET(ADXL372_THRESH_VAL_L_MSK, x)
|
||||
|
||||
/* The ADXL372 includes a deep, 512 sample FIFO buffer */
|
||||
#define ADXL372_FIFO_SIZE 512
|
||||
#define ADXL372_X_AXIS_EN(x) ((x) & BIT(0))
|
||||
#define ADXL372_Y_AXIS_EN(x) ((x) & BIT(1))
|
||||
#define ADXL372_Z_AXIS_EN(x) ((x) & BIT(2))
|
||||
|
||||
/*
|
||||
* At +/- 200g with 12-bit resolution, scale is computed as:
|
||||
|
@ -222,6 +237,20 @@ static const struct adxl372_axis_lookup adxl372_axis_lookup_table[] = {
|
|||
{ BIT(0) | BIT(1) | BIT(2), ADXL372_XYZ_FIFO },
|
||||
};
|
||||
|
||||
static const struct iio_event_spec adxl372_events[] = {
|
||||
{
|
||||
.type = IIO_EV_TYPE_THRESH,
|
||||
.dir = IIO_EV_DIR_RISING,
|
||||
.mask_separate = BIT(IIO_EV_INFO_VALUE),
|
||||
.mask_shared_by_all = BIT(IIO_EV_INFO_PERIOD) | BIT(IIO_EV_INFO_ENABLE),
|
||||
}, {
|
||||
.type = IIO_EV_TYPE_THRESH,
|
||||
.dir = IIO_EV_DIR_FALLING,
|
||||
.mask_separate = BIT(IIO_EV_INFO_VALUE),
|
||||
.mask_shared_by_all = BIT(IIO_EV_INFO_PERIOD) | BIT(IIO_EV_INFO_ENABLE),
|
||||
},
|
||||
};
|
||||
|
||||
#define ADXL372_ACCEL_CHANNEL(index, reg, axis) { \
|
||||
.type = IIO_ACCEL, \
|
||||
.address = reg, \
|
||||
|
@ -239,6 +268,8 @@ static const struct adxl372_axis_lookup adxl372_axis_lookup_table[] = {
|
|||
.shift = 4, \
|
||||
.endianness = IIO_BE, \
|
||||
}, \
|
||||
.event_spec = adxl372_events, \
|
||||
.num_event_specs = ARRAY_SIZE(adxl372_events) \
|
||||
}
|
||||
|
||||
static const struct iio_chan_spec adxl372_channels[] = {
|
||||
|
@ -252,8 +283,10 @@ struct adxl372_state {
|
|||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct iio_trigger *dready_trig;
|
||||
struct iio_trigger *peak_datardy_trig;
|
||||
enum adxl372_fifo_mode fifo_mode;
|
||||
enum adxl372_fifo_format fifo_format;
|
||||
unsigned int fifo_axis_mask;
|
||||
enum adxl372_op_mode op_mode;
|
||||
enum adxl372_act_proc_mode act_proc_mode;
|
||||
enum adxl372_odr odr;
|
||||
|
@ -261,10 +294,12 @@ struct adxl372_state {
|
|||
u32 act_time_ms;
|
||||
u32 inact_time_ms;
|
||||
u8 fifo_set_size;
|
||||
u8 int1_bitmask;
|
||||
u8 int2_bitmask;
|
||||
unsigned long int1_bitmask;
|
||||
unsigned long int2_bitmask;
|
||||
u16 watermark;
|
||||
__be16 fifo_buf[ADXL372_FIFO_SIZE];
|
||||
bool peak_fifo_mode_en;
|
||||
struct mutex threshold_m; /* lock for threshold */
|
||||
};
|
||||
|
||||
static const unsigned long adxl372_channel_masks[] = {
|
||||
|
@ -276,6 +311,46 @@ static const unsigned long adxl372_channel_masks[] = {
|
|||
0
|
||||
};
|
||||
|
||||
static ssize_t adxl372_read_threshold_value(struct iio_dev *indio_dev, unsigned int addr,
|
||||
u16 *threshold)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
__be16 raw_regval;
|
||||
u16 regval;
|
||||
int ret;
|
||||
|
||||
ret = regmap_bulk_read(st->regmap, addr, &raw_regval, sizeof(raw_regval));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
regval = be16_to_cpu(raw_regval);
|
||||
regval >>= 5;
|
||||
|
||||
*threshold = regval;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t adxl372_write_threshold_value(struct iio_dev *indio_dev, unsigned int addr,
|
||||
u16 threshold)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&st->threshold_m);
|
||||
ret = regmap_write(st->regmap, addr, ADXL372_THRESH_VAL_H_SEL(threshold));
|
||||
if (ret < 0)
|
||||
goto unlock;
|
||||
|
||||
ret = regmap_update_bits(st->regmap, addr + 1, GENMASK(7, 5),
|
||||
ADXL372_THRESH_VAL_L_SEL(threshold) << 5);
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&st->threshold_m);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int adxl372_read_axis(struct adxl372_state *st, u8 addr)
|
||||
{
|
||||
__be16 regval;
|
||||
|
@ -453,8 +528,8 @@ static int adxl372_set_inactivity_time_ms(struct adxl372_state *st,
|
|||
}
|
||||
|
||||
static int adxl372_set_interrupts(struct adxl372_state *st,
|
||||
unsigned char int1_bitmask,
|
||||
unsigned char int2_bitmask)
|
||||
unsigned long int1_bitmask,
|
||||
unsigned long int2_bitmask)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
@ -523,6 +598,39 @@ static int adxl372_get_status(struct adxl372_state *st,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void adxl372_arrange_axis_data(struct adxl372_state *st, __be16 *sample)
|
||||
{
|
||||
__be16 axis_sample[3];
|
||||
int i = 0;
|
||||
|
||||
memset(axis_sample, 0, 3 * sizeof(__be16));
|
||||
if (ADXL372_X_AXIS_EN(st->fifo_axis_mask))
|
||||
axis_sample[i++] = sample[0];
|
||||
if (ADXL372_Y_AXIS_EN(st->fifo_axis_mask))
|
||||
axis_sample[i++] = sample[1];
|
||||
if (ADXL372_Z_AXIS_EN(st->fifo_axis_mask))
|
||||
axis_sample[i++] = sample[2];
|
||||
|
||||
memcpy(sample, axis_sample, 3 * sizeof(__be16));
|
||||
}
|
||||
|
||||
static void adxl372_push_event(struct iio_dev *indio_dev, s64 timestamp, u8 status2)
|
||||
{
|
||||
unsigned int ev_dir = IIO_EV_DIR_NONE;
|
||||
|
||||
if (ADXL372_STATUS_2_ACT(status2))
|
||||
ev_dir = IIO_EV_DIR_RISING;
|
||||
|
||||
if (ADXL372_STATUS_2_INACT(status2))
|
||||
ev_dir = IIO_EV_DIR_FALLING;
|
||||
|
||||
if (ev_dir != IIO_EV_DIR_NONE)
|
||||
iio_push_event(indio_dev,
|
||||
IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_X_OR_Y_OR_Z,
|
||||
IIO_EV_TYPE_THRESH, ev_dir),
|
||||
timestamp);
|
||||
}
|
||||
|
||||
static irqreturn_t adxl372_trigger_handler(int irq, void *p)
|
||||
{
|
||||
struct iio_poll_func *pf = p;
|
||||
|
@ -536,6 +644,8 @@ static irqreturn_t adxl372_trigger_handler(int irq, void *p)
|
|||
if (ret < 0)
|
||||
goto err;
|
||||
|
||||
adxl372_push_event(indio_dev, iio_get_time_ns(indio_dev), status2);
|
||||
|
||||
if (st->fifo_mode != ADXL372_FIFO_BYPASSED &&
|
||||
ADXL372_STATUS_1_FIFO_FULL(status1)) {
|
||||
/*
|
||||
|
@ -554,8 +664,12 @@ static irqreturn_t adxl372_trigger_handler(int irq, void *p)
|
|||
goto err;
|
||||
|
||||
/* Each sample is 2 bytes */
|
||||
for (i = 0; i < fifo_entries; i += st->fifo_set_size)
|
||||
for (i = 0; i < fifo_entries; i += st->fifo_set_size) {
|
||||
/* filter peak detection data */
|
||||
if (st->peak_fifo_mode_en)
|
||||
adxl372_arrange_axis_data(st, &st->fifo_buf[i]);
|
||||
iio_push_to_buffers(indio_dev, &st->fifo_buf[i]);
|
||||
}
|
||||
}
|
||||
err:
|
||||
iio_trigger_notify_done(indio_dev->trig);
|
||||
|
@ -723,6 +837,129 @@ static int adxl372_write_raw(struct iio_dev *indio_dev,
|
|||
}
|
||||
}
|
||||
|
||||
static int adxl372_read_event_value(struct iio_dev *indio_dev, const struct iio_chan_spec *chan,
|
||||
enum iio_event_type type, enum iio_event_direction dir,
|
||||
enum iio_event_info info, int *val, int *val2)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
unsigned int addr;
|
||||
u16 raw_value;
|
||||
int ret;
|
||||
|
||||
switch (info) {
|
||||
case IIO_EV_INFO_VALUE:
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
addr = ADXL372_X_THRESH_ACT_H + 2 * chan->scan_index;
|
||||
ret = adxl372_read_threshold_value(indio_dev, addr, &raw_value);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
*val = raw_value * ADXL372_USCALE;
|
||||
*val2 = 1000000;
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
case IIO_EV_DIR_FALLING:
|
||||
addr = ADXL372_X_THRESH_INACT_H + 2 * chan->scan_index;
|
||||
ret = adxl372_read_threshold_value(indio_dev, addr, &raw_value);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
*val = raw_value * ADXL372_USCALE;
|
||||
*val2 = 1000000;
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
case IIO_EV_INFO_PERIOD:
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
*val = st->act_time_ms;
|
||||
*val2 = 1000;
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
case IIO_EV_DIR_FALLING:
|
||||
*val = st->inact_time_ms;
|
||||
*val2 = 1000;
|
||||
return IIO_VAL_FRACTIONAL;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static int adxl372_write_event_value(struct iio_dev *indio_dev, const struct iio_chan_spec *chan,
|
||||
enum iio_event_type type, enum iio_event_direction dir,
|
||||
enum iio_event_info info, int val, int val2)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
unsigned int val_ms;
|
||||
unsigned int addr;
|
||||
u16 raw_val;
|
||||
|
||||
switch (info) {
|
||||
case IIO_EV_INFO_VALUE:
|
||||
raw_val = DIV_ROUND_UP(val * 1000000, ADXL372_USCALE);
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
addr = ADXL372_X_THRESH_ACT_H + 2 * chan->scan_index;
|
||||
return adxl372_write_threshold_value(indio_dev, addr, raw_val);
|
||||
case IIO_EV_DIR_FALLING:
|
||||
addr = ADXL372_X_THRESH_INACT_H + 2 * chan->scan_index;
|
||||
return adxl372_write_threshold_value(indio_dev, addr, raw_val);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
case IIO_EV_INFO_PERIOD:
|
||||
val_ms = val * 1000 + DIV_ROUND_UP(val2, 1000);
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
return adxl372_set_activity_time_ms(st, val_ms);
|
||||
case IIO_EV_DIR_FALLING:
|
||||
return adxl372_set_inactivity_time_ms(st, val_ms);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static int adxl372_read_event_config(struct iio_dev *indio_dev, const struct iio_chan_spec *chan,
|
||||
enum iio_event_type type, enum iio_event_direction dir)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
return FIELD_GET(ADXL372_INT1_MAP_ACT_MSK, st->int1_bitmask);
|
||||
case IIO_EV_DIR_FALLING:
|
||||
return FIELD_GET(ADXL372_INT1_MAP_INACT_MSK, st->int1_bitmask);
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
static int adxl372_write_event_config(struct iio_dev *indio_dev, const struct iio_chan_spec *chan,
|
||||
enum iio_event_type type, enum iio_event_direction dir,
|
||||
int state)
|
||||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
|
||||
switch (dir) {
|
||||
case IIO_EV_DIR_RISING:
|
||||
set_mask_bits(&st->int1_bitmask, ADXL372_INT1_MAP_ACT_MSK,
|
||||
ADXL372_INT1_MAP_ACT_MODE(state));
|
||||
break;
|
||||
case IIO_EV_DIR_FALLING:
|
||||
set_mask_bits(&st->int1_bitmask, ADXL372_INT1_MAP_INACT_MSK,
|
||||
ADXL372_INT1_MAP_INACT_MODE(state));
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
}
|
||||
|
||||
static ssize_t adxl372_show_filter_freq_avail(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
|
@ -795,7 +1032,8 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
|
|||
unsigned int mask;
|
||||
int i, ret;
|
||||
|
||||
ret = adxl372_set_interrupts(st, ADXL372_INT1_MAP_FIFO_FULL_MSK, 0);
|
||||
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
ret = adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
@ -810,13 +1048,22 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
|
|||
return -EINVAL;
|
||||
|
||||
st->fifo_format = adxl372_axis_lookup_table[i].fifo_format;
|
||||
st->fifo_axis_mask = adxl372_axis_lookup_table[i].bits;
|
||||
st->fifo_set_size = bitmap_weight(indio_dev->active_scan_mask,
|
||||
indio_dev->masklength);
|
||||
|
||||
/* Configure the FIFO to store sets of impact event peak. */
|
||||
if (st->peak_fifo_mode_en) {
|
||||
st->fifo_set_size = 3;
|
||||
st->fifo_format = ADXL372_XYZ_PEAK_FIFO;
|
||||
}
|
||||
|
||||
/*
|
||||
* The 512 FIFO samples can be allotted in several ways, such as:
|
||||
* 170 sample sets of concurrent 3-axis data
|
||||
* 256 sample sets of concurrent 2-axis data (user selectable)
|
||||
* 512 sample sets of single-axis data
|
||||
* 170 sets of impact event peak (x, y, z)
|
||||
*/
|
||||
if ((st->watermark * st->fifo_set_size) > ADXL372_FIFO_SIZE)
|
||||
st->watermark = (ADXL372_FIFO_SIZE / st->fifo_set_size);
|
||||
|
@ -826,7 +1073,8 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
|
|||
ret = adxl372_configure_fifo(st);
|
||||
if (ret < 0) {
|
||||
st->fifo_mode = ADXL372_FIFO_BYPASSED;
|
||||
adxl372_set_interrupts(st, 0, 0);
|
||||
st->int1_bitmask &= ~ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -837,7 +1085,8 @@ static int adxl372_buffer_predisable(struct iio_dev *indio_dev)
|
|||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
|
||||
adxl372_set_interrupts(st, 0, 0);
|
||||
st->int1_bitmask &= ~ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
st->fifo_mode = ADXL372_FIFO_BYPASSED;
|
||||
adxl372_configure_fifo(st);
|
||||
|
||||
|
@ -854,12 +1103,11 @@ static int adxl372_dready_trig_set_state(struct iio_trigger *trig,
|
|||
{
|
||||
struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
unsigned long int mask = 0;
|
||||
|
||||
if (state)
|
||||
mask = ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
|
||||
return adxl372_set_interrupts(st, mask, 0);
|
||||
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
}
|
||||
|
||||
static int adxl372_validate_trigger(struct iio_dev *indio_dev,
|
||||
|
@ -867,7 +1115,7 @@ static int adxl372_validate_trigger(struct iio_dev *indio_dev,
|
|||
{
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
|
||||
if (st->dready_trig != trig)
|
||||
if (st->dready_trig != trig && st->peak_datardy_trig != trig)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
@ -878,6 +1126,25 @@ static const struct iio_trigger_ops adxl372_trigger_ops = {
|
|||
.set_trigger_state = adxl372_dready_trig_set_state,
|
||||
};
|
||||
|
||||
static int adxl372_peak_dready_trig_set_state(struct iio_trigger *trig,
|
||||
bool state)
|
||||
{
|
||||
struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
|
||||
struct adxl372_state *st = iio_priv(indio_dev);
|
||||
|
||||
if (state)
|
||||
st->int1_bitmask |= ADXL372_INT1_MAP_FIFO_FULL_MSK;
|
||||
|
||||
st->peak_fifo_mode_en = state;
|
||||
|
||||
return adxl372_set_interrupts(st, st->int1_bitmask, 0);
|
||||
}
|
||||
|
||||
static const struct iio_trigger_ops adxl372_peak_data_trigger_ops = {
|
||||
.validate_device = &iio_trigger_validate_own_device,
|
||||
.set_trigger_state = adxl372_peak_dready_trig_set_state,
|
||||
};
|
||||
|
||||
static IIO_CONST_ATTR_SAMP_FREQ_AVAIL("400 800 1600 3200 6400");
|
||||
static IIO_DEVICE_ATTR(in_accel_filter_low_pass_3db_frequency_available,
|
||||
0444, adxl372_show_filter_freq_avail, NULL, 0);
|
||||
|
@ -897,6 +1164,10 @@ static const struct iio_info adxl372_info = {
|
|||
.attrs = &adxl372_attrs_group,
|
||||
.read_raw = adxl372_read_raw,
|
||||
.write_raw = adxl372_write_raw,
|
||||
.read_event_config = adxl372_read_event_config,
|
||||
.write_event_config = adxl372_write_event_config,
|
||||
.read_event_value = adxl372_read_event_value,
|
||||
.write_event_value = adxl372_write_event_value,
|
||||
.debugfs_reg_access = &adxl372_reg_access,
|
||||
.hwfifo_set_watermark = adxl372_set_watermark,
|
||||
};
|
||||
|
@ -925,6 +1196,8 @@ int adxl372_probe(struct device *dev, struct regmap *regmap,
|
|||
st->regmap = regmap;
|
||||
st->irq = irq;
|
||||
|
||||
mutex_init(&st->threshold_m);
|
||||
|
||||
indio_dev->channels = adxl372_channels;
|
||||
indio_dev->num_channels = ARRAY_SIZE(adxl372_channels);
|
||||
indio_dev->available_scan_masks = adxl372_channel_masks;
|
||||
|
@ -955,13 +1228,27 @@ int adxl372_probe(struct device *dev, struct regmap *regmap,
|
|||
if (st->dready_trig == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
st->peak_datardy_trig = devm_iio_trigger_alloc(dev,
|
||||
"%s-dev%d-peak",
|
||||
indio_dev->name,
|
||||
indio_dev->id);
|
||||
if (!st->peak_datardy_trig)
|
||||
return -ENOMEM;
|
||||
|
||||
st->dready_trig->ops = &adxl372_trigger_ops;
|
||||
st->peak_datardy_trig->ops = &adxl372_peak_data_trigger_ops;
|
||||
st->dready_trig->dev.parent = dev;
|
||||
st->peak_datardy_trig->dev.parent = dev;
|
||||
iio_trigger_set_drvdata(st->dready_trig, indio_dev);
|
||||
iio_trigger_set_drvdata(st->peak_datardy_trig, indio_dev);
|
||||
ret = devm_iio_trigger_register(dev, st->dready_trig);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = devm_iio_trigger_register(dev, st->peak_datardy_trig);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
indio_dev->trig = iio_trigger_get(st->dready_trig);
|
||||
|
||||
ret = devm_request_threaded_irq(dev, st->irq,
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
|
@ -46,9 +47,16 @@ static const struct i2c_device_id 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 = {
|
||||
.driver = {
|
||||
.name = "adxl372_i2c",
|
||||
.of_match_table = adxl372_of_match,
|
||||
},
|
||||
.probe = adxl372_i2c_probe,
|
||||
.id_table = adxl372_i2c_id,
|
||||
|
|
|
@ -40,8 +40,8 @@ static const struct spi_device_id adxl372_spi_id[] = {
|
|||
MODULE_DEVICE_TABLE(spi, adxl372_spi_id);
|
||||
|
||||
static const struct of_device_id adxl372_of_match[] = {
|
||||
{ .compatible = "adi,adxl372" },
|
||||
{ },
|
||||
{ .compatible = "adi,adxl372" },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, adxl372_of_match);
|
||||
|
||||
|
|
|
@ -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[] = {
|
||||
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_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bma180_accel_get_mount_matrix),
|
||||
{ }
|
||||
|
@ -1000,19 +1000,15 @@ static int bma180_probe(struct i2c_client *client,
|
|||
return ret;
|
||||
|
||||
data->vdd_supply = devm_regulator_get(dev, "vdd");
|
||||
if (IS_ERR(data->vdd_supply)) {
|
||||
if (PTR_ERR(data->vdd_supply) != -EPROBE_DEFER)
|
||||
dev_err(dev, "Failed to get vdd regulator %d\n",
|
||||
(int)PTR_ERR(data->vdd_supply));
|
||||
return PTR_ERR(data->vdd_supply);
|
||||
}
|
||||
if (IS_ERR(data->vdd_supply))
|
||||
return dev_err_probe(dev, PTR_ERR(data->vdd_supply),
|
||||
"Failed to get vdd regulator\n");
|
||||
|
||||
data->vddio_supply = devm_regulator_get(dev, "vddio");
|
||||
if (IS_ERR(data->vddio_supply)) {
|
||||
if (PTR_ERR(data->vddio_supply) != -EPROBE_DEFER)
|
||||
dev_err(dev, "Failed to get vddio regulator %d\n",
|
||||
(int)PTR_ERR(data->vddio_supply));
|
||||
return PTR_ERR(data->vddio_supply);
|
||||
}
|
||||
if (IS_ERR(data->vddio_supply))
|
||||
return dev_err_probe(dev, PTR_ERR(data->vddio_supply),
|
||||
"Failed to get vddio regulator\n");
|
||||
|
||||
/* Typical voltage 2.4V these are min and max */
|
||||
ret = regulator_set_voltage(data->vdd_supply, 1620000, 3600000);
|
||||
if (ret)
|
||||
|
|
|
@ -2,16 +2,18 @@
|
|||
/**
|
||||
* 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/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
#include <linux/iio/buffer.h>
|
||||
#include <linux/iio/iio.h>
|
||||
#include <linux/iio/sysfs.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/iio/trigger_consumer.h>
|
||||
#include <linux/iio/triggered_buffer.h>
|
||||
|
||||
|
@ -23,14 +25,13 @@
|
|||
#define BMA220_REG_SUSPEND 0x18
|
||||
|
||||
#define BMA220_CHIP_ID 0xDD
|
||||
#define BMA220_READ_MASK 0x80
|
||||
#define BMA220_RANGE_MASK 0x03
|
||||
#define BMA220_READ_MASK BIT(7)
|
||||
#define BMA220_RANGE_MASK GENMASK(1, 0)
|
||||
#define BMA220_DATA_SHIFT 2
|
||||
#define BMA220_SUSPEND_SLEEP 0xFF
|
||||
#define BMA220_SUSPEND_WAKE 0x00
|
||||
|
||||
#define BMA220_DEVICE_NAME "bma220"
|
||||
#define BMA220_SCALE_AVAILABLE "0.623 1.248 2.491 4.983"
|
||||
|
||||
#define BMA220_ACCEL_CHANNEL(index, reg, axis) { \
|
||||
.type = IIO_ACCEL, \
|
||||
|
@ -55,19 +56,8 @@ enum bma220_axis {
|
|||
AXIS_Z,
|
||||
};
|
||||
|
||||
static IIO_CONST_ATTR(in_accel_scale_available, BMA220_SCALE_AVAILABLE);
|
||||
|
||||
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}
|
||||
static const int bma220_scale_table[][2] = {
|
||||
{0, 623000}, {1, 248000}, {2, 491000}, {4, 983000},
|
||||
};
|
||||
|
||||
struct bma220_data {
|
||||
|
@ -182,10 +172,26 @@ static int bma220_write_raw(struct iio_dev *indio_dev,
|
|||
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 = {
|
||||
.read_raw = bma220_read_raw,
|
||||
.write_raw = bma220_write_raw,
|
||||
.attrs = &bma220_attribute_group,
|
||||
.read_avail = bma220_read_avail,
|
||||
};
|
||||
|
||||
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 */
|
||||
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret == BMA220_SUSPEND_WAKE)
|
||||
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else if (ret == BMA220_SUSPEND_WAKE)
|
||||
return bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret == BMA220_SUSPEND_WAKE)
|
||||
return -EBUSY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -212,10 +220,12 @@ static int bma220_deinit(struct spi_device *spi)
|
|||
|
||||
/* Make sure the chip is powered off */
|
||||
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret == BMA220_SUSPEND_SLEEP)
|
||||
ret = bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
else if (ret == BMA220_SUSPEND_SLEEP)
|
||||
return bma220_read_reg(spi, BMA220_REG_SUSPEND);
|
||||
if (ret == BMA220_SUSPEND_SLEEP)
|
||||
return -EBUSY;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -245,7 +255,7 @@ static int bma220_probe(struct spi_device *spi)
|
|||
indio_dev->available_scan_masks = bma220_accel_scan_masks;
|
||||
|
||||
ret = bma220_init(data->spi_device);
|
||||
if (ret < 0)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = iio_triggered_buffer_setup(indio_dev, iio_pollfunc_store_time,
|
||||
|
@ -278,56 +288,43 @@ static int bma220_remove(struct spi_device *spi)
|
|||
return bma220_deinit(spi);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static int bma220_suspend(struct device *dev)
|
||||
static __maybe_unused int bma220_suspend(struct device *dev)
|
||||
{
|
||||
struct bma220_data *data =
|
||||
iio_priv(spi_get_drvdata(to_spi_device(dev)));
|
||||
struct bma220_data *data = iio_priv(dev_get_drvdata(dev));
|
||||
|
||||
/* The chip can be suspended/woken up by a simple register read. */
|
||||
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 =
|
||||
iio_priv(spi_get_drvdata(to_spi_device(dev)));
|
||||
struct bma220_data *data = iio_priv(dev_get_drvdata(dev));
|
||||
|
||||
return bma220_read_reg(data->spi_device, BMA220_REG_SUSPEND);
|
||||
}
|
||||
|
||||
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[] = {
|
||||
{"bma220", 0},
|
||||
{}
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
static const struct acpi_device_id bma220_acpi_id[] = {
|
||||
{"BMA0220", 0},
|
||||
{}
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(spi, bma220_spi_id);
|
||||
#endif
|
||||
|
||||
static struct spi_driver bma220_driver = {
|
||||
.driver = {
|
||||
.name = "bma220_spi",
|
||||
.pm = BMA220_PM_OPS,
|
||||
.acpi_match_table = ACPI_PTR(bma220_acpi_id),
|
||||
.pm = &bma220_pm_ops,
|
||||
.acpi_match_table = bma220_acpi_id,
|
||||
},
|
||||
.probe = bma220_probe,
|
||||
.remove = bma220_remove,
|
||||
.id_table = bma220_spi_id,
|
||||
};
|
||||
|
||||
module_spi_driver(bma220_driver);
|
||||
|
||||
MODULE_AUTHOR("Tiberiu Breana <tiberiu.a.breana@intel.com>");
|
||||
|
|
|
@ -215,7 +215,7 @@ static int cros_ec_accel_legacy_probe(struct platform_device *pdev)
|
|||
return -ENOMEM;
|
||||
|
||||
ret = cros_ec_sensors_core_init(pdev, indio_dev, true,
|
||||
cros_ec_sensors_capture, NULL);
|
||||
cros_ec_sensors_capture, NULL, false);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -1543,22 +1543,14 @@ static int mma8452_probe(struct i2c_client *client,
|
|||
data->chip_info = match->data;
|
||||
|
||||
data->vdd_reg = devm_regulator_get(&client->dev, "vdd");
|
||||
if (IS_ERR(data->vdd_reg)) {
|
||||
if (PTR_ERR(data->vdd_reg) == -EPROBE_DEFER)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
dev_err(&client->dev, "failed to get VDD regulator!\n");
|
||||
return PTR_ERR(data->vdd_reg);
|
||||
}
|
||||
if (IS_ERR(data->vdd_reg))
|
||||
return dev_err_probe(&client->dev, PTR_ERR(data->vdd_reg),
|
||||
"failed to get VDD regulator!\n");
|
||||
|
||||
data->vddio_reg = devm_regulator_get(&client->dev, "vddio");
|
||||
if (IS_ERR(data->vddio_reg)) {
|
||||
if (PTR_ERR(data->vddio_reg) == -EPROBE_DEFER)
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
dev_err(&client->dev, "failed to get VDDIO regulator!\n");
|
||||
return PTR_ERR(data->vddio_reg);
|
||||
}
|
||||
if (IS_ERR(data->vddio_reg))
|
||||
return dev_err_probe(&client->dev, PTR_ERR(data->vddio_reg),
|
||||
"failed to get VDDIO regulator!\n");
|
||||
|
||||
ret = regulator_enable(data->vdd_reg);
|
||||
if (ret) {
|
||||
|
|
|
@ -340,7 +340,7 @@ config AXP288_ADC
|
|||
|
||||
config BCM_IPROC_ADC
|
||||
tristate "Broadcom IPROC ADC driver"
|
||||
depends on ARCH_BCM_IPROC || COMPILE_TEST
|
||||
depends on (ARCH_BCM_IPROC && OF) || COMPILE_TEST
|
||||
depends on MFD_SYSCON
|
||||
default ARCH_BCM_CYGNUS
|
||||
help
|
||||
|
@ -863,7 +863,7 @@ config RN5T618_ADC
|
|||
|
||||
config ROCKCHIP_SARADC
|
||||
tristate "Rockchip SARADC driver"
|
||||
depends on ARCH_ROCKCHIP || (ARM && COMPILE_TEST)
|
||||
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
||||
depends on RESET_CONTROLLER
|
||||
select IIO_BUFFER
|
||||
select IIO_TRIGGERED_BUFFER
|
||||
|
|
|
@ -20,8 +20,6 @@
|
|||
#include <linux/iio/sysfs.h>
|
||||
#include <linux/iio/events.h>
|
||||
|
||||
#include <linux/platform_data/ad7291.h>
|
||||
|
||||
/*
|
||||
* Simplified handling
|
||||
*
|
||||
|
@ -465,7 +463,6 @@ static const struct iio_info ad7291_info = {
|
|||
static int ad7291_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct ad7291_platform_data *pdata = client->dev.platform_data;
|
||||
struct ad7291_chip_info *chip;
|
||||
struct iio_dev *indio_dev;
|
||||
int ret;
|
||||
|
@ -475,16 +472,6 @@ static int ad7291_probe(struct i2c_client *client,
|
|||
return -ENOMEM;
|
||||
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);
|
||||
/* this is only used for device removal purposes */
|
||||
i2c_set_clientdata(client, indio_dev);
|
||||
|
@ -495,8 +482,21 @@ static int ad7291_probe(struct i2c_client *client,
|
|||
AD7291_T_SENSE_MASK | /* Tsense always enabled */
|
||||
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;
|
||||
}
|
||||
|
||||
indio_dev->name = id->name;
|
||||
indio_dev->channels = ad7291_channels;
|
||||
|
@ -567,9 +567,16 @@ static const struct i2c_device_id 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 = {
|
||||
.driver = {
|
||||
.name = KBUILD_MODNAME,
|
||||
.of_match_table = ad7291_of_match,
|
||||
},
|
||||
.probe = ad7291_probe,
|
||||
.remove = ad7291_remove,
|
||||
|
|
|
@ -310,8 +310,10 @@ static int ad7292_probe(struct spi_device *spi)
|
|||
|
||||
for_each_available_child_of_node(spi->dev.of_node, child) {
|
||||
diff_channels = of_property_read_bool(child, "diff-channels");
|
||||
if (diff_channels)
|
||||
if (diff_channels) {
|
||||
of_node_put(child);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (diff_channels) {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue