Merge tag 'iio-for-7.3a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next

Jonathan writes:

IIO new device support, features, cleanup for 7.3

Includes a merge of 7.2-rc2 to pick up the changes around
mod_devicetable.h and reduce resulting conflicts around includes.

New device support
------------------

adi,ad3530R
- Add support for the AD3532R and AD3532 16 channel DACs.
adi,ad4080
- Add support for the AD4883 ADC.
adi,ad5686
- Add support for AD5313R, AD5317R, AD5674, AD5687R, AD5689, AD5689R DACs
  over SPI
- Add support for AD5316R, AD5674, AD5697R and AD5696 DACs over I2C
- Significant driver refactoring prior to these additions, partly to reduce
  bus traffic and to add triggered buffer and gain control support. An
  earlier set added support for missing supplies, reset and LDAC GPIO.
adi,adf41513
- New driver to support this PLL frequency synthesizer that runs up to
  26.5 GHz.
- Included infrastructure to handle higher precision attributes with
  extensive tests
adi,ltc2378-20
- New driver supporting LTC2338, LTC2364, LTC2367, LTC2368, LT2369, LTC2370
  LTC2376, LTC2377, LTC2378, LTC2379 and LTC23980 ADCs with both high speed
  capture via appropriate backend and conventional triggered buffer SPI
  capture.
invensense,icm42607
- New driver for this IMU.
mediateck,mt6323
- New driver for this PMIC ADC.
microchip,mcp47a1
- New driver for this I2C 6 bit DAC.
nxp,mcf54415-dac
- New driver for this DAC found in NXP SoCs.
qst,qmc5884l
- New driver for this 3 axis magnetometer. Included dt vendor entry for qst.
qst,qmc6308
- New driver for this 3 axis magnetometer.
sensiron,slf3s
- New driver for this liquid flow sensor. Includes adding IIO_VOLUMEFLOW
  channel type.
st,vl53l1x
- Refactors to improve readability.
ti,ads112c14
- New driver supporting the ADS112C14 and ADS122C14 ADCs. These bring
  some new ABI for input chopping, particular useful for resistive sensors
  like thermocouples or Wheatstone bridges.
- Support CRC8 detection of corruption on the bus.
- Support buffered reads.
ti,tmp117
- (trivial) Add support for the tmp119 temperature sensor.
xilinx,versal-sysmon
- New ADC driver for this block found on various FPGAs including various
  bus interfaces, threshold and oversampling support.

dt binding updates
------------------
new shared bindings
- excitation-channels and excitation-current-nanoamp allow per channel
  specification of currents used for resistive sensor measurement.
- reference-sources property to allow selection of a per channel reference.
rockchip,saradc
- Add RV1106 which is compatible with the RV3588.

Features
--------

buffer-dmaengine
- Allow cyclic buffers, useful for repeating sequence generation with DACs.
devantech,dmard09
- Implement read back of channel scale - previously interface always
  returned an error.
hid,sensors-als
- Enable separate channel scaling for hardware that supports it.
invensense,timestamp library
- Various precision improvements.
invensense,icm42600
- Add support for hwfifo watermark interfaces.
taos,tcs3472
- Support wait time and sampling frequency control.

Cleanups, minor fixes
---------------------

Minor cleanups not mentioned at all in this summary such
as white space fixes or typos.

Affecting various drivers
- Cleanup of conditionals that had no affect.
- Drop some runtime pm local wrappers as now runtime_pm does the
  mark_last_busy part inside the put, these provide no useful code
  deduplication or readability advantages over directly calling the
  runtime_pm functions.
- Return 0 from write_raw() on success.
- Use of dev_err_probe() to simplify code and sometimes provide useful
  info for deferred probe debugging.
- Drop some redundant error prints where the called function already
  provides information on errors.
- Make some read only arrays in functions static.
- Fix up missing handling of regcache_sync() errors.
- Drop some false kernel-doc markings.
- Add missing MODULE_DEVICE_TABLE for some of_match_id tables.
- Use local variables for things like the struct device to shorten and
  improve readability of code.
- Drop some unused structure elements.
- Reorder dds.h macro parameters to be inline with others.
- Header reorders and IWYU. Often part of a more significant series.
- Remove abstractions designed to allow a driver to support multiple device
  types, when they have been around a long time and only the original part
  showed up.
- Initialize spi_device_id arrays using member names following dropping of
  driver data from drivers that didn't actually use it.
- Catch up with i2c_device_id tables added since previous effort to use
  named initializers for all those.
- Use kernel types in a few places instead of standard C ones or bare
  unsigned.

Misc
- Update Xilinx AMS maintainer.
- Update email address for Maxwell Doose.
- Update email address for Siratul Islam.
- Update email address for Tomasz Duszynski and re-add Tomasz to
  various maintainer entries.
Docs
- Encourage use of differential channel naming even when there is no
  flexibility in input to differential pair mapping. Intended to
  provide a strong signal to userspace that a channel is differential.
adi,ad_sigma_delta
- Allow COMPILE_TEST without any users.
adi,ad2s1201
- Refactor trigger handler to avoid mix of guard() and goto.
adi,ad5686
- Avoid potential NULL dereference is user forces a driver bind.
adi,ad5696
- Add a couple of missing entries to the of_match_id table and update
  binding to match.
atmel,ad91_adc
- Use const char * for DT string property allowing a cast to be dropped.
avia,hx711
- Various refactors and cleanup to enable support of additional parts
  (to come)
- Add missing supply and gpio dt-bindings.
bosch,bmc150
- Harden against device reporting too large a FIFO sample count.
- Use FIELD_PREP() / FIELD_GET() to improve readability.
freescale,fxls8962af
- Harden against device reporting too large a FIFO sample count.
hid-sensors-*
- Reorder probe to not expose userspace interfaces until the rest of
  the setup is done to avoid potentially dropping data.
honeywell,abp2030pa
- Drop an unreachable return.
invensens,icm45600
- Harden against bad value of FIFO sample count from device.
- Use i2c_match_data if firmware table sourced match data isn't available.
nxp,mpl1115
- Ensure runtime_pm is balanced on error in probe.
rohm,bm1390
- Make the driver slightly more likely to recover from transient errors.
sensiron,sgp30
- Handle thread creation errors.
st,lsm6dsx
- Update the enable mask when doing sensor fusion to avoid incorrect fifo
  data handling.
st,stm32-dfsdm
- Treat dt flags as booleans.
ti,ads1015
- Switch to devm helpers which simplified code and closed a resource leak.
ti,opt3001
- Split complicated opt3001_get_processed() logic into irq an no irq
  helper functions.
- Use devm to simplify code.
- Use guard() to simplify code.
- Reorder probe so final call exposes userspace interfaces.
- Various other more minor cleanup
taos,tsl2772
- Fix calibscale readback to check right channel type.
taos,tsl2583
- Use sysfs_emit() and sysfs_emit_at() to replace open coded equivalents.

* tag 'iio-for-7.3a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (232 commits)
  iio: dac: mcp47a1: add support for new device
  dt-bindings: iio: dac: add support for mcp47a1
  iio: Update email for Maxwell Doose
  iio: imu: st_lsm6dsx: Update enable mask when using sensor fusion
  iio: light: cm32181: return zero after writing calibscale
  iio: flow: add Sensirion SLF3S liquid flow sensor driver
  iio: core: add IIO_VAL_DECIMAL64_FEMTO format type
  dt-bindings: iio: flow: add Sensirion SLF3S liquid flow sensor
  iio: types: add IIO_VOLUMEFLOW channel type
  iio: ABI: Encourage differential voltage ABI usage
  iio: adc: ltc2378: Add support for LTC2338-18
  iio: adc: ltc2378: Enable triggered buffer data capture
  iio: adc: ltc2378: Enable high-speed data capture
  iio: adc: ltc2378: Add support for LTC2378-20 and similar ADCs
  dt-bindings: iio: adc: Add ltc2378
  iio: magnetometer: ak8974: remove conditional return with no effect
  iio: light: tsl2583: remove conditional return with no effect
  iio: adc: rcar-gyroadc: remove rcar_gyroadc_set_power() helper
  iio: light: vcnl4000: remove vcnl4000_set_pm_runtime_state() helper
  iio: light: vcnl4035: remove vcnl4035_set_pm_runtime_state() helper
  ...
This commit is contained in:
Greg Kroah-Hartman
2026-08-19 09:45:01 +02:00
437 changed files with 15106 additions and 2565 deletions

View File

@@ -594,6 +594,7 @@ Mauro Carvalho Chehab <mchehab@kernel.org> <mchehab@s-opensource.com>
Maxime Ripard <mripard@kernel.org> <maxime@cerno.tech>
Maxime Ripard <mripard@kernel.org> <maxime.ripard@bootlin.com>
Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
Maxwell Doose <maxwell@maxwelld.cc> <m32285159@gmail.com>
Maya Erez <quic_merez@quicinc.com> <merez@codeaurora.org>
Mayuresh Janorkar <mayur@ti.com>
Md Sadre Alam <quic_mdalam@quicinc.com> <mdalam@codeaurora.org>
@@ -878,6 +879,7 @@ Tobias Klauser <tklauser@distanz.ch> <klto@zhaw.ch>
Tobias Klauser <tklauser@distanz.ch> <tklauser@nuerscht.ch>
Tobias Klauser <tklauser@distanz.ch> <tklauser@xenon.tklauser.home>
Todor Tomov <todor.too@gmail.com> <todor.tomov@linaro.org>
Tomasz Duszynski <tduszyns@gmail.com> <tomasz.duszynski@octakon.com>
Tomasz Jeznach <tomasz.jeznach@linux.dev> <tjeznach@rivosinc.com>
Tony Luck <tony.luck@intel.com>
Trilok Soni <quic_tsoni@quicinc.com> <tsoni@codeaurora.org>

View File

@@ -162,10 +162,11 @@ Contact: linux-iio@vger.kernel.org
Description:
Raw (unscaled) differential voltage measurement equivalent to
channel Y - channel Z where these channel numbers apply to the
physically equivalent inputs when non differential readings are
separately available. In differential only parts, then all that
is required is a consistent labeling. Units after application
of scale and offset are millivolts.
physically equivalent inputs when non-differential readings are
separately available. Even though differential-only parts had
been merely required to have consistent channel labeling, this
ABI is preferred over the non-differential one for those chips.
Units after application of scale and offset are millivolts.
What: /sys/bus/iio/devices/iio:deviceX/in_altvoltageY_rms_raw
KernelVersion: 6.18
@@ -507,6 +508,8 @@ What: /sys/bus/iio/devices/iio:deviceX/in_intensity_red_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_green_scale
What: /sys/bus/iio/devices/iio:deviceX/in_intensity_blue_scale
What: /sys/bus/iio/devices/iio:deviceX/in_concentration_co2_scale
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_scale
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_scale
KernelVersion: 2.6.35
Contact: linux-iio@vger.kernel.org
Description:
@@ -770,6 +773,7 @@ Description:
3.85kohm_to_gnd: connected to ground via a 3.85kOhm resistor,
6kohm_to_gnd: connected to ground via a 6kOhm resistor,
7.7kohm_to_gnd: connected to ground via a 7.7kOhm resistor,
10kohm_to_gnd: connected to ground via a 10kOhm resistor,
16kohm_to_gnd: connected to ground via a 16kOhm resistor,
20kohm_to_gnd: connected to ground via a 20kOhm resistor,
32kohm_to_gnd: connected to ground via a 32kOhm resistor,
@@ -917,7 +921,7 @@ Description:
Note the driver will assume the last p events requested are
to be enabled where p is how many it supports (which may vary
depending on the exact set requested. So if you want to be
depending on the exact set requested). So if you want to be
sure you have set what you think you have, check the contents of
these attributes after everything is configured. Drivers may
have to buffer any parameters so that they are consistent when
@@ -973,7 +977,7 @@ Description:
Note the driver will assume the last p events requested are
to be enabled where p is however many it supports (which may
vary depending on the exact set requested. So if you want to be
vary depending on the exact set requested). So if you want to be
sure you have set what you think you have, check the contents of
these attributes after everything is configured. Drivers may
have to buffer any parameters so that they are consistent when
@@ -1528,9 +1532,9 @@ Description:
the unused bits, so to get a clean value the bits value must be
used to mask the buffer output value appropriately. The storagebits
value also specifies the data alignment. So s48/64>>2 will be a
signed 48 bit integer stored in a 64 bit location aligned to a 64
bit boundary. To obtain the clean value, shift right 2 and apply a
mask to zero the top 16 bits of the result.
signed 48-bit integer stored in a 64-bit location aligned to a
64-bit boundary. To obtain the clean value, shift right 2 and apply
a mask to zero the top 16 bits of the result.
For other storage combinations this attribute will be extended
appropriately.
@@ -2496,3 +2500,12 @@ Description:
seconds, expressed as:
- a range specified as "[min step max]"
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_raw
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_raw
KernelVersion: 7.3
Contact: linux-iio@vger.kernel.org
Description:
Raw (unscaled) volumetric flow rate reading from the channel.
To convert to standard units (cubic metres per second, m^3/s)
apply the channel's _scale (and _offset, when present).

View File

@@ -16,7 +16,7 @@ Description:
In bridge applications, such as strain gauges and load cells,
the bridge itself consumes the majority of the current in the
system. To minimize the current consumption of the system,
the bridge can be disconnected (when it is not being used
the bridge can be disconnected (when it is not being used)
using the bridge_switch_en attribute.
What: /sys/bus/iio/devices/iio:deviceX/in_voltage2-voltage2_shorted_raw

View File

@@ -0,0 +1,21 @@
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_medium
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_medium
KernelVersion: 7.3
Contact: linux-iio@vger.kernel.org
Description:
The calibration medium the flow sensor uses to convert its
raw reading into a volumetric flow rate. Liquid flow sensors
are factory-calibrated per medium, so the selected medium has
to match the fluid actually flowing through the sensor for the
reported flow rate to be correct.
Reading returns the currently active medium; writing one of the
strings listed in in_volumeflow_medium_available selects it.
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflow_medium_available
What: /sys/bus/iio/devices/iio:deviceX/in_volumeflowY_medium_available
KernelVersion: 7.3
Contact: linux-iio@vger.kernel.org
Description:
Space separated list of the calibration media supported by the
device, e.g. "water ipa".

View File

@@ -0,0 +1,11 @@
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_resolution
KernelVersion: 3.4.0
Contact: linux-iio@vger.kernel.org
Description:
Stores channel Y frequency resolution/channel spacing in Hz for PLL
devices. The given value directly influences the operating mode when
fractional-N synthesis is required, as it derives values for
configurable modulus parameters used in the calculation of the output
frequency. It is assumed that the algorithm used to compute the various
dividers is able to generate proper values for multiples of the channel
spacing.

View File

@@ -1,13 +1,3 @@
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_frequency_resolution
KernelVersion: 3.4.0
Contact: linux-iio@vger.kernel.org
Description:
Stores channel Y frequency resolution/channel spacing in Hz.
The value given directly influences the MODULUS used by
the fractional-N PLL. It is assumed that the algorithm
that is used to compute the various dividers, is able to
generate proper values for multiples of channel spacing.
What: /sys/bus/iio/devices/iio:deviceX/out_altvoltageY_refin_frequency
KernelVersion: 3.4.0
Contact: linux-iio@vger.kernel.org

View File

@@ -73,6 +73,47 @@ properties:
device design and can interact with other characteristics such as
settling time.
reference-sources:
$ref: /schemas/types.yaml#/definitions/string-array
description:
Indicates the voltage reference source or sources for this channel. Some
ADCs usually allow choosing between internal reference sources or a pair
of external pins.
input-chopping:
type: boolean
description:
If set, the positive and negative input channels are swapped on every
other conversion to reduce offset error. This generally comes at the
expense of added settling time between conversions, so should be omitted
on systems with high-frequency signals or high data rate requirements.
excitation-channels:
$ref: /schemas/types.yaml#/definitions/uint32-array
description:
Excitation current sources provide current to resistive temperature
devices (RTDs), thermistors, diodes and other resistive sensors that
require constant current biasing.
This array describes the mux configuration of the excitation current
sources. The values correspond to pins similar to the diff-channels and
single-channel properties.
excitation-current-nanoamp:
description:
Excitation current sources provide current to resistive temperature
devices (RTDs), thermistors, diodes and other resistive sensors that
require constant current biasing.
This array describes the current configuration of the excitation current
sources. The index in the array corresponds to the same index in the
excitation-channels array.
burn-out-current-nanoamp:
description:
Burn-out current sources provide current to the channel's input pins for
open-circuit or short-circuit detection.
anyOf:
- oneOf:
- required:

View File

@@ -39,6 +39,7 @@ properties:
- adi,ad4087
- adi,ad4088
- adi,ad4880
- adi,ad4883
- adi,ad4884
reg:
@@ -102,6 +103,7 @@ allOf:
contains:
enum:
- adi,ad4880
- adi,ad4883
- adi,ad4884
then:
properties:

View File

@@ -0,0 +1,170 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/adi,ltc2378.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices LTC2378 and similar Analog to Digital Converters
maintainers:
- Marcelo Schmitt <marcelo.schmitt@analog.com>
description: |
Analog Devices LTC2378 series of ADCs.
Specifications can be found at:
https://www.analog.com/media/en/technical-documentation/data-sheets/233818fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236416fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236418f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236716fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236718f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236816f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236818f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236918fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237016fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237616fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237618fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237620fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237716fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237718fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237720fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237816fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237818fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237820fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237918fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/238016fb.pdf
$ref: /schemas/spi/spi-peripheral-props.yaml#
properties:
compatible:
oneOf:
# Single compatible string match.
- enum:
- adi,ltc2338-18
- adi,ltc2364-16
- adi,ltc2364-18
- adi,ltc2376-16
- adi,ltc2376-18
- adi,ltc2376-20
# Low sample rate fallback for 16-bit unipolar sensors.
- items:
- enum:
- adi,ltc2370-16 # 2 MSPS
- adi,ltc2368-16 # 1 MSPS
- adi,ltc2367-16 # 500 kSPS
- const: adi,ltc2364-16 # fallback (250 kSPS)
# Low sample rate fallback for 18-bit unipolar sensors.
- items:
- enum:
- adi,ltc2369-18 # 1.6 MSPS
- adi,ltc2368-18 # 1 MSPS
- adi,ltc2367-18 # 500 kSPS
- const: adi,ltc2364-18 # fallback (250 kSPS)
# Low sample rate fallback for 16-bit bipolar sensors.
- items:
- enum:
- adi,ltc2380-16 # 2 MSPS
- adi,ltc2378-16 # 1 MSPS
- adi,ltc2377-16 # 500 kSPS
- const: adi,ltc2376-16 # fallback (250 kSPS)
# Low sample rate fallback for 18-bit bipolar sensors.
- items:
- enum:
- adi,ltc2379-18 # 1.6 MSPS
- adi,ltc2378-18 # 1 MSPS
- adi,ltc2377-18 # 500 kSPS
- const: adi,ltc2376-18 # fallback (250 kSPS)
# Low sample rate fallback for 20-bit bipolar sensors.
- items:
- enum:
- adi,ltc2378-20 # 1 MSPS
- adi,ltc2377-20 # 500 kSPS
- const: adi,ltc2376-20 # fallback (250 kSPS)
reg:
maxItems: 1
spi-max-frequency:
maximum: 100000000
vdd-supply:
description: A 2.5V supply that powers the chip (VDD).
ovdd-supply:
description:
A 1.71V to 5.25V supply that sets the logic level for digital interface.
ref-supply:
description:
Voltage reference input that determines the scale of ADC conversions.
refin-supply:
description:
Alternative voltage reference input.
cnv-gpios:
description:
When provided, this property indicates the GPIO that is connected to the
CNV pin.
maxItems: 1
pwms:
description: PWM signal connected to the CNV pin.
maxItems: 1
interrupts:
description:
Interrupt for signaling the completion of conversion results. The active
low signal provided on the BUSY pin asserts when ADC conversions finish.
maxItems: 1
required:
- compatible
- reg
- vdd-supply
- ovdd-supply
allOf:
# Except for LTC2338, all designs require a voltage reference input
- if:
properties:
compatible:
not:
contains:
enum:
- adi,ltc2338-18
then:
required:
- ref-supply
properties:
refin-supply: false
else:
properties:
ref-supply: false
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
adc@0 {
compatible = "adi,ltc2378-20", "adi,ltc2376-20";
reg = <0>;
spi-max-frequency = <71000000>;
vdd-supply = <&supply_2_5V>;
ovdd-supply = <&supply_3_3V>;
ref-supply = <&supply_5V>;
cnv-gpios = <&gpio0 88 GPIO_ACTIVE_HIGH>;
interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpio>;
};
};

View File

@@ -33,6 +33,26 @@ properties:
description:
Analog supply voltage (AVDD).
vsup-supply:
description:
Supply voltage for the on-chip regulator (VSUP).
dvdd-supply:
description:
Digital supply voltage (DVDD). On the HX711, DVDD is a
board-supplied digital rail; it was missing from the original
binding. On the HX710B, DVDD must be greater than or equal to
AVDD; when DVDD is a battery rail and AVDD is a regulated supply,
one channel monitors the DVDD-AVDD difference for battery level
detection.
rate-gpios:
description:
GPIO connected to the RATE pin. When driven low the output data
rate is 10 SPS; when driven high it is 80 SPS. If omitted the
RATE pin state is determined by the board wiring.
maxItems: 1
clock-frequency:
description:
Controls the SCK bit-bang timing. The value is used to derive the
@@ -57,6 +77,7 @@ examples:
compatible = "avia,hx711";
sck-gpios = <&gpio3 10 GPIO_ACTIVE_HIGH>;
dout-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
rate-gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
avdd-supply = <&avdd>;
clock-frequency = <100000>;
};

View File

@@ -4,7 +4,7 @@
$id: http://devicetree.org/schemas/iio/adc/mediatek,mt6359-auxadc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediaTek MT6350 series PMIC AUXADC
title: MediaTek MT6350 series and similar PMIC AUXADC
maintainers:
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
@@ -20,6 +20,7 @@ properties:
compatible:
oneOf:
- enum:
- mediatek,mt6323-auxadc
- mediatek,mt6357-auxadc
- mediatek,mt6358-auxadc
- mediatek,mt6359-auxadc

View File

@@ -22,7 +22,9 @@ properties:
- const: rockchip,rk3562-saradc
- const: rockchip,rk3588-saradc
- items:
- const: rockchip,rk3576-saradc
- enum:
- rockchip,rk3576-saradc
- rockchip,rv1106-saradc
- const: rockchip,rk3588-saradc
- items:
- enum:

View File

@@ -0,0 +1,219 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/ti,ads112c14.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Texas Instruments' ADS112C14 and similar ADC chips
description: |
Supports the following Texas Instruments' ADC chips:
- ADS112C14 (16-bit)
- ADS122C14 (24-bit)
https://www.ti.com/lit/ds/symlink/ads122c14.pdf
These chips are primarily designed for use with resistive sensors such as
RTDs, thermocouples, Wheatstone bridges, etc. The channel bindings reflect
this in that each channel represents the conditions required to make a
measurement rather than strictly just the physical input channels.
maintainers:
- David Lechner <dlechner@baylibre.com>
properties:
compatible:
enum:
- ti,ads112c14
- ti,ads122c14
reg:
items:
- minimum: 0x40
maximum: 0x47
clocks:
maxItems: 1
description: Optional external clock connected to GPIO3 pin.
avdd-supply: true
dvdd-supply: true
refp-supply: true
refn-supply: true
ti,refp-refn-resistor-ohms:
description:
The resistance of the external resistor between REFP and REFN when using
resistor bridge driven by current outputs for RTD measurements.
interrupts:
minItems: 1
items:
- description: /FAULT interrupt (GPIO2 pin)
- description: /DRDY interrupt (GPIO3 pin)
interrupt-names:
minItems: 1
maxItems: 2
items:
enum: [fault, drdy]
gpio-controller: true
'#gpio-cells':
const: 2
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
^channel@[0-9a-f]$:
$ref: adc.yaml
unevaluatedProperties: false
properties:
reg:
items:
- maximum: 15 # arbitrary limit, channel@ can be any combination of AIN0-AIN7
single-channel:
maximum: 7
diff-channels:
items:
maximum: 7
bipolar: true
input-chopping: true
excitation-channels:
maxItems: 2
items:
maximum: 7
excitation-current-nanoamp:
maxItems: 2
items:
enum: [1000, 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000,
90000, 100000, 200000, 300000, 400000, 500000, 600000, 700000,
800000, 900000, 1000000]
burn-out-current-nanoamp:
items:
- enum: [200, 1000, 10000]
reference-sources:
items:
- enum: [internal-2.5v, internal-1.25v, external, avdd]
default: internal-2.5v
dependencies:
excitation-channels: [ excitation-current-nanoamp ]
excitation-current-nanoamp: [ excitation-channels ]
oneOf:
- required: [ single-channel ]
- required: [ diff-channels ]
unevaluatedProperties: false
required:
- compatible
- reg
- avdd-supply
- dvdd-supply
dependencies:
refn-supply: [ refp-supply ]
oneOf:
- required: [ refp-supply ]
- required: [ "ti,refp-refn-resistor-ohms" ]
- properties:
refp-supply: false
refn-supply: false
ti,refp-refn-resistor-ohms: false
# /DRDY out and CLK in use the same AIN7/GPIO3 pin.
if:
required:
- interrupt-names
properties:
interrupt-names:
contains:
const: drdy
then:
properties:
clocks: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
adc@40 {
compatible = "ti,ads112c14";
reg = <0x40>;
avdd-supply = <&avdd>;
dvdd-supply = <&dvdd>;
/* 3-Wire RTD: Two IDACs, One Measurement (AIN1-AIN2) */
ti,refp-refn-resistor-ohms = <500>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
diff-channels = <1>, <2>;
input-chopping;
excitation-channels = <0>, <3>;
excitation-current-nanoamp = <500000>, <500000>;
reference-sources = "external";
label = "rtd";
};
};
};
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
adc@40 {
compatible = "ti,ads112c14";
reg = <0x40>;
avdd-supply = <&avdd>;
dvdd-supply = <&dvdd>;
/* Resistive Bridge Measurement With a Thermistor for Temperature Compensation */
refp-supply = <&avdd>;
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
diff-channels = <6>, <7>;
bipolar;
reference-sources = "external";
label = "bridge";
};
channel@1 {
reg = <1>;
diff-channels = <1>, <2>;
reference-sources = "internal-2.5v";
label = "thermistor";
};
};
};

View File

@@ -0,0 +1,154 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2022 - 2026, Advanced Micro Devices, Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/adc/xlnx,versal-sysmon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: AMD/Xilinx Versal System Monitor
maintainers:
- Salih Erim <salih.erim@amd.com>
description:
The AMD/Xilinx Versal System Monitor (SysMon) is the successor to the
Zynq UltraScale+ AMS block. It provides on-chip voltage and temperature
monitoring with up to 160 voltage measurement points and up to
64 temperature satellites distributed across the SoC. The hardware
supports configurable threshold alarms and oversampling. The device
can be accessed via memory-mapped I/O or via an I2C interface.
properties:
compatible:
const: xlnx,versal-sysmon
reg:
maxItems: 1
interrupts:
maxItems: 1
'#io-channel-cells':
const: 1
voltage-channels:
type: object
description:
Container for voltage measurement channels.
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^channel@([0-9a-f]|[1-9][0-9a-f])$':
$ref: adc.yaml
description:
Measures a voltage rail. The register index and rail
name are assigned by the hardware design tool (Vivado).
properties:
reg:
minimum: 0
maximum: 159
description:
Voltage measurement register index assigned by the hardware
design tool.
required:
- reg
- label
unevaluatedProperties: false
required:
- '#address-cells'
- '#size-cells'
additionalProperties: false
temperature-channels:
type: object
description:
Container for temperature satellite measurement channels.
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^channel@([1-9a-f]|[1-3][0-9a-f]|40)$':
$ref: adc.yaml
description:
Reads a temperature satellite sensor. Each satellite monitors
a specific region of the SoC die.
properties:
reg:
minimum: 1
maximum: 64
description:
Temperature satellite number (1-based hardware index).
required:
- reg
- label
unevaluatedProperties: false
required:
- '#address-cells'
- '#size-cells'
additionalProperties: false
required:
- compatible
- reg
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
sysmon@f1270000 {
compatible = "xlnx,versal-sysmon";
reg = <0xf1270000 0x4000>;
interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
#io-channel-cells = <1>;
voltage-channels {
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
label = "vccaux";
};
channel@3 {
reg = <3>;
label = "vcc_ram";
bipolar;
};
};
temperature-channels {
#address-cells = <1>;
#size-cells = <0>;
channel@a {
reg = <10>;
label = "aie-temp-ch1";
};
};
};

View File

@@ -7,7 +7,8 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sensirion SCD30 carbon dioxide sensor
maintainers:
- Maxwell Doose <m32285159@gmail.com>
- Maxwell Doose <maxwell@maxwelld.cc>
- Tomasz Duszynski <tduszyns@gmail.com>
description: |
Air quality sensor capable of measuring co2 concentration, temperature

View File

@@ -10,15 +10,17 @@ maintainers:
- Kim Seer Paller <kimseer.paller@analog.com>
description: |
The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power,
16-bit, buffered voltage output digital-to-analog converters (DACs) with
software-programmable gain controls, providing full-scale output spans of 2.5V
or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V
to 5.5V supply and are guaranteed monotonic by design. The "R" variants
include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
The AD3530/AD3530R (8-channel), AD3531/AD3531R (4-channel), and AD3532/AD3532R
(16-channel) are low-power, 16-bit, buffered voltage output digital-to-analog
converters (DACs) with software-programmable gain controls, providing
full-scale output spans of 2.5V or 5V for reference voltages of 2.5V. These
devices operate from a single 2.7V to 5.5V supply and are guaranteed monotonic
by design. The "R" variants include a 2.5V, 5ppm/°C internal reference, which
is disabled by default.
Datasheet can be found here:
https://www.analog.com/media/en/technical-documentation/data-sheets/ad3530_ad530r.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/ad3531-ad3531r.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/ad3532r.pdf
properties:
compatible:
@@ -27,6 +29,8 @@ properties:
- adi,ad3530r
- adi,ad3531
- adi,ad3531r
- adi,ad3532
- adi,ad3532r
reg:
maxItems: 1

View File

@@ -4,7 +4,7 @@
$id: http://devicetree.org/schemas/iio/dac/adi,ad5686.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices AD5360 and similar SPI DACs
title: Analog Devices AD5686 and similar SPI DACs
maintainers:
- Michael Hennerich <michael.hennerich@analog.com>
@@ -14,10 +14,14 @@ properties:
compatible:
enum:
- adi,ad5310r
- adi,ad5313r
- adi,ad5317r
- adi,ad5672r
- adi,ad5674
- adi,ad5674r
- adi,ad5676
- adi,ad5676r
- adi,ad5679
- adi,ad5679r
- adi,ad5681r
- adi,ad5682r
@@ -28,31 +32,107 @@ properties:
- adi,ad5685r
- adi,ad5686
- adi,ad5686r
- adi,ad5687
- adi,ad5687r
- adi,ad5689
- adi,ad5689r
reg:
maxItems: 1
vdd-supply:
description: Input power supply.
vlogic-supply:
description:
Digital power supply. On some tiny package variants for single-channel
devices, this supply is internally connected to vdd; in that case, specify
this property with the same regulator as vdd.
vref-supply:
description:
Reference voltage supply. If not supplied the internal reference is used.
vcc-supply:
description: If not supplied the internal reference is used.
deprecated: true
description: Use vref-supply instead.
reset-gpios:
description: Active-low RESET pin to reset the device.
maxItems: 1
ldac-gpios:
description:
Active-low LDAC pin used to asynchronously update the DAC channels.
maxItems: 1
gain-gpios:
description:
GAIN pin that sets a multiplier for the DAC output voltage. When high,
the DAC output voltage is multiplied by 2, otherwise it is unchanged.
maxItems: 1
adi,range-double:
description:
Sets the initial voltage output range from 0 to 2xVREF. On devices that
have a GAIN pin and no gain-gpios property is set, this indicates the pin
is hardwired high.
type: boolean
required:
- compatible
- reg
- vdd-supply
- vlogic-supply
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#
- if:
properties:
compatible:
contains:
enum:
- adi,ad5674
- adi,ad5676
- adi,ad5679
- adi,ad5683
- adi,ad5684
- adi,ad5686
- adi,ad5687
- adi,ad5689
then:
required:
- vref-supply
- if:
properties:
compatible:
contains:
enum:
- adi,ad5310r
- adi,ad5681r
- adi,ad5682r
- adi,ad5683
- adi,ad5683r
then:
properties:
gain-gpios: false
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
dac@0 {
reg = <0>;
compatible = "adi,ad5310r";
vcc-supply = <&dac_vref0>;
vdd-supply = <&dac_vdd>;
vlogic-supply = <&dac_vlogic>;
vref-supply = <&dac_vref>;
reset-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
ldac-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};
};
...

View File

@@ -16,10 +16,14 @@ properties:
compatible:
enum:
- adi,ad5311r
- adi,ad5316r
- adi,ad5337r
- adi,ad5338r
- adi,ad5671r
- adi,ad5673r
- adi,ad5675
- adi,ad5675r
- adi,ad5677r
- adi,ad5691r
- adi,ad5692r
- adi,ad5693
@@ -29,22 +33,88 @@ properties:
- adi,ad5695r
- adi,ad5696
- adi,ad5696r
- adi,ad5697r
reg:
maxItems: 1
vdd-supply:
description: Input power supply.
vlogic-supply:
description:
Digital power supply. On some tiny package variants for single-channel
devices, this supply is internally connected to vdd; in that case, specify
this property with the same regulator as vdd.
vref-supply:
description:
Reference voltage supply. If not supplied the internal reference is used.
vcc-supply:
description: |
The regulator supply for DAC reference voltage.
deprecated: true
description: Use vref-supply instead.
reset-gpios:
description: Active-low RESET pin to reset the device.
maxItems: 1
ldac-gpios:
description:
Active-low LDAC pin used to asynchronously update the DAC channels.
maxItems: 1
gain-gpios:
description:
GAIN pin that sets a multiplier for the DAC output voltage. When high,
the DAC output voltage is multiplied by 2, otherwise it is unchanged.
maxItems: 1
adi,range-double:
description:
Sets the initial voltage output range from 0 to 2xVREF. On devices that
have a GAIN pin and no gain-gpios property is set, this indicates the pin
is hardwired high.
type: boolean
required:
- compatible
- reg
- vdd-supply
- vlogic-supply
allOf:
- if:
properties:
compatible:
contains:
enum:
- adi,ad5675
- adi,ad5693
- adi,ad5694
- adi,ad5696
then:
required:
- vref-supply
- if:
properties:
compatible:
contains:
enum:
- adi,ad5311r
- adi,ad5691r
- adi,ad5692r
- adi,ad5693
- adi,ad5693r
then:
properties:
gain-gpios: false
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
@@ -52,7 +122,10 @@ examples:
ad5696: dac@0 {
compatible = "adi,ad5696";
reg = <0>;
vcc-supply = <&dac_vref>;
vdd-supply = <&dac_vdd>;
vlogic-supply = <&dac_vlogic>;
vref-supply = <&dac_vref>;
ldac-gpios = <&gpio0 1 GPIO_ACTIVE_LOW>;
};
};
...

View File

@@ -36,11 +36,11 @@ properties:
vrefp-supply:
description:
Positive referance input voltage range. From 5v to (vdd - 2.5)
Positive reference input voltage range. From 5v to (vdd - 2.5)
vrefn-supply:
description:
Negative referance input voltage range. From (vss + 2.5) to 0.
Negative reference input voltage range. From (vss + 2.5) to 0.
adi,rbuf-gain2-en:
description: Specify to allow an external amplifier to be connected in a

View File

@@ -0,0 +1,50 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/dac/microchip,mcp47a1.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip MCP47A1 DAC
maintainers:
- Joshua Crofts <joshua.crofts1@gmail.com>
description: |
The Microchip MCP47A1 is a 6-bit single output volatile DAC.
This device can have different IDs (0x2e and 0x3e).
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/25154A.pdf
properties:
compatible:
const: microchip,mcp47a1
reg:
items:
- enum: [0x2e, 0x3e]
vref-supply: true
vdd-supply: true
required:
- compatible
- reg
- vref-supply
- vdd-supply
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
dac@2e {
compatible = "microchip,mcp47a1";
reg = <0x2e>;
vref-supply = <&vref_regulator>;
vdd-supply = <&vdd_regulator>;
};
};

View File

@@ -0,0 +1,55 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/flow/sensirion,slf3s.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sensirion SLF3S liquid flow sensor
maintainers:
- Wadim Mueller <wafgo01@gmail.com>
description:
Family of digital liquid-flow sensors from Sensirion with I2C interface. All
family members share the same register map; sub-types differ only in the flow
scale factor and the calibrated measurement range. The sub-type can be
identified from the product-information register.
properties:
compatible:
enum:
- sensirion,slf3s-0600f
- sensirion,slf3s-1300f
- sensirion,slf3s-4000b
reg:
maxItems: 1
vdd-supply: true
interrupts:
maxItems: 1
required:
- compatible
- reg
- vdd-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
flow-sensor@8 {
compatible = "sensirion,slf3s-0600f";
reg = <0x08>;
vdd-supply = <&reg_3v3>;
interrupt-parent = <&gpio0>;
interrupts = <0 IRQ_TYPE_EDGE_RISING>;
};
};

View File

@@ -0,0 +1,227 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/frequency/adi,adf41513.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices ADF41513 PLL Frequency Synthesizer
maintainers:
- Rodrigo Alencar <rodrigo.alencar@analog.com>
description:
The ADF41513 is an ultralow noise frequency synthesizer that can be used to
implement local oscillators (LOs) as high as 26.5 GHz in the upconversion and
downconversion sections of wireless receivers and transmitters. The ADF41510
supports frequencies up to 10 GHz.
https://www.analog.com/en/products/adf41510.html
https://www.analog.com/en/products/adf41513.html
properties:
compatible:
enum:
- adi,adf41510
- adi,adf41513
reg:
maxItems: 1
spi-max-frequency:
maximum: 25000000
clocks:
maxItems: 1
description: Clock that provides the reference input frequency.
avdd1-supply:
description: PFD and Up and Down Digital Driver Power Supply (3.3 V)
avdd2-supply:
description: RF Buffer and Prescaler Power Supply (3.3 V)
avdd3-supply:
description: N Divider Power Supply (3.3 V)
avdd4-supply:
description: R Divider and Lock Detector Power Supply (3.3 V)
avdd5-supply:
description: Sigma-Delta Modulator and SPI Power Supply (3.3 V)
vp-supply:
description: Charge Pump Power Supply (3.3 V)
enable-gpios:
description:
GPIO that controls the chip enable pin. A logic low on this pin
powers down the device and puts the charge pump output into
three-state mode.
maxItems: 1
lock-detect-gpios:
description:
GPIO for lock detect functionality. When configured for digital lock
detect, this pin will output a logic high when the PLL is locked.
maxItems: 1
adi,power-up-frequency-mhz:
minimum: 1000
maximum: 26500
default: 10000
description:
The PLL tunes to this frequency during the initialization sequence.
This property should be set to a frequency supported by the loop filter
and VCO used in the design. Range is 1 GHz to 26.5 GHz for ADF41513,
and 1 GHz to 10 GHz for ADF41510.
adi,reference-div-factor:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 1
maximum: 32
default: 1
description:
Value for the reference division factor (R Counter). The driver will
increment R Counter as needed to achieve a PFD frequency within the
allowed range. High R counter values will reduce the PFD frequency, which
lowers the frequency resolution, and affects phase noise performance.
As it affects the PFD frequency, this value depends on the loop filter
design.
adi,reference-doubler-enable:
description:
Enables the reference doubler when deriving the PFD frequency.
The maximum reference frequency when the doubler is enabled is 225 MHz.
As it affects the PFD frequency, this value depends on the loop filter
design.
type: boolean
adi,reference-div2-enable:
description:
Enables the reference divide-by-2 function when deriving the PFD
frequency. As it affects the PFD frequency, this value depends on the
loop filter design.
type: boolean
adi,charge-pump-resistor-ohms:
minimum: 1800
maximum: 10000
default: 2700
description:
External charge pump resistor (R_SET) value in ohms. This sets the maximum
charge pump current along with the charge pump current setting.
adi,charge-pump-current-microamp:
minimum: 81
maximum: 7200
description:
Charge pump current (I_CP) in microamps. The value will be rounded to the
nearest supported value. Range of acceptable values depends on the
charge pump resistor value, such that 810 mV <= I_CP * R_SET <= 12960 mV.
This value depends on the loop filter and the VCO design.
adi,logic-level-1v8-enable:
description:
Set MUXOUT and DLD logic levels to 1.8V. Default is 3.3V.
type: boolean
adi,phase-detector-polarity-positive-enable:
description:
Set phase detector polarity to positive. Default is negative.
Use positive polarity with non-inverting loop filter and VCO with
positive tuning slope, or with inverting loop filter and VCO with
negative tuning slope.
type: boolean
adi,lock-detector-count:
$ref: /schemas/types.yaml#/definitions/uint32
default: 64
description:
Sets the value for Lock Detector count of the PLL, which determines the
number of consecutive phase detector cycles that must be within the lock
detector window before lock is declared. Lower values increase the lock
detection sensitivity, while higher values provides a more stable lock
detection. Applications that consume the lock detect signal may require
different settings based on system requirements.
enum: [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192]
adi,phase-resync-period-ns:
default: 0
description:
When this value is non-zero, enable phase resync functionality, which
produces a consistent output phase offset with respect to the input
reference. The value specifies the resync period in nanoseconds, used
to configure clock dividers with respect to the PFD frequency. This value
should be set to a value that is at least as long as the worst case lock
time, i.e., it depends mostly on the loop filter design.
adi,le-sync-enable:
description:
Synchronizes Load Enable (LE) transitions with the reference signal to
avoid asynchronous glitches in the output. This is recommended when using
the PLL as a frequency synthesizer, where the reference signal will always
be present while the device is being configured. When using the PLL as a
frequency tracker, where the reference signal may be absent, LE sync
should be left disabled.
type: boolean
dependencies:
adi,charge-pump-resistor-ohms: [ 'adi,charge-pump-current-microamp' ]
required:
- compatible
- reg
- clocks
- avdd1-supply
- avdd2-supply
- avdd3-supply
- avdd4-supply
- avdd5-supply
- vp-supply
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#
- if:
properties:
compatible:
contains:
const: adi,adf41510
then:
properties:
adi,power-up-frequency-mhz:
maximum: 10000
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
pll@0 {
compatible = "adi,adf41513";
reg = <0>;
spi-max-frequency = <25000000>;
clocks = <&ref_clk>;
avdd1-supply = <&avdd1_3v3>;
avdd2-supply = <&avdd2_3v3>;
avdd3-supply = <&avdd3_3v3>;
avdd4-supply = <&avdd4_3v3>;
avdd5-supply = <&avdd5_3v3>;
vp-supply = <&vp_3v3>;
enable-gpios = <&gpio0 10 GPIO_ACTIVE_HIGH>;
lock-detect-gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
adi,power-up-frequency-mhz = <15500>;
adi,charge-pump-current-microamp = <3600>;
adi,charge-pump-resistor-ohms = <2700>;
adi,reference-doubler-enable;
adi,lock-detector-count = <64>;
adi,phase-resync-period-ns = <0>;
adi,phase-detector-polarity-positive-enable;
adi,le-sync-enable;
};
};
...

View File

@@ -30,6 +30,8 @@ properties:
- invensense,icm42600
- invensense,icm42602
- invensense,icm42605
- invensense,icm42607
- invensense,icm42607p
- invensense,icm42622
- invensense,icm42631
- invensense,icm42686
@@ -53,6 +55,8 @@ properties:
drive-open-drain:
type: boolean
mount-matrix: true
vdd-supply:
description: Regulator that provides power to the sensor
@@ -65,10 +69,24 @@ properties:
required:
- compatible
- reg
- interrupts
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#
- if:
properties:
compatible:
contains:
enum:
- invensense,icm42600
- invensense,icm42602
- invensense,icm42605
- invensense,icm42622
- invensense,icm42631
- invensense,icm42686
- invensense,icm42688
then:
required:
- interrupts
unevaluatedProperties: false

View File

@@ -0,0 +1,52 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/magnetometer/qstcorp,qmc5883l.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: QST QMC5883L 3-Axis Magnetic Sensor
maintainers:
- Siratul Islam <siratul.islam@linux.dev>
description: |
QST QMC5883L 3-Axis Magnetic Sensor on I2C bus.
https://www.qstcorp.com/upload/pdf/202512/13-52-04%20QMC5883L%20Datasheet%20Rev.%20B.pdf
properties:
compatible:
enum:
- qstcorp,qmc5883l
reg:
maxItems: 1
interrupts:
maxItems: 1
vdd-supply: true
vddio-supply: true
additionalProperties: false
required:
- compatible
- reg
- vdd-supply
- vddio-supply
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
magnetometer@d {
compatible = "qstcorp,qmc5883l";
reg = <0x0d>;
vdd-supply = <&vdd_3v3_reg>;
vddio-supply = <&vdd_3v3_reg>;
};
};
...

View File

@@ -0,0 +1,47 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/magnetometer/qstcorp,qmc6308.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: QST QMC6308 3-Axis Magnetic Sensor
maintainers:
- Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
description:
QST QMC6308 3-axis anisotropic magnetoresistive (AMR) magnetic sensor
on I2C bus, with a single supply and no interrupt pin.
https://qstcorp.com/upload/pdf/202202/13-52-15%20QMC6308%20Datasheet%20Rev.%20F(1).pdf
properties:
compatible:
const: qstcorp,qmc6308
reg:
maxItems: 1
vdd-supply: true
mount-matrix: true
required:
- compatible
- reg
- vdd-supply
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
magnetometer@2c {
compatible = "qstcorp,qmc6308";
reg = <0x2c>;
vdd-supply = <&vdd_1v8_reg>;
};
};
...

View File

@@ -8,7 +8,7 @@ title: ST VL53L0X/VL53L1X ToF ranging sensor
maintainers:
- Song Qiang <songqiang1304521@gmail.com>
- Siratul Islam <email@sirat.me>
- Siratul Islam <siratul.islam@linux.dev>
properties:
compatible:

View File

@@ -7,19 +7,25 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: TI TMP117 - Digital temperature sensor with integrated NV memory
description: |
TI TMP116/117 - Digital temperature sensor with integrated NV memory that
supports I2C interface.
TI TMP116/117/119 - Digital temperature sensor with integrated NV memory
that supports I2C interface.
https://www.ti.com/lit/gpn/tmp116
https://www.ti.com/lit/gpn/tmp117
https://www.ti.com/lit/gpn/tmp119
maintainers:
- Puranjay Mohan <puranjay12@gmail.com>
properties:
compatible:
enum:
- ti,tmp116
- ti,tmp117
oneOf:
- enum:
- ti,tmp116
- ti,tmp117
- items:
- enum:
- ti,tmp119
- const: ti,tmp117
reg:
maxItems: 1

View File

@@ -1363,6 +1363,8 @@ patternProperties:
description: Shenzhen QiShenglong Industrialist Co., Ltd.
"^qnap,.*":
description: QNAP Systems, Inc.
"^qstcorp,.*":
description: QST Corporation Limited
"^quanta,.*":
description: Quanta Computer Inc.
"^radxa,.*":

View File

@@ -0,0 +1,199 @@
.. SPDX-License-Identifier: GPL-2.0
===============
ADF41513 driver
===============
This driver supports Analog Devices' ADF41513 and similar SPI PLL frequency
synthesizers.
1. Supported devices
====================
* `ADF41510 <https://www.analog.com/ADF41510>`_
* `ADF41513 <https://www.analog.com/ADF41513>`_
The ADF41513 is an ultralow noise frequency synthesizer that can be used to
implement local oscillators (LOs) as high as 26.5 GHz in the upconversion and
downconversion sections of wireless receivers and transmitters. The ADF41510
is a similar device that supports frequencies up to 10 GHz.
Both devices support integer-N and fractional-N operation modes, providing
excellent phase noise performance and flexible frequency generation
capabilities.
Key Features:
- **ADF41510**: 1 GHz to 10 GHz frequency range
- **ADF41513**: 1 GHz to 26.5 GHz frequency range
- Integer-N and fractional-N operation modes
- Ultra-low phase noise (-235 dBc/Hz integer-N, -231 dBc/Hz fractional-N)
- High maximum PFD frequency (250 MHz integer-N, 125 MHz fractional-N)
- 25-bit fixed modulus or 49-bit variable modulus fractional modes
- Programmable charge pump currents with 16x range
- Digital lock detect functionality
- Phase resync capability for consistent output phase
2. Device attributes
====================
The ADF41513 driver provides the following IIO extended attributes for
frequency control and monitoring:
Each IIO device has a device folder under ``/sys/bus/iio/devices/iio:deviceX``,
where X is the IIO index of the device. Under these folders reside a set of
device files that provide access to the synthesizer's functionality.
The following table shows the ADF41513 related device files:
+--------------------------------------+-------------------------------------------------------+
| Device file | Description |
+======================================+=======================================================+
| out_altvoltage0_frequency | RF output frequency control and readback (Hz) |
+--------------------------------------+-------------------------------------------------------+
| out_altvoltage0_frequency_resolution | Target frequency resolution control (Hz) |
+--------------------------------------+-------------------------------------------------------+
| out_altvoltage0_powerdown | Power management control (0=active, 1=power down) |
+--------------------------------------+-------------------------------------------------------+
| out_altvoltage0_phase | RF output phase adjustment and readback (radians) |
+--------------------------------------+-------------------------------------------------------+
2.1 Frequency Control
----------------------
The ``out_altvoltage0_frequency`` attribute controls the RF output frequency
with sub-Hz precision. The driver automatically selects between integer-N and
fractional-N modes to achieve the requested frequency with the best possible
phase noise performance.
**Supported ranges:**
- **ADF41510**: 1,000,000,000 Hz to 10,000,000,000 Hz (1 GHz to 10 GHz)
- **ADF41513**: 1,000,000,000 Hz to 26,500,000,000 Hz (1 GHz to 26.5 GHz)
The frequency is specified in Hz, for sub-Hz precision use decimal notation.
For example, 12.102 GHz would be written as "12102000000.000000".
2.2 Frequency Resolution Control
--------------------------------
The ``out_altvoltage0_frequency_resolution`` attribute controls the target
frequency resolution that the driver attempts to achieve. This affects the
choice between integer-N and fractional-N modes, including fixed modulus
(25-bit) and variable modulus (49-bit) fractional-N modes:
- **Integer-N**: Resolution = :math:`f_{PFD}` (same as PFD frequency)
- **Fixed modulus**: Resolution = :math:`f_{PFD} / 2^{25}` (~3 Hz with 100 MHz PFD)
- **Variable modulus**: Resolution = :math:`f_{PFD} / 2^{49}` (µHz resolution possible)
Default resolution is 1 Hz (1,000,000 µHz).
2.3 Phase adjustment
--------------------
The ``out_altvoltage0_phase`` attribute allows adjustment of the output phase
in radians. Setting this attribute enables phase adjustment. It can be set
from 0 to :math:`2\pi` radians. Reading this attribute returns the current
phase offset of the output signal. To create a consistent phase relationship
with the reference signal, the phase resync feature needs to be enabled by
setting a non-zero value to the ``adi,phase-resync-period-ns`` device property,
which triggers a phase resynchronization after locking is achieved.
3. Operating modes
==================
3.1 Integer-N Mode
------------------
When the requested frequency can be achieved as an integer multiple of the PFD
frequency (within the specified resolution tolerance), the driver automatically
selects integer-N mode for optimal phase noise performance.
In integer-N mode:
- Phase noise: -235 dBc/Hz normalized floor
- Frequency resolution: :math:`f_{PFD}` (same as PFD frequency)
- Maximum PFD frequency: 250 MHz
- Bleed current: Disabled
3.2 Fractional-N Mode
---------------------
When sub-integer frequency steps are required, the driver automatically selects
fractional-N mode using either fixed or variable modulus.
**Fixed Modulus (25-bit)**:
- Used when variable modulus is not required
- Resolution: :math:`f_{PFD} / 2^{25}`
- Simpler implementation, faster settling
**Variable Modulus (49-bit)**:
- Used for maximum resolution requirements
- Resolution: :math:`f_{PFD} / 2^{49}` (theoretical)
- Exact frequency synthesis capability
In fractional-N mode:
- Phase noise: -231 dBc/Hz normalized floor
- Maximum PFD frequency: 125 MHz
- Bleed current: Automatically enabled and optimized
- Dithering: Enabled to reduce fractional spurs
3.3 Automatic Mode Selection
----------------------------
The driver automatically selects the optimal operating mode based on:
1. **Frequency accuracy requirements**: Determined by ``frequency_resolution`` setting
2. **Phase noise optimization**: Integer-N preferred when possible
3. **PFD frequency constraints**: Different limits for integer vs fractional modes
4. **Prescaler selection**: Automatic 4/5 vs 8/9 prescaler selection based on frequency
4. Usage examples
=================
4.1 Basic Frequency Setting
----------------------------
Set output frequency to 12.102 GHz:
.. code-block:: bash
root:/sys/bus/iio/devices/iio:device0> echo 12102000000 > out_altvoltage0_frequency
Read current frequency:
.. code-block:: bash
root:/sys/bus/iio/devices/iio:device0> cat out_altvoltage0_frequency
12101999999.582767
4.2 High Resolution Frequency Control
-------------------------------------
Configure for sub-Hz resolution and set a precise frequency:
.. code-block:: bash
# Set resolution to 0.1 Hz (100,000 µHz)
root:/sys/bus/iio/devices/iio:device0> echo 0.1 > out_altvoltage0_frequency_resolution
# Set frequency to 12.102 GHz (1 µHz precision)
root:/sys/bus/iio/devices/iio:device0> echo 12102000000 > out_altvoltage0_frequency
root:/sys/bus/iio/devices/iio:device0> cat out_altvoltage0_frequency
12101999999.980131
4.3 Monitor Lock Status
-----------------------
When lock detect GPIO is configured, check if PLL is locked:
.. code-block:: bash
# Read frequency - will return error if not locked
root:/sys/bus/iio/devices/iio:device0> cat out_altvoltage0_frequency
If the PLL is not locked, the frequency read will return ``-EBUSY`` (Device or
resource busy).

View File

@@ -31,6 +31,7 @@ Industrial I/O Kernel Drivers
ad7625
ad7944
ade9000
adf41513
adis16475
adis16480
adis16550

View File

@@ -1710,6 +1710,15 @@ W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ade9000.yaml
F: drivers/iio/adc/ade9000.c
ANALOG DEVICES INC ADF41513 DRIVER
M: Rodrigo Alencar <rodrigo.alencar@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/frequency/adi,adf41513.yaml
F: Documentation/iio/adf41513.rst
F: drivers/iio/frequency/adf41513.c
ANALOG DEVICES INC ADF4377 DRIVER
M: Antoniu Miclaus <antoniu.miclaus@analog.com>
L: linux-iio@vger.kernel.org
@@ -15347,6 +15356,14 @@ S: Maintained
F: Documentation/devicetree/bindings/iio/dac/lltc,ltc1660.yaml
F: drivers/iio/dac/ltc1660.c
LTC2378 IIO ADC DRIVER
M: Marcelo Schmitt <marcelo.schmitt@analog.com>
L: linux-iio@vger.kernel.org
S: Supported
W: https://ez.analog.com/linux-software-drivers
F: Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
F: drivers/iio/adc/ltc2378.c
LTC2664 IIO DAC DRIVER
M: Michael Hennerich <michael.hennerich@analog.com>
M: Kim Seer Paller <kimseer.paller@analog.com>
@@ -16567,6 +16584,13 @@ S: Maintained
F: Documentation/devicetree/bindings/mmc/mtk-sd.yaml
F: drivers/mmc/host/mtk-sd.c
MEDIATEK MT6323 PMIC AUXADC DRIVER
M: Roman Vivchar <rva333@protonmail.com>
L: linux-iio@vger.kernel.org
S: Maintained
F: drivers/iio/adc/mt6323-auxadc.c
F: include/dt-bindings/iio/adc/mediatek,mt6323-auxadc.h
MEDIATEK MT6735 CLOCK & RESET DRIVERS
M: Yassine Oudjana <y.oudjana@protonmail.com>
L: linux-clk@vger.kernel.org
@@ -17699,6 +17723,12 @@ S: Maintained
F: Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml
F: drivers/iio/adc/mcp3911.c
MICROCHIP MCP47A1 DAC DRIVER
M: Joshua Crofts <joshua.crofts1@gmail.com>
S: Maintained
F: Documentation/devicetree/bindings/iio/dac/microchip,mcp47a1.yaml
F: drivers/iio/dac/mcp47a1.c
MICROCHIP MCP9982 TEMPERATURE DRIVER
M: Victor Duicu <victor.duicu@microchip.com>
L: linux-hwmon@vger.kernel.org
@@ -22057,6 +22087,20 @@ F: Documentation/networking/device_drivers/ethernet/freescale/dpaa2/overview.rst
F: drivers/bus/fsl-mc/
F: include/uapi/linux/fsl_mc.h
QST QMC5883L 3-Axis Magnetic Sensor
M: Siratul Islam <siratul.islam@linux.dev>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/magnetometer/qstcorp,qmc5883l.yaml
F: drivers/iio/magnetometer/qmc5883l.c
QST QMC6308 3-AXIS MAGNETIC SENSOR
M: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/magnetometer/qstcorp,qmc6308.yaml
F: drivers/iio/magnetometer/qmc6308.c
QT1010 MEDIA DRIVER
L: linux-media@vger.kernel.org
S: Orphan
@@ -24545,7 +24589,8 @@ F: Documentation/devicetree/bindings/iio/chemical/senseair,sunrise.yaml
F: drivers/iio/chemical/sunrise_co2.c
SENSIRION SCD30 CARBON DIOXIDE SENSOR DRIVER
M: Maxwell Doose <m32285159@gmail.com>
M: Maxwell Doose <maxwell@maxwelld.cc>
M: Tomasz Duszynski <tduszyns@gmail.com>
S: Maintained
F: Documentation/devicetree/bindings/iio/chemical/sensirion,scd30.yaml
F: drivers/iio/chemical/scd30.h
@@ -24571,6 +24616,14 @@ S: Maintained
F: Documentation/ABI/testing/sysfs-bus-iio-chemical-sgp40
F: drivers/iio/chemical/sgp40.c
SENSIRION SLF3S LIQUID FLOW SENSOR DRIVER
M: Wadim Mueller <wafgo01@gmail.com>
R: Maxwell Doose <maxwell@maxwelld.cc>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/flow/sensirion,slf3s.yaml
F: drivers/iio/flow/slf3s.c
SENSIRION SPS30 AIR POLLUTION SENSOR DRIVER
M: Tomasz Duszynski <tduszyns@gmail.com>
S: Maintained
@@ -25686,7 +25739,7 @@ F: Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml
F: drivers/iio/proximity/vl53l0x-i2c.c
ST VL53L1X ToF RANGER(I2C) IIO DRIVER
M: Siratul Islam <email@sirat.me>
M: Siratul Islam <siratul.islam@linux.dev>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/proximity/st,vl53l0x.yaml
@@ -26943,6 +26996,13 @@ S: Maintained
F: Documentation/devicetree/bindings/iio/adc/ti,ads1119.yaml
F: drivers/iio/adc/ti-ads1119.c
TI ADS112C14 ADC DRIVER
M: David Lechner <dlechner@baylibre.com>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/adc/ti,ads112c14.yaml
F: drivers/iio/adc/ti-ads112c14.c
TI ADS1018 ADC DRIVER
M: Kurt Borja <kuurtb@gmail.com>
L: linux-iio@vger.kernel.org
@@ -29515,7 +29575,7 @@ F: include/uapi/linux/dqblk_xfs.h
F: include/uapi/linux/fsmap.h
XILINX AMS DRIVER
M: Salih Erim <salih.erim@amd.com>
M: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
M: Conall O'Griofa <conall.ogriofa@amd.com>
L: linux-iio@vger.kernel.org
S: Maintained
@@ -29614,6 +29674,14 @@ F: Documentation/devicetree/bindings/memory-controllers/xlnx,versal-net-ddrmc5.y
F: drivers/edac/versalnet_edac.c
F: include/linux/cdx/edac_cdx_pcol.h
XILINX VERSAL SYSMON DRIVER
M: Salih Erim <salih.erim@amd.com>
M: Sai Krishna Potthuri <sai.krishna.potthuri@amd.com>
L: linux-iio@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/iio/adc/xlnx,versal-sysmon.yaml
F: drivers/iio/adc/versal-sysmon*
XILINX WATCHDOG DRIVER
M: Srinivas Neeli <srinivas.neeli@amd.com>
R: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>

View File

@@ -210,3 +210,4 @@ module_platform_driver(adc_jack_driver);
MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@samsung.com>");
MODULE_DESCRIPTION("ADC Jack extcon driver");
MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS("IIO_CONSUMER");

View File

@@ -221,3 +221,4 @@ module_platform_driver(iio_hwmon_driver);
MODULE_AUTHOR("Jonathan Cameron <jic23@kernel.org>");
MODULE_DESCRIPTION("IIO to hwmon driver");
MODULE_LICENSE("GPL v2");
MODULE_IMPORT_NS("IIO_CONSUMER");

View File

@@ -748,3 +748,4 @@ MODULE_DESCRIPTION("NTC Thermistor Driver");
MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@samsung.com>");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:ntc-thermistor");
MODULE_IMPORT_NS("IIO_CONSUMER");

View File

@@ -92,6 +92,7 @@ source "drivers/iio/common/Kconfig"
source "drivers/iio/dac/Kconfig"
source "drivers/iio/dummy/Kconfig"
source "drivers/iio/filter/Kconfig"
source "drivers/iio/flow/Kconfig"
source "drivers/iio/frequency/Kconfig"
source "drivers/iio/gyro/Kconfig"
source "drivers/iio/health/Kconfig"

View File

@@ -29,6 +29,7 @@ obj-y += dac/
obj-y += dummy/
obj-y += gyro/
obj-y += filter/
obj-y += flow/
obj-y += frequency/
obj-y += health/
obj-y += humidity/

View File

@@ -5,12 +5,17 @@ Documentation
tree
- Yaml conversions for abandoned drivers
- ABI Documentation
- Audit driviers/iio/staging/Documentation
- Audit drivers/staging/iio/Documentation
- Converting drivers from device tree centric to more generic
property handlers.
- Converting drivers from device tree centric to generic property handlers.
- Refactor old platform_data constructs from drivers and convert it
to state struct and using property handlers and readers.
to state struct and using property handlers and readers.
- Convert selected IIO drivers to use fully device managed resource APIs.
- Evaluate and possibly adopt cleanup.h helpers (guard()(), __free(), et cetera)
in drivers where manual resource management is still used and there is a
significant improvement to the code flow and complexity to be had.
Mailing list: linux-iio@vger.kernel.org

View File

@@ -60,8 +60,8 @@ static const struct adxl345_chip_info adxl375_spi_info = {
};
static const struct spi_device_id adxl345_spi_id[] = {
{ "adxl345", (kernel_ulong_t)&adxl345_spi_info },
{ "adxl375", (kernel_ulong_t)&adxl375_spi_info },
{ .name = "adxl345", .driver_data = (kernel_ulong_t)&adxl345_spi_info },
{ .name = "adxl375", .driver_data = (kernel_ulong_t)&adxl375_spi_info },
{ }
};
MODULE_DEVICE_TABLE(spi, adxl345_spi_id);

View File

@@ -768,8 +768,7 @@ static int adxl355_probe_trigger(struct iio_dev *indio_dev, int irq)
ret = devm_request_irq(data->dev, irq, &iio_trigger_generic_data_rdy_poll,
IRQF_NO_THREAD, "adxl355_irq", data->dready_trig);
if (ret)
return dev_err_probe(data->dev, ret, "request irq %d failed\n",
irq);
return ret;
ret = devm_iio_trigger_register(data->dev, data->dready_trig);
if (ret)

View File

@@ -40,8 +40,8 @@ static int adxl355_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id adxl355_spi_id[] = {
{ "adxl355", (kernel_ulong_t)&adxl35x_chip_info[ADXL355] },
{ "adxl359", (kernel_ulong_t)&adxl35x_chip_info[ADXL359] },
{ .name = "adxl355", .driver_data = (kernel_ulong_t)&adxl35x_chip_info[ADXL355] },
{ .name = "adxl359", .driver_data = (kernel_ulong_t)&adxl35x_chip_info[ADXL359] },
{ }
};
MODULE_DEVICE_TABLE(spi, adxl355_spi_id);

View File

@@ -1486,7 +1486,7 @@ int adxl367_probe(struct device *dev, const struct adxl367_ops *ops,
adxl367_irq_handler, IRQF_ONESHOT,
indio_dev->name, indio_dev);
if (ret)
return dev_err_probe(st->dev, ret, "Failed to request irq\n");
return ret;
return devm_iio_device_register(dev, indio_dev);
}

View File

@@ -137,7 +137,7 @@ static int adxl367_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id adxl367_spi_id[] = {
{ "adxl367", 0 },
{ .name = "adxl367" },
{ }
};
MODULE_DEVICE_TABLE(spi, adxl367_spi_id);

View File

@@ -34,8 +34,8 @@ static int adxl372_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id adxl372_spi_id[] = {
{ "adxl371", (kernel_ulong_t)&adxl371_chip_info },
{ "adxl372", (kernel_ulong_t)&adxl372_chip_info },
{ .name = "adxl371", .driver_data = (kernel_ulong_t)&adxl371_chip_info },
{ .name = "adxl372", .driver_data = (kernel_ulong_t)&adxl372_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, adxl372_spi_id);

View File

@@ -34,10 +34,10 @@ static int adxl380_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id adxl380_spi_id[] = {
{ "adxl318", (kernel_ulong_t)&adxl318_chip_info },
{ "adxl319", (kernel_ulong_t)&adxl319_chip_info },
{ "adxl380", (kernel_ulong_t)&adxl380_chip_info },
{ "adxl382", (kernel_ulong_t)&adxl382_chip_info },
{ .name = "adxl318", .driver_data = (kernel_ulong_t)&adxl318_chip_info },
{ .name = "adxl319", .driver_data = (kernel_ulong_t)&adxl319_chip_info },
{ .name = "adxl380", .driver_data = (kernel_ulong_t)&adxl380_chip_info },
{ .name = "adxl382", .driver_data = (kernel_ulong_t)&adxl382_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, adxl380_spi_id);

View File

@@ -988,10 +988,8 @@ static int bma180_probe(struct i2c_client *client)
iio_trigger_generic_data_rdy_poll,
IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
"bma180_event", data->trig);
if (ret) {
dev_err(dev, "unable to request IRQ\n");
if (ret)
goto err_trigger_free;
}
data->trig->ops = &bma180_trigger_ops;
iio_trigger_set_drvdata(data->trig, indio_dev);

View File

@@ -544,8 +544,7 @@ int bma220_common_probe(struct device *dev, struct regmap *regmap, int irq)
&bma220_irq_handler, IRQF_ONESHOT,
indio_dev->name, indio_dev);
if (ret)
return dev_err_probe(dev, ret,
"request irq %d failed\n", irq);
return ret;
}
ret = devm_add_action_or_reset(dev, bma220_deinit, data);

View File

@@ -25,7 +25,7 @@ static int bma220_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id bma220_spi_id[] = {
{ "bma220", 0 },
{ .name = "bma220" },
{ }
};

View File

@@ -1789,8 +1789,7 @@ int bma400_probe(struct device *dev, struct regmap *regmap, int irq,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
indio_dev->name, indio_dev);
if (ret)
return dev_err_probe(data->dev, ret,
"request irq %d failed\n", irq);
return ret;
}
ret = devm_iio_triggered_buffer_setup(dev, indio_dev, NULL,

View File

@@ -87,7 +87,7 @@ static int bma400_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id bma400_spi_ids[] = {
{ "bma400", 0 },
{ .name = "bma400" },
{ }
};
MODULE_DEVICE_TABLE(spi, bma400_spi_ids);

View File

@@ -988,8 +988,10 @@ static int __bmc150_accel_fifo_flush(struct iio_dev *indio_dev,
do_div(sample_period, count);
tstamp = data->timestamp - (count - 1) * sample_period;
if (samples && count > samples)
count = samples;
if (samples)
count = min3(count, samples, BMC150_ACCEL_FIFO_LENGTH);
else
count = min(count, BMC150_ACCEL_FIFO_LENGTH);
count = min_t(u8, count, BMC150_ACCEL_FIFO_LENGTH);

View File

@@ -52,15 +52,15 @@ static const struct acpi_device_id bmc150_accel_acpi_match[] = {
MODULE_DEVICE_TABLE(acpi, bmc150_accel_acpi_match);
static const struct spi_device_id bmc150_accel_id[] = {
{"bma222"},
{"bma222e"},
{"bma250e"},
{"bma253"},
{"bma255"},
{"bma280"},
{"bmc150_accel"},
{"bmc156_accel", BOSCH_BMC156},
{"bmi055_accel"},
{ .name = "bma222", .driver_data = BOSCH_UNKNOWN },
{ .name = "bma222e", .driver_data = BOSCH_UNKNOWN },
{ .name = "bma250e", .driver_data = BOSCH_UNKNOWN },
{ .name = "bma253", .driver_data = BOSCH_UNKNOWN },
{ .name = "bma255", .driver_data = BOSCH_UNKNOWN },
{ .name = "bma280", .driver_data = BOSCH_UNKNOWN },
{ .name = "bmc150_accel", .driver_data = BOSCH_UNKNOWN },
{ .name = "bmc156_accel", .driver_data = BOSCH_BMC156 },
{ .name = "bmi055_accel", .driver_data = BOSCH_UNKNOWN },
{ }
};
MODULE_DEVICE_TABLE(spi, bmc150_accel_id);

View File

@@ -72,9 +72,9 @@ static const struct of_device_id bmi088_of_match[] = {
MODULE_DEVICE_TABLE(of, bmi088_of_match);
static const struct spi_device_id bmi088_accel_id[] = {
{"bmi085-accel", BOSCH_BMI085},
{"bmi088-accel", BOSCH_BMI088},
{"bmi090l-accel", BOSCH_BMI090L},
{ .name = "bmi085-accel", .driver_data = BOSCH_BMI085 },
{ .name = "bmi088-accel", .driver_data = BOSCH_BMI088 },
{ .name = "bmi090l-accel", .driver_data = BOSCH_BMI090L },
{ }
};
MODULE_DEVICE_TABLE(spi, bmi088_accel_id);

View File

@@ -8,6 +8,7 @@
#include <linux/unaligned.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/units.h>
#include <linux/iio/iio.h>
#define DMARD09_DRV_NAME "dmard09"
@@ -79,6 +80,12 @@ static int dmard09_read_raw(struct iio_dev *indio_dev,
*val = accel;
return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE:
*val = 0;
/* 1 g / 32 LSB, in m/s^2 */
*val2 = IIO_G_TO_M_S_2(NANO / 32);
return IIO_VAL_INT_PLUS_NANO;
default:
return -EINVAL;
}

View File

@@ -969,6 +969,8 @@ static int fxls8962af_fifo_flush(struct iio_dev *indio_dev)
if (!count)
return 0;
count = min(count, FXLS8962AF_FIFO_LENGTH);
data->old_timestamp = data->timestamp;
data->timestamp = iio_get_time_ns(indio_dev);

View File

@@ -34,8 +34,8 @@ static const struct of_device_id fxls8962af_spi_of_match[] = {
MODULE_DEVICE_TABLE(of, fxls8962af_spi_of_match);
static const struct spi_device_id fxls8962af_spi_id_table[] = {
{ "fxls8962af", fxls8962af },
{ "fxls8964af", fxls8964af },
{ .name = "fxls8962af", .driver_data = fxls8962af },
{ .name = "fxls8964af", .driver_data = fxls8964af },
{ }
};
MODULE_DEVICE_TABLE(spi, fxls8962af_spi_id_table);

View File

@@ -121,9 +121,8 @@ static const struct iio_chan_spec gravity_channels[] = {
/* Channel read_raw handler */
static int accel_3d_read_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int *val, int *val2,
long mask)
struct iio_chan_spec const *chan,
int *val, int *val2, long mask)
{
struct accel_3d_state *accel_state = iio_priv(indio_dev);
int report_id = -1;
@@ -150,7 +149,7 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
else {
*val = 0;
hid_sensor_power_state(&accel_state->common_attributes,
false);
false);
return -EINVAL;
}
hid_sensor_power_state(&accel_state->common_attributes, false);
@@ -183,10 +182,8 @@ static int accel_3d_read_raw(struct iio_dev *indio_dev,
/* Channel write_raw handler */
static int accel_3d_write_raw(struct iio_dev *indio_dev,
struct iio_chan_spec const *chan,
int val,
int val2,
long mask)
struct iio_chan_spec const *chan,
int val, int val2, long mask)
{
struct accel_3d_state *accel_state = iio_priv(indio_dev);
int ret = 0;
@@ -222,8 +219,7 @@ static void hid_sensor_push_data(struct iio_dev *indio_dev, void *data,
/* Callback handler to send event after all samples are received and captured */
static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev,
unsigned usage_id,
void *priv)
u32 usage_id, void *priv)
{
struct iio_dev *indio_dev = platform_get_drvdata(priv);
struct accel_3d_state *accel_state = iio_priv(indio_dev);
@@ -246,9 +242,9 @@ static int accel_3d_proc_event(struct hid_sensor_hub_device *hsdev,
/* Capture samples in local storage */
static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev,
unsigned usage_id,
size_t raw_len, char *raw_data,
void *priv)
u32 usage_id,
size_t raw_len, char *raw_data,
void *priv)
{
struct iio_dev *indio_dev = platform_get_drvdata(priv);
struct accel_3d_state *accel_state = iio_priv(indio_dev);
@@ -280,10 +276,10 @@ static int accel_3d_capture_sample(struct hid_sensor_hub_device *hsdev,
/* Parse report which is specific to an usage id*/
static int accel_3d_parse_report(struct platform_device *pdev,
struct hid_sensor_hub_device *hsdev,
struct iio_chan_spec *channels,
unsigned usage_id,
struct accel_3d_state *st)
struct hid_sensor_hub_device *hsdev,
struct iio_chan_spec *channels,
u32 usage_id,
struct accel_3d_state *st)
{
int ret;
@@ -302,10 +298,10 @@ static int accel_3d_parse_report(struct platform_device *pdev,
};
}
dev_dbg(&pdev->dev, "accel_3d %x:%x, %x:%x, %x:%x\n",
st->accel[0].index,
st->accel[0].report_id,
st->accel[1].index, st->accel[1].report_id,
st->accel[2].index, st->accel[2].report_id);
st->accel[0].index,
st->accel[0].report_id,
st->accel[1].index, st->accel[1].report_id,
st->accel[2].index, st->accel[2].report_id);
st->scale_precision = hid_sensor_format_scale(
hsdev->usage,
@@ -328,7 +324,7 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
indio_dev = devm_iio_device_alloc(&pdev->dev,
sizeof(struct accel_3d_state));
if (indio_dev == NULL)
if (!indio_dev)
return -ENOMEM;
platform_set_drvdata(pdev, indio_dev);
@@ -365,8 +361,8 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
return -ENOMEM;
}
ret = accel_3d_parse_report(pdev, hsdev,
(struct iio_chan_spec *)indio_dev->channels,
hsdev->usage, accel_state);
(struct iio_chan_spec *)indio_dev->channels,
hsdev->usage, accel_state);
if (ret) {
dev_err(&pdev->dev, "failed to setup attributes\n");
return ret;
@@ -379,32 +375,32 @@ static int hid_accel_3d_probe(struct platform_device *pdev)
atomic_set(&accel_state->common_attributes.data_ready, 0);
ret = hid_sensor_setup_trigger(indio_dev, name,
&accel_state->common_attributes);
&accel_state->common_attributes);
if (ret < 0) {
dev_err(&pdev->dev, "trigger setup failed\n");
return ret;
}
ret = iio_device_register(indio_dev);
if (ret) {
dev_err(&pdev->dev, "device register failed\n");
goto error_remove_trigger;
}
accel_state->callbacks.send_event = accel_3d_proc_event;
accel_state->callbacks.capture_sample = accel_3d_capture_sample;
accel_state->callbacks.pdev = pdev;
ret = sensor_hub_register_callback(hsdev, hsdev->usage,
&accel_state->callbacks);
&accel_state->callbacks);
if (ret < 0) {
dev_err(&pdev->dev, "callback reg failed\n");
goto error_iio_unreg;
goto error_remove_trigger;
}
ret = iio_device_register(indio_dev);
if (ret) {
dev_err(&pdev->dev, "device register failed\n");
goto error_remove_callback;
}
return ret;
error_iio_unreg:
iio_device_unregister(indio_dev);
error_remove_callback:
sensor_hub_remove_callback(hsdev, hsdev->usage);
error_remove_trigger:
hid_sensor_remove_trigger(indio_dev, &accel_state->common_attributes);
return ret;
@@ -417,8 +413,8 @@ static void hid_accel_3d_remove(struct platform_device *pdev)
struct iio_dev *indio_dev = platform_get_drvdata(pdev);
struct accel_3d_state *accel_state = iio_priv(indio_dev);
sensor_hub_remove_callback(hsdev, hsdev->usage);
iio_device_unregister(indio_dev);
sensor_hub_remove_callback(hsdev, hsdev->usage);
hid_sensor_remove_trigger(indio_dev, &accel_state->common_attributes);
}

View File

@@ -1435,7 +1435,7 @@ int kx022a_probe_internal(struct device *dev, const struct kx022a_chip_info *chi
&kx022a_irq_thread_handler,
IRQF_ONESHOT, name, idev);
if (ret)
return dev_err_probe(data->dev, ret, "Could not request IRQ\n");
return ret;
ret = devm_iio_trigger_register(dev, indio_trig);
if (ret)

View File

@@ -36,7 +36,7 @@ static void kxsd9_spi_remove(struct spi_device *spi)
}
static const struct spi_device_id kxsd9_spi_id[] = {
{"kxsd9", 0},
{ .name = "kxsd9" },
{ }
};
MODULE_DEVICE_TABLE(spi, kxsd9_spi_id);

View File

@@ -28,8 +28,8 @@ static void mma7455_spi_remove(struct spi_device *spi)
}
static const struct spi_device_id mma7455_spi_ids[] = {
{ "mma7455", 0 },
{ "mma7456", 0 },
{ .name = "mma7455" },
{ .name = "mma7456" },
{ }
};
MODULE_DEVICE_TABLE(spi, mma7455_spi_ids);

View File

@@ -420,10 +420,8 @@ static int mma9551_gpio_probe(struct iio_dev *indio_dev)
NULL, mma9551_event_handler,
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
"mma9551_event", indio_dev);
if (ret < 0) {
dev_err(dev, "request irq %d failed\n", data->irqs[i]);
if (ret)
return ret;
}
dev_dbg(dev, "gpio resource, no:%d irq:%d\n",
desc_to_gpio(gpio), data->irqs[i]);

View File

@@ -1099,11 +1099,8 @@ static int mma9553_probe(struct i2c_client *client)
mma9553_event_handler,
IRQF_TRIGGER_RISING,
"mma9553_event", indio_dev);
if (ret < 0) {
dev_err(&client->dev, "request irq %d failed\n",
client->irq);
if (ret)
goto out_poweroff;
}
}
ret = pm_runtime_set_active(&client->dev);

View File

@@ -1059,7 +1059,7 @@ static int msa311_setup_interrupts(struct msa311_priv *msa311)
msa311_irq_thread, IRQF_ONESHOT,
msa311->chip_name, indio_dev);
if (err)
return dev_err_probe(dev, err, "failed to request IRQ\n");
return err;
trig = devm_iio_trigger_alloc(dev, "%s-new-data", msa311->chip_name);
if (!trig)

View File

@@ -489,11 +489,8 @@ static int mxc4005_probe(struct i2c_client *client)
iio_trigger_generic_data_rdy_poll,
IRQF_TRIGGER_FALLING | IRQF_NO_THREAD,
"mxc4005_event", data->dready_trig);
if (ret) {
dev_err(&client->dev,
"failed to init threaded irq\n");
if (ret)
return ret;
}
data->dready_trig->ops = &mxc4005_trigger_ops;
iio_trigger_set_drvdata(data->dready_trig, indio_dev);

View File

@@ -1504,10 +1504,10 @@ static int sca3000_probe(struct spi_device *spi)
}
static const struct spi_device_id sca3000_id[] = {
{ "sca3000_d01", (kernel_ulong_t)&sca3000_chip_info_d01 },
{ "sca3000_e02", (kernel_ulong_t)&sca3000_chip_info_e02 },
{ "sca3000_e04", (kernel_ulong_t)&sca3000_chip_info_e04 },
{ "sca3000_e05", (kernel_ulong_t)&sca3000_chip_info_e05 },
{ .name = "sca3000_d01", .driver_data = (kernel_ulong_t)&sca3000_chip_info_d01 },
{ .name = "sca3000_e02", .driver_data = (kernel_ulong_t)&sca3000_chip_info_e02 },
{ .name = "sca3000_e04", .driver_data = (kernel_ulong_t)&sca3000_chip_info_e04 },
{ .name = "sca3000_e05", .driver_data = (kernel_ulong_t)&sca3000_chip_info_e05 },
{ }
};
MODULE_DEVICE_TABLE(spi, sca3000_id);

View File

@@ -664,8 +664,8 @@ static const struct of_device_id sca3300_dt_ids[] = {
MODULE_DEVICE_TABLE(of, sca3300_dt_ids);
static const struct spi_device_id sca3300_ids[] = {
{ "sca3300" },
{ "scl3300" },
{ .name = "sca3300" },
{ .name = "scl3300" },
{ }
};
MODULE_DEVICE_TABLE(spi, sca3300_ids);

View File

@@ -146,26 +146,26 @@ static int st_accel_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id st_accel_id_table[] = {
{ LIS3DH_ACCEL_DEV_NAME },
{ LSM330D_ACCEL_DEV_NAME },
{ LSM330DL_ACCEL_DEV_NAME },
{ LSM330DLC_ACCEL_DEV_NAME },
{ LIS331DLH_ACCEL_DEV_NAME },
{ LSM330_ACCEL_DEV_NAME },
{ LSM303AGR_ACCEL_DEV_NAME },
{ LIS2DH12_ACCEL_DEV_NAME },
{ LIS2DS12_ACCEL_DEV_NAME },
{ LIS3L02DQ_ACCEL_DEV_NAME },
{ LNG2DM_ACCEL_DEV_NAME },
{ H3LIS331DL_ACCEL_DEV_NAME },
{ LIS331DL_ACCEL_DEV_NAME },
{ LIS3LV02DL_ACCEL_DEV_NAME },
{ LIS2DW12_ACCEL_DEV_NAME },
{ LIS3DHH_ACCEL_DEV_NAME },
{ LIS3DE_ACCEL_DEV_NAME },
{ LIS302DL_ACCEL_DEV_NAME },
{ LSM303C_ACCEL_DEV_NAME },
{ IIS328DQ_ACCEL_DEV_NAME },
{ .name = LIS3DH_ACCEL_DEV_NAME },
{ .name = LSM330D_ACCEL_DEV_NAME },
{ .name = LSM330DL_ACCEL_DEV_NAME },
{ .name = LSM330DLC_ACCEL_DEV_NAME },
{ .name = LIS331DLH_ACCEL_DEV_NAME },
{ .name = LSM330_ACCEL_DEV_NAME },
{ .name = LSM303AGR_ACCEL_DEV_NAME },
{ .name = LIS2DH12_ACCEL_DEV_NAME },
{ .name = LIS2DS12_ACCEL_DEV_NAME },
{ .name = LIS3L02DQ_ACCEL_DEV_NAME },
{ .name = LNG2DM_ACCEL_DEV_NAME },
{ .name = H3LIS331DL_ACCEL_DEV_NAME },
{ .name = LIS331DL_ACCEL_DEV_NAME },
{ .name = LIS3LV02DL_ACCEL_DEV_NAME },
{ .name = LIS2DW12_ACCEL_DEV_NAME },
{ .name = LIS3DHH_ACCEL_DEV_NAME },
{ .name = LIS3DE_ACCEL_DEV_NAME },
{ .name = LIS302DL_ACCEL_DEV_NAME },
{ .name = LSM303C_ACCEL_DEV_NAME },
{ .name = IIS328DQ_ACCEL_DEV_NAME },
{ }
};
MODULE_DEVICE_TABLE(spi, st_accel_id_table);

View File

@@ -7,12 +7,20 @@
* IIO driver for STK8312; 7-bit I2C address: 0x3D.
*/
#include <linux/array_size.h>
#include <linux/bits.h>
#include <linux/delay.h>
#include <linux/dev_printk.h>
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/mod_devicetable.h>
#include <linux/mutex.h>
#include <linux/pm.h>
#include <linux/sysfs.h>
#include <linux/types.h>
#include <linux/iio/buffer.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
@@ -542,11 +550,8 @@ static int stk8312_probe(struct i2c_client *client)
IRQF_ONESHOT,
"stk8312_event",
indio_dev);
if (ret < 0) {
dev_err(&client->dev, "request irq %d failed\n",
client->irq);
if (ret)
goto err_power_off;
}
data->dready_trig = devm_iio_trigger_alloc(&client->dev,
"%s-dev%d",

View File

@@ -7,11 +7,18 @@
* STK8BA50 7-bit I2C address: 0x18.
*/
#include <linux/array_size.h>
#include <linux/bitops.h>
#include <linux/dev_printk.h>
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pm.h>
#include <linux/sysfs.h>
#include <linux/types.h>
#include <linux/iio/buffer.h>
#include <linux/iio/iio.h>
#include <linux/iio/sysfs.h>
@@ -431,11 +438,8 @@ static int stk8ba50_probe(struct i2c_client *client)
stk8ba50_data_rdy_trig_poll,
IRQF_TRIGGER_RISING | IRQF_NO_THREAD,
"stk8ba50_event", indio_dev);
if (ret < 0) {
dev_err(&client->dev, "request irq %d failed\n",
client->irq);
if (ret)
goto err_power_off;
}
data->dready_trig = devm_iio_trigger_alloc(&client->dev,
"%s-dev%d",

View File

@@ -279,7 +279,7 @@ static int pm886_gpadc_read_raw(struct iio_dev *iio, struct iio_chan_spec const
static int pm886_gpadc_hw_enable(struct regmap *map)
{
const u8 config[] = {
static const u8 config[] = {
PM886_GPADC_CONFIG1_EN_ALL,
PM886_GPADC_CONFIG2_EN_ALL,
PM886_GPADC_GND_DET2_EN,

View File

@@ -33,7 +33,8 @@ config AB8500_GPADC
and USB voltages integral to the U8500 platform.
config AD_SIGMA_DELTA
tristate
tristate "Analog Devices Sigma-Delta Modulator support" if COMPILE_TEST
depends on SPI
select IIO_BUFFER
select IIO_BUFFER_DMAENGINE
select IIO_TRIGGERED_BUFFER
@@ -945,6 +946,25 @@ config LTC2309
This driver can also be built as a module. If so, the module will
be called ltc2309.
config LTC2378
tristate "Analog Devices LTC2378 ADC driver"
depends on SPI
depends on REGULATOR || COMPILE_TEST
depends on GPIOLIB
depends on PWM
select IIO_BUFFER
select IIO_BUFFER_DMA
select IIO_BUFFER_DMAENGINE
select IIO_TRIGGERED_BUFFER
select SPI_OFFLOAD
select SPI_OFFLOAD_TRIGGER_PWM
help
Say yes here to build support for Analog Devices LTC2378-20 and
similar analog to digital converters.
This driver can also be built as a module. If so, the module will
be called ltc2378.
config LTC2471
tristate "Linear Technology LTC2471 and LTC2473 ADC driver"
depends on I2C
@@ -1167,6 +1187,17 @@ config MCP3911
This driver can also be built as a module. If so, the module will be
called mcp3911.
config MEDIATEK_MT6323_AUXADC
tristate "MediaTek MT6323 PMIC AUXADC driver"
depends on MFD_MT6397
help
Say yes here to enable support for MediaTek MT6323 PMIC Auxiliary ADC.
This driver provides multiple channels for system monitoring,
such as battery voltage, PMIC temperature, and others.
This driver can also be built as a module. If so, the module will be
called mt6323-auxadc.
config MEDIATEK_MT6359_AUXADC
tristate "MediaTek MT6359 PMIC AUXADC driver"
depends on MFD_MT6397
@@ -1791,6 +1822,18 @@ config TI_ADS1119
This driver can also be built as a module. If so, the module will be
called ti-ads1119.
config TI_ADS112C14
tristate "Texas Instruments ADS112C14/ADS122C14"
depends on I2C
select CRC8
select REGMAP
help
If you say yes here you get support for Texas Instruments ADS112C14,
ADS122C14 ADC chips.
This driver can also be built as a module. If so, the module will be
called ti-ads112c14.
config TI_ADS124S08
tristate "Texas Instruments ADS124S08"
depends on SPI
@@ -1966,6 +2009,39 @@ config TWL6030_GPADC
This driver can also be built as a module. If so, the module will be
called twl6030-gpadc.
config VERSAL_SYSMON_CORE
tristate
select REGMAP
config VERSAL_SYSMON
tristate "AMD Versal SysMon driver"
depends on ARCH_ZYNQMP || COMPILE_TEST
depends on HAS_IOMEM
select VERSAL_SYSMON_CORE
help
Say yes here to have support for the AMD/Xilinx Versal System
Monitor (SysMon). This driver provides voltage and temperature
monitoring through the IIO subsystem.
The SysMon measures up to 160 supply voltages and reads up to
64 temperature satellites distributed across the SoC.
To compile this driver as a module, choose M here: the module
will be called versal-sysmon.
config VERSAL_SYSMON_I2C
tristate "AMD Versal SysMon I2C driver"
depends on I2C
select VERSAL_SYSMON_CORE
help
Say yes here to have support for the AMD/Xilinx Versal System
Monitor (SysMon) via I2C interface. This driver enables voltage
and temperature monitoring when the Versal chip has SysMon
configured with I2C access.
To compile this driver as a module, choose M here: the module
will be called versal-sysmon-i2c.
config VF610_ADC
tristate "Freescale vf610 ADC driver"
depends on HAS_IOMEM

View File

@@ -81,6 +81,7 @@ obj-$(CONFIG_LP8788_ADC) += lp8788_adc.o
obj-$(CONFIG_LPC18XX_ADC) += lpc18xx_adc.o
obj-$(CONFIG_LPC32XX_ADC) += lpc32xx_adc.o
obj-$(CONFIG_LTC2309) += ltc2309.o
obj-$(CONFIG_LTC2378) += ltc2378.o
obj-$(CONFIG_LTC2471) += ltc2471.o
obj-$(CONFIG_LTC2485) += ltc2485.o
obj-$(CONFIG_LTC2496) += ltc2496.o ltc2497-core.o
@@ -100,6 +101,7 @@ obj-$(CONFIG_MCP320X) += mcp320x.o
obj-$(CONFIG_MCP3422) += mcp3422.o
obj-$(CONFIG_MCP3564) += mcp3564.o
obj-$(CONFIG_MCP3911) += mcp3911.o
obj-$(CONFIG_MEDIATEK_MT6323_AUXADC) += mt6323-auxadc.o
obj-$(CONFIG_MEDIATEK_MT6359_AUXADC) += mt6359-auxadc.o
obj-$(CONFIG_MEDIATEK_MT6360_ADC) += mt6360-adc.o
obj-$(CONFIG_MEDIATEK_MT6370_ADC) += mt6370-adc.o
@@ -153,6 +155,7 @@ obj-$(CONFIG_TI_ADS1015) += ti-ads1015.o
obj-$(CONFIG_TI_ADS1018) += ti-ads1018.o
obj-$(CONFIG_TI_ADS1100) += ti-ads1100.o
obj-$(CONFIG_TI_ADS1119) += ti-ads1119.o
obj-$(CONFIG_TI_ADS112C14) += ti-ads112c14.o
obj-$(CONFIG_TI_ADS124S08) += ti-ads124s08.o
obj-$(CONFIG_TI_ADS1298) += ti-ads1298.o
obj-$(CONFIG_TI_ADS131E08) += ti-ads131e08.o
@@ -168,6 +171,9 @@ obj-$(CONFIG_TI_TLC4541) += ti-tlc4541.o
obj-$(CONFIG_TI_TSC2046) += ti-tsc2046.o
obj-$(CONFIG_TWL4030_MADC) += twl4030-madc.o
obj-$(CONFIG_TWL6030_GPADC) += twl6030-gpadc.o
obj-$(CONFIG_VERSAL_SYSMON_CORE) += versal-sysmon-core.o
obj-$(CONFIG_VERSAL_SYSMON) += versal-sysmon.o
obj-$(CONFIG_VERSAL_SYSMON_I2C) += versal-sysmon-i2c.o
obj-$(CONFIG_VF610_ADC) += vf610_adc.o
obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o
obj-$(CONFIG_XILINX_AMS) += xilinx-ams.o

View File

@@ -1176,37 +1176,37 @@ static int ad4000_probe(struct spi_device *spi)
}
static const struct spi_device_id ad4000_id[] = {
{ "ad4000", (kernel_ulong_t)&ad4000_chip_info },
{ "ad4001", (kernel_ulong_t)&ad4001_chip_info },
{ "ad4002", (kernel_ulong_t)&ad4002_chip_info },
{ "ad4003", (kernel_ulong_t)&ad4003_chip_info },
{ "ad4004", (kernel_ulong_t)&ad4004_chip_info },
{ "ad4005", (kernel_ulong_t)&ad4005_chip_info },
{ "ad4006", (kernel_ulong_t)&ad4006_chip_info },
{ "ad4007", (kernel_ulong_t)&ad4007_chip_info },
{ "ad4008", (kernel_ulong_t)&ad4008_chip_info },
{ "ad4010", (kernel_ulong_t)&ad4010_chip_info },
{ "ad4011", (kernel_ulong_t)&ad4011_chip_info },
{ "ad4020", (kernel_ulong_t)&ad4020_chip_info },
{ "ad4021", (kernel_ulong_t)&ad4021_chip_info },
{ "ad4022", (kernel_ulong_t)&ad4022_chip_info },
{ "adaq4001", (kernel_ulong_t)&adaq4001_chip_info },
{ "adaq4003", (kernel_ulong_t)&adaq4003_chip_info },
{ "ad7685", (kernel_ulong_t)&ad7685_chip_info },
{ "ad7686", (kernel_ulong_t)&ad7686_chip_info },
{ "ad7687", (kernel_ulong_t)&ad7687_chip_info },
{ "ad7688", (kernel_ulong_t)&ad7688_chip_info },
{ "ad7690", (kernel_ulong_t)&ad7690_chip_info },
{ "ad7691", (kernel_ulong_t)&ad7691_chip_info },
{ "ad7693", (kernel_ulong_t)&ad7693_chip_info },
{ "ad7942", (kernel_ulong_t)&ad7942_chip_info },
{ "ad7946", (kernel_ulong_t)&ad7946_chip_info },
{ "ad7980", (kernel_ulong_t)&ad7980_chip_info },
{ "ad7982", (kernel_ulong_t)&ad7982_chip_info },
{ "ad7983", (kernel_ulong_t)&ad7983_chip_info },
{ "ad7984", (kernel_ulong_t)&ad7984_chip_info },
{ "ad7988-1", (kernel_ulong_t)&ad7988_1_chip_info },
{ "ad7988-5", (kernel_ulong_t)&ad7988_5_chip_info },
{ .name = "ad4000", .driver_data = (kernel_ulong_t)&ad4000_chip_info },
{ .name = "ad4001", .driver_data = (kernel_ulong_t)&ad4001_chip_info },
{ .name = "ad4002", .driver_data = (kernel_ulong_t)&ad4002_chip_info },
{ .name = "ad4003", .driver_data = (kernel_ulong_t)&ad4003_chip_info },
{ .name = "ad4004", .driver_data = (kernel_ulong_t)&ad4004_chip_info },
{ .name = "ad4005", .driver_data = (kernel_ulong_t)&ad4005_chip_info },
{ .name = "ad4006", .driver_data = (kernel_ulong_t)&ad4006_chip_info },
{ .name = "ad4007", .driver_data = (kernel_ulong_t)&ad4007_chip_info },
{ .name = "ad4008", .driver_data = (kernel_ulong_t)&ad4008_chip_info },
{ .name = "ad4010", .driver_data = (kernel_ulong_t)&ad4010_chip_info },
{ .name = "ad4011", .driver_data = (kernel_ulong_t)&ad4011_chip_info },
{ .name = "ad4020", .driver_data = (kernel_ulong_t)&ad4020_chip_info },
{ .name = "ad4021", .driver_data = (kernel_ulong_t)&ad4021_chip_info },
{ .name = "ad4022", .driver_data = (kernel_ulong_t)&ad4022_chip_info },
{ .name = "adaq4001", .driver_data = (kernel_ulong_t)&adaq4001_chip_info },
{ .name = "adaq4003", .driver_data = (kernel_ulong_t)&adaq4003_chip_info },
{ .name = "ad7685", .driver_data = (kernel_ulong_t)&ad7685_chip_info },
{ .name = "ad7686", .driver_data = (kernel_ulong_t)&ad7686_chip_info },
{ .name = "ad7687", .driver_data = (kernel_ulong_t)&ad7687_chip_info },
{ .name = "ad7688", .driver_data = (kernel_ulong_t)&ad7688_chip_info },
{ .name = "ad7690", .driver_data = (kernel_ulong_t)&ad7690_chip_info },
{ .name = "ad7691", .driver_data = (kernel_ulong_t)&ad7691_chip_info },
{ .name = "ad7693", .driver_data = (kernel_ulong_t)&ad7693_chip_info },
{ .name = "ad7942", .driver_data = (kernel_ulong_t)&ad7942_chip_info },
{ .name = "ad7946", .driver_data = (kernel_ulong_t)&ad7946_chip_info },
{ .name = "ad7980", .driver_data = (kernel_ulong_t)&ad7980_chip_info },
{ .name = "ad7982", .driver_data = (kernel_ulong_t)&ad7982_chip_info },
{ .name = "ad7983", .driver_data = (kernel_ulong_t)&ad7983_chip_info },
{ .name = "ad7984", .driver_data = (kernel_ulong_t)&ad7984_chip_info },
{ .name = "ad7988-1", .driver_data = (kernel_ulong_t)&ad7988_1_chip_info },
{ .name = "ad7988-5", .driver_data = (kernel_ulong_t)&ad7988_5_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4000_id);

View File

@@ -1763,13 +1763,13 @@ static const struct ad4030_chip_info adaq4224_chip_info = {
};
static const struct spi_device_id ad4030_id_table[] = {
{ "ad4030-24", (kernel_ulong_t)&ad4030_24_chip_info },
{ "ad4630-16", (kernel_ulong_t)&ad4630_16_chip_info },
{ "ad4630-24", (kernel_ulong_t)&ad4630_24_chip_info },
{ "ad4632-16", (kernel_ulong_t)&ad4632_16_chip_info },
{ "ad4632-24", (kernel_ulong_t)&ad4632_24_chip_info },
{ "adaq4216", (kernel_ulong_t)&adaq4216_chip_info },
{ "adaq4224", (kernel_ulong_t)&adaq4224_chip_info },
{ .name = "ad4030-24", .driver_data = (kernel_ulong_t)&ad4030_24_chip_info },
{ .name = "ad4630-16", .driver_data = (kernel_ulong_t)&ad4630_16_chip_info },
{ .name = "ad4630-24", .driver_data = (kernel_ulong_t)&ad4630_24_chip_info },
{ .name = "ad4632-16", .driver_data = (kernel_ulong_t)&ad4632_16_chip_info },
{ .name = "ad4632-24", .driver_data = (kernel_ulong_t)&ad4632_24_chip_info },
{ .name = "adaq4216", .driver_data = (kernel_ulong_t)&adaq4216_chip_info },
{ .name = "adaq4224", .driver_data = (kernel_ulong_t)&adaq4224_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4030_id_table);

View File

@@ -135,6 +135,7 @@
#define AD4087_CHIP_ID 0x0057
#define AD4088_CHIP_ID 0x0058
#define AD4880_CHIP_ID 0x0059
#define AD4883_CHIP_ID 0x005B
#define AD4884_CHIP_ID 0x005C
#define AD4080_MAX_CHANNELS 2
@@ -541,6 +542,11 @@ static const struct iio_chan_spec ad4880_channels[] = {
AD4880_CHANNEL_DEFINE(20, 32, 1),
};
static const struct iio_chan_spec ad4883_channels[] = {
AD4880_CHANNEL_DEFINE(16, 16, 0),
AD4880_CHANNEL_DEFINE(16, 16, 1),
};
static const struct iio_chan_spec ad4884_channels[] = {
AD4880_CHANNEL_DEFINE(16, 16, 0),
AD4880_CHANNEL_DEFINE(16, 16, 1),
@@ -646,6 +652,16 @@ static const struct ad4080_chip_info ad4880_chip_info = {
.lvds_cnv_clk_cnt_max = AD4080_LVDS_CNV_CLK_CNT_MAX,
};
static const struct ad4080_chip_info ad4883_chip_info = {
.name = "ad4883",
.product_id = AD4883_CHIP_ID,
.scale_table = ad4080_scale_table,
.num_scales = ARRAY_SIZE(ad4080_scale_table),
.num_channels = 2,
.channels = ad4883_channels,
.lvds_cnv_clk_cnt_max = 5,
};
static const struct ad4080_chip_info ad4884_chip_info = {
.name = "ad4884",
.product_id = AD4884_CHIP_ID,
@@ -853,17 +869,18 @@ static int ad4080_probe(struct spi_device *spi)
}
static const struct spi_device_id ad4080_id[] = {
{ "ad4080", (kernel_ulong_t)&ad4080_chip_info },
{ "ad4081", (kernel_ulong_t)&ad4081_chip_info },
{ "ad4082", (kernel_ulong_t)&ad4082_chip_info },
{ "ad4083", (kernel_ulong_t)&ad4083_chip_info },
{ "ad4084", (kernel_ulong_t)&ad4084_chip_info },
{ "ad4085", (kernel_ulong_t)&ad4085_chip_info },
{ "ad4086", (kernel_ulong_t)&ad4086_chip_info },
{ "ad4087", (kernel_ulong_t)&ad4087_chip_info },
{ "ad4088", (kernel_ulong_t)&ad4088_chip_info },
{ "ad4880", (kernel_ulong_t)&ad4880_chip_info },
{ "ad4884", (kernel_ulong_t)&ad4884_chip_info },
{ .name = "ad4080", .driver_data = (kernel_ulong_t)&ad4080_chip_info },
{ .name = "ad4081", .driver_data = (kernel_ulong_t)&ad4081_chip_info },
{ .name = "ad4082", .driver_data = (kernel_ulong_t)&ad4082_chip_info },
{ .name = "ad4083", .driver_data = (kernel_ulong_t)&ad4083_chip_info },
{ .name = "ad4084", .driver_data = (kernel_ulong_t)&ad4084_chip_info },
{ .name = "ad4085", .driver_data = (kernel_ulong_t)&ad4085_chip_info },
{ .name = "ad4086", .driver_data = (kernel_ulong_t)&ad4086_chip_info },
{ .name = "ad4087", .driver_data = (kernel_ulong_t)&ad4087_chip_info },
{ .name = "ad4088", .driver_data = (kernel_ulong_t)&ad4088_chip_info },
{ .name = "ad4880", .driver_data = (kernel_ulong_t)&ad4880_chip_info },
{ .name = "ad4883", .driver_data = (kernel_ulong_t)&ad4883_chip_info },
{ .name = "ad4884", .driver_data = (kernel_ulong_t)&ad4884_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4080_id);
@@ -879,6 +896,7 @@ static const struct of_device_id ad4080_of_match[] = {
{ .compatible = "adi,ad4087", &ad4087_chip_info },
{ .compatible = "adi,ad4088", &ad4088_chip_info },
{ .compatible = "adi,ad4880", &ad4880_chip_info },
{ .compatible = "adi,ad4883", &ad4883_chip_info },
{ .compatible = "adi,ad4884", &ad4884_chip_info },
{ }
};

View File

@@ -2425,12 +2425,12 @@ static const struct of_device_id ad4130_of_match[] = {
MODULE_DEVICE_TABLE(of, ad4130_of_match);
static const struct spi_device_id ad4130_id_table[] = {
{ "ad4129-4", (kernel_ulong_t)&ad4129_4_chip_info },
{ "ad4129-8", (kernel_ulong_t)&ad4129_8_chip_info },
{ "ad4130-4", (kernel_ulong_t)&ad4130_4_chip_info },
{ "ad4130", (kernel_ulong_t)&ad4130_8_chip_info },
{ "ad4131-4", (kernel_ulong_t)&ad4131_4_chip_info },
{ "ad4131-8", (kernel_ulong_t)&ad4131_8_chip_info },
{ .name = "ad4129-4", .driver_data = (kernel_ulong_t)&ad4129_4_chip_info },
{ .name = "ad4129-8", .driver_data = (kernel_ulong_t)&ad4129_8_chip_info },
{ .name = "ad4130-4", .driver_data = (kernel_ulong_t)&ad4130_4_chip_info },
{ .name = "ad4130", .driver_data = (kernel_ulong_t)&ad4130_8_chip_info },
{ .name = "ad4131-4", .driver_data = (kernel_ulong_t)&ad4131_4_chip_info },
{ .name = "ad4131-8", .driver_data = (kernel_ulong_t)&ad4131_8_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4130_id_table);

View File

@@ -472,7 +472,7 @@ static int ad4134_probe(struct spi_device *spi)
}
static const struct spi_device_id ad4134_id[] = {
{ "ad4134" },
{ .name = "ad4134" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4134_id);

View File

@@ -2979,9 +2979,9 @@ static int ad4170_probe(struct spi_device *spi)
}
static const struct spi_device_id ad4170_id_table[] = {
{ "ad4170-4", (kernel_ulong_t)&ad4170_chip_info },
{ "ad4190-4", (kernel_ulong_t)&ad4190_chip_info },
{ "ad4195-4", (kernel_ulong_t)&ad4195_chip_info },
{ .name = "ad4170-4", .driver_data = (kernel_ulong_t)&ad4170_chip_info },
{ .name = "ad4190-4", .driver_data = (kernel_ulong_t)&ad4190_chip_info },
{ .name = "ad4195-4", .driver_data = (kernel_ulong_t)&ad4195_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4170_id_table);

View File

@@ -1285,15 +1285,15 @@ static const struct of_device_id ad4851_of_match[] = {
};
static const struct spi_device_id ad4851_spi_id[] = {
{ "ad4851", (kernel_ulong_t)&ad4851_info },
{ "ad4852", (kernel_ulong_t)&ad4852_info },
{ "ad4853", (kernel_ulong_t)&ad4853_info },
{ "ad4854", (kernel_ulong_t)&ad4854_info },
{ "ad4855", (kernel_ulong_t)&ad4855_info },
{ "ad4856", (kernel_ulong_t)&ad4856_info },
{ "ad4857", (kernel_ulong_t)&ad4857_info },
{ "ad4858", (kernel_ulong_t)&ad4858_info },
{ "ad4858i", (kernel_ulong_t)&ad4858i_info },
{ .name = "ad4851", .driver_data = (kernel_ulong_t)&ad4851_info },
{ .name = "ad4852", .driver_data = (kernel_ulong_t)&ad4852_info },
{ .name = "ad4853", .driver_data = (kernel_ulong_t)&ad4853_info },
{ .name = "ad4854", .driver_data = (kernel_ulong_t)&ad4854_info },
{ .name = "ad4855", .driver_data = (kernel_ulong_t)&ad4855_info },
{ .name = "ad4856", .driver_data = (kernel_ulong_t)&ad4856_info },
{ .name = "ad4857", .driver_data = (kernel_ulong_t)&ad4857_info },
{ .name = "ad4858", .driver_data = (kernel_ulong_t)&ad4858_info },
{ .name = "ad4858i", .driver_data = (kernel_ulong_t)&ad4858i_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad4851_spi_id);

View File

@@ -249,9 +249,9 @@ static const struct of_device_id ad7091r8_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7091r8_of_match);
static const struct spi_device_id ad7091r8_spi_id[] = {
{ "ad7091r2", (kernel_ulong_t)&ad7091r2_init_info },
{ "ad7091r4", (kernel_ulong_t)&ad7091r4_init_info },
{ "ad7091r8", (kernel_ulong_t)&ad7091r8_init_info },
{ .name = "ad7091r2", .driver_data = (kernel_ulong_t)&ad7091r2_init_info },
{ .name = "ad7091r4", .driver_data = (kernel_ulong_t)&ad7091r4_init_info },
{ .name = "ad7091r8", .driver_data = (kernel_ulong_t)&ad7091r8_init_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7091r8_spi_id);

View File

@@ -1683,8 +1683,8 @@ static const struct of_device_id ad7124_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7124_of_match);
static const struct spi_device_id ad71124_ids[] = {
{ "ad7124-4", (kernel_ulong_t)&ad7124_4_chip_info },
{ "ad7124-8", (kernel_ulong_t)&ad7124_8_chip_info },
{ .name = "ad7124-4", .driver_data = (kernel_ulong_t)&ad7124_4_chip_info },
{ .name = "ad7124-8", .driver_data = (kernel_ulong_t)&ad7124_8_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad71124_ids);

View File

@@ -2065,19 +2065,19 @@ static const struct of_device_id ad7173_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7173_of_match);
static const struct spi_device_id ad7173_id_table[] = {
{ "ad4111", (kernel_ulong_t)&ad4111_device_info },
{ "ad4112", (kernel_ulong_t)&ad4112_device_info },
{ "ad4113", (kernel_ulong_t)&ad4113_device_info },
{ "ad4114", (kernel_ulong_t)&ad4114_device_info },
{ "ad4115", (kernel_ulong_t)&ad4115_device_info },
{ "ad4116", (kernel_ulong_t)&ad4116_device_info },
{ "ad7172-2", (kernel_ulong_t)&ad7172_2_device_info },
{ "ad7172-4", (kernel_ulong_t)&ad7172_4_device_info },
{ "ad7173-8", (kernel_ulong_t)&ad7173_8_device_info },
{ "ad7175-2", (kernel_ulong_t)&ad7175_2_device_info },
{ "ad7175-8", (kernel_ulong_t)&ad7175_8_device_info },
{ "ad7176-2", (kernel_ulong_t)&ad7176_2_device_info },
{ "ad7177-2", (kernel_ulong_t)&ad7177_2_device_info },
{ .name = "ad4111", .driver_data = (kernel_ulong_t)&ad4111_device_info },
{ .name = "ad4112", .driver_data = (kernel_ulong_t)&ad4112_device_info },
{ .name = "ad4113", .driver_data = (kernel_ulong_t)&ad4113_device_info },
{ .name = "ad4114", .driver_data = (kernel_ulong_t)&ad4114_device_info },
{ .name = "ad4115", .driver_data = (kernel_ulong_t)&ad4115_device_info },
{ .name = "ad4116", .driver_data = (kernel_ulong_t)&ad4116_device_info },
{ .name = "ad7172-2", .driver_data = (kernel_ulong_t)&ad7172_2_device_info },
{ .name = "ad7172-4", .driver_data = (kernel_ulong_t)&ad7172_4_device_info },
{ .name = "ad7173-8", .driver_data = (kernel_ulong_t)&ad7173_8_device_info },
{ .name = "ad7175-2", .driver_data = (kernel_ulong_t)&ad7175_2_device_info },
{ .name = "ad7175-8", .driver_data = (kernel_ulong_t)&ad7175_8_device_info },
{ .name = "ad7176-2", .driver_data = (kernel_ulong_t)&ad7176_2_device_info },
{ .name = "ad7177-2", .driver_data = (kernel_ulong_t)&ad7177_2_device_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7173_id_table);

View File

@@ -535,7 +535,7 @@ static const struct of_device_id ad7191_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7191_of_match);
static const struct spi_device_id ad7191_id_table[] = {
{ "ad7191" },
{ .name = "ad7191" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7191_id_table);

View File

@@ -1448,11 +1448,11 @@ static const struct of_device_id ad7192_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7192_of_match);
static const struct spi_device_id ad7192_ids[] = {
{ "ad7190", (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7190] },
{ "ad7192", (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7192] },
{ "ad7193", (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7193] },
{ "ad7194", (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7194] },
{ "ad7195", (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7195] },
{ .name = "ad7190", .driver_data = (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7190] },
{ .name = "ad7192", .driver_data = (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7192] },
{ .name = "ad7193", .driver_data = (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7193] },
{ .name = "ad7194", .driver_data = (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7194] },
{ .name = "ad7195", .driver_data = (kernel_ulong_t)&ad7192_chip_info_tbl[ID_AD7195] },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7192_ids);

View File

@@ -453,8 +453,8 @@ static int ad7266_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7266_id[] = {
{ "ad7265", 0 },
{ "ad7266", 0 },
{ .name = "ad7265" },
{ .name = "ad7266" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7266_id);

View File

@@ -1082,7 +1082,7 @@ static int ad7280_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7280_id[] = {
{ "ad7280a", 0 },
{ .name = "ad7280a" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7280_id);

View File

@@ -299,7 +299,7 @@ static int ad7292_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7292_id_table[] = {
{ "ad7292", 0 },
{ .name = "ad7292" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7292_id_table);

View File

@@ -353,7 +353,7 @@ static const struct acpi_device_id ad7298_acpi_ids[] = {
MODULE_DEVICE_TABLE(acpi, ad7298_acpi_ids);
static const struct spi_device_id ad7298_id[] = {
{ "ad7298", 0 },
{ .name = "ad7298" },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7298_id);

View File

@@ -2116,24 +2116,24 @@ static const struct of_device_id ad7380_of_match_table[] = {
};
static const struct spi_device_id ad7380_id_table[] = {
{ "ad7380", (kernel_ulong_t)&ad7380_chip_info },
{ "ad7381", (kernel_ulong_t)&ad7381_chip_info },
{ "ad7383", (kernel_ulong_t)&ad7383_chip_info },
{ "ad7384", (kernel_ulong_t)&ad7384_chip_info },
{ "ad7386", (kernel_ulong_t)&ad7386_chip_info },
{ "ad7387", (kernel_ulong_t)&ad7387_chip_info },
{ "ad7388", (kernel_ulong_t)&ad7388_chip_info },
{ "ad7380-4", (kernel_ulong_t)&ad7380_4_chip_info },
{ "ad7381-4", (kernel_ulong_t)&ad7381_4_chip_info },
{ "ad7383-4", (kernel_ulong_t)&ad7383_4_chip_info },
{ "ad7384-4", (kernel_ulong_t)&ad7384_4_chip_info },
{ "ad7386-4", (kernel_ulong_t)&ad7386_4_chip_info },
{ "ad7387-4", (kernel_ulong_t)&ad7387_4_chip_info },
{ "ad7388-4", (kernel_ulong_t)&ad7388_4_chip_info },
{ "ad7389-4", (kernel_ulong_t)&ad7389_4_chip_info },
{ "adaq4370-4", (kernel_ulong_t)&adaq4370_4_chip_info },
{ "adaq4380-4", (kernel_ulong_t)&adaq4380_4_chip_info },
{ "adaq4381-4", (kernel_ulong_t)&adaq4381_4_chip_info },
{ .name = "ad7380", .driver_data = (kernel_ulong_t)&ad7380_chip_info },
{ .name = "ad7381", .driver_data = (kernel_ulong_t)&ad7381_chip_info },
{ .name = "ad7383", .driver_data = (kernel_ulong_t)&ad7383_chip_info },
{ .name = "ad7384", .driver_data = (kernel_ulong_t)&ad7384_chip_info },
{ .name = "ad7386", .driver_data = (kernel_ulong_t)&ad7386_chip_info },
{ .name = "ad7387", .driver_data = (kernel_ulong_t)&ad7387_chip_info },
{ .name = "ad7388", .driver_data = (kernel_ulong_t)&ad7388_chip_info },
{ .name = "ad7380-4", .driver_data = (kernel_ulong_t)&ad7380_4_chip_info },
{ .name = "ad7381-4", .driver_data = (kernel_ulong_t)&ad7381_4_chip_info },
{ .name = "ad7383-4", .driver_data = (kernel_ulong_t)&ad7383_4_chip_info },
{ .name = "ad7384-4", .driver_data = (kernel_ulong_t)&ad7384_4_chip_info },
{ .name = "ad7386-4", .driver_data = (kernel_ulong_t)&ad7386_4_chip_info },
{ .name = "ad7387-4", .driver_data = (kernel_ulong_t)&ad7387_4_chip_info },
{ .name = "ad7388-4", .driver_data = (kernel_ulong_t)&ad7388_4_chip_info },
{ .name = "ad7389-4", .driver_data = (kernel_ulong_t)&ad7389_4_chip_info },
{ .name = "adaq4370-4", .driver_data = (kernel_ulong_t)&adaq4370_4_chip_info },
{ .name = "adaq4380-4", .driver_data = (kernel_ulong_t)&adaq4380_4_chip_info },
{ .name = "adaq4381-4", .driver_data = (kernel_ulong_t)&adaq4381_4_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7380_id_table);

View File

@@ -411,42 +411,42 @@ static int ad7476_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7476_id[] = {
{ "ad7091", (kernel_ulong_t)&ad7091_chip_info },
{ "ad7091r", (kernel_ulong_t)&ad7091r_chip_info },
{ "ad7273", (kernel_ulong_t)&ad7273_chip_info },
{ "ad7274", (kernel_ulong_t)&ad7274_chip_info },
{ "ad7276", (kernel_ulong_t)&ad7276_chip_info },
{ "ad7277", (kernel_ulong_t)&ad7277_chip_info },
{ "ad7278", (kernel_ulong_t)&ad7278_chip_info },
{ "ad7466", (kernel_ulong_t)&ad7466_chip_info },
{ "ad7467", (kernel_ulong_t)&ad7467_chip_info },
{ "ad7468", (kernel_ulong_t)&ad7468_chip_info },
{ "ad7475", (kernel_ulong_t)&ad7475_chip_info },
{ "ad7476", (kernel_ulong_t)&ad7466_chip_info },
{ "ad7476a", (kernel_ulong_t)&ad7466_chip_info },
{ "ad7477", (kernel_ulong_t)&ad7467_chip_info },
{ "ad7477a", (kernel_ulong_t)&ad7467_chip_info },
{ "ad7478", (kernel_ulong_t)&ad7468_chip_info },
{ "ad7478a", (kernel_ulong_t)&ad7468_chip_info },
{ "ad7495", (kernel_ulong_t)&ad7495_chip_info },
{ "ad7910", (kernel_ulong_t)&ad7467_chip_info },
{ "ad7920", (kernel_ulong_t)&ad7466_chip_info },
{ "ad7940", (kernel_ulong_t)&ad7940_chip_info },
{ "adc081s", (kernel_ulong_t)&adc081s_chip_info },
{ "adc101s", (kernel_ulong_t)&adc101s_chip_info },
{ "adc121s", (kernel_ulong_t)&adc121s_chip_info },
{ "ads7866", (kernel_ulong_t)&ads7866_chip_info },
{ "ads7867", (kernel_ulong_t)&ads7867_chip_info },
{ "ads7868", (kernel_ulong_t)&ads7868_chip_info },
{ "bd79105", (kernel_ulong_t)&bd79105_chip_info },
{ .name = "ad7091", .driver_data = (kernel_ulong_t)&ad7091_chip_info },
{ .name = "ad7091r", .driver_data = (kernel_ulong_t)&ad7091r_chip_info },
{ .name = "ad7273", .driver_data = (kernel_ulong_t)&ad7273_chip_info },
{ .name = "ad7274", .driver_data = (kernel_ulong_t)&ad7274_chip_info },
{ .name = "ad7276", .driver_data = (kernel_ulong_t)&ad7276_chip_info },
{ .name = "ad7277", .driver_data = (kernel_ulong_t)&ad7277_chip_info },
{ .name = "ad7278", .driver_data = (kernel_ulong_t)&ad7278_chip_info },
{ .name = "ad7466", .driver_data = (kernel_ulong_t)&ad7466_chip_info },
{ .name = "ad7467", .driver_data = (kernel_ulong_t)&ad7467_chip_info },
{ .name = "ad7468", .driver_data = (kernel_ulong_t)&ad7468_chip_info },
{ .name = "ad7475", .driver_data = (kernel_ulong_t)&ad7475_chip_info },
{ .name = "ad7476", .driver_data = (kernel_ulong_t)&ad7466_chip_info },
{ .name = "ad7476a", .driver_data = (kernel_ulong_t)&ad7466_chip_info },
{ .name = "ad7477", .driver_data = (kernel_ulong_t)&ad7467_chip_info },
{ .name = "ad7477a", .driver_data = (kernel_ulong_t)&ad7467_chip_info },
{ .name = "ad7478", .driver_data = (kernel_ulong_t)&ad7468_chip_info },
{ .name = "ad7478a", .driver_data = (kernel_ulong_t)&ad7468_chip_info },
{ .name = "ad7495", .driver_data = (kernel_ulong_t)&ad7495_chip_info },
{ .name = "ad7910", .driver_data = (kernel_ulong_t)&ad7467_chip_info },
{ .name = "ad7920", .driver_data = (kernel_ulong_t)&ad7466_chip_info },
{ .name = "ad7940", .driver_data = (kernel_ulong_t)&ad7940_chip_info },
{ .name = "adc081s", .driver_data = (kernel_ulong_t)&adc081s_chip_info },
{ .name = "adc101s", .driver_data = (kernel_ulong_t)&adc101s_chip_info },
{ .name = "adc121s", .driver_data = (kernel_ulong_t)&adc121s_chip_info },
{ .name = "ads7866", .driver_data = (kernel_ulong_t)&ads7866_chip_info },
{ .name = "ads7867", .driver_data = (kernel_ulong_t)&ads7867_chip_info },
{ .name = "ads7868", .driver_data = (kernel_ulong_t)&ads7868_chip_info },
{ .name = "bd79105", .driver_data = (kernel_ulong_t)&bd79105_chip_info },
/*
* The ROHM BU79100G is identical to the TI's ADS7866 from the software
* point of view. The binding document mandates the ADS7866 to be
* marked as a fallback for the BU79100G, but we still need the SPI ID
* here to make the module loading work.
*/
{ "bu79100g", (kernel_ulong_t)&ads7866_chip_info },
{ "ltc2314-14", (kernel_ulong_t)&ltc2314_14_chip_info },
{ .name = "bu79100g", .driver_data = (kernel_ulong_t)&ads7866_chip_info },
{ .name = "ltc2314-14", .driver_data = (kernel_ulong_t)&ltc2314_14_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7476_id);

View File

@@ -463,17 +463,17 @@ static int ad7606_spi_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7606_id_table[] = {
{ "ad7605-4", (kernel_ulong_t)&ad7605_4_bus_info },
{ "ad7606-4", (kernel_ulong_t)&ad7606_4_bus_info },
{ "ad7606-6", (kernel_ulong_t)&ad7606_6_bus_info },
{ "ad7606-8", (kernel_ulong_t)&ad7606_8_bus_info },
{ "ad7606b", (kernel_ulong_t)&ad7606b_bus_info },
{ "ad7606c-16", (kernel_ulong_t)&ad7606c_16_bus_info },
{ "ad7606c-18", (kernel_ulong_t)&ad7606c_18_bus_info },
{ "ad7607", (kernel_ulong_t)&ad7607_bus_info },
{ "ad7608", (kernel_ulong_t)&ad7608_bus_info },
{ "ad7609", (kernel_ulong_t)&ad7609_bus_info },
{ "ad7616", (kernel_ulong_t)&ad7616_bus_info },
{ .name = "ad7605-4", .driver_data = (kernel_ulong_t)&ad7605_4_bus_info },
{ .name = "ad7606-4", .driver_data = (kernel_ulong_t)&ad7606_4_bus_info },
{ .name = "ad7606-6", .driver_data = (kernel_ulong_t)&ad7606_6_bus_info },
{ .name = "ad7606-8", .driver_data = (kernel_ulong_t)&ad7606_8_bus_info },
{ .name = "ad7606b", .driver_data = (kernel_ulong_t)&ad7606b_bus_info },
{ .name = "ad7606c-16", .driver_data = (kernel_ulong_t)&ad7606c_16_bus_info },
{ .name = "ad7606c-18", .driver_data = (kernel_ulong_t)&ad7606c_18_bus_info },
{ .name = "ad7607", .driver_data = (kernel_ulong_t)&ad7607_bus_info },
{ .name = "ad7608", .driver_data = (kernel_ulong_t)&ad7608_bus_info },
{ .name = "ad7609", .driver_data = (kernel_ulong_t)&ad7609_bus_info },
{ .name = "ad7616", .driver_data = (kernel_ulong_t)&ad7616_bus_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7606_id_table);

View File

@@ -285,12 +285,12 @@ static int ad7766_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7766_id[] = {
{ "ad7766", ID_AD7766 },
{ "ad7766-1", ID_AD7766_1 },
{ "ad7766-2", ID_AD7766_2 },
{ "ad7767", ID_AD7766 },
{ "ad7767-1", ID_AD7766_1 },
{ "ad7767-2", ID_AD7766_2 },
{ .name = "ad7766", .driver_data = ID_AD7766 },
{ .name = "ad7766-1", .driver_data = ID_AD7766_1 },
{ .name = "ad7766-2", .driver_data = ID_AD7766_2 },
{ .name = "ad7767", .driver_data = ID_AD7766 },
{ .name = "ad7767-1", .driver_data = ID_AD7766_1 },
{ .name = "ad7767-2", .driver_data = ID_AD7766_2 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7766_id);

View File

@@ -1918,10 +1918,10 @@ static int ad7768_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7768_id_table[] = {
{ "ad7768-1", (kernel_ulong_t)&ad7768_chip_info },
{ "adaq7767-1", (kernel_ulong_t)&adaq7767_chip_info },
{ "adaq7768-1", (kernel_ulong_t)&adaq7768_chip_info },
{ "adaq7769-1", (kernel_ulong_t)&adaq7769_chip_info },
{ .name = "ad7768-1", .driver_data = (kernel_ulong_t)&ad7768_chip_info },
{ .name = "adaq7767-1", .driver_data = (kernel_ulong_t)&adaq7767_chip_info },
{ .name = "adaq7768-1", .driver_data = (kernel_ulong_t)&adaq7768_chip_info },
{ .name = "adaq7769-1", .driver_data = (kernel_ulong_t)&adaq7769_chip_info },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7768_id_table);

View File

@@ -142,7 +142,6 @@ struct ad7779_state {
const struct ad7779_chip_info *chip_info;
struct clk *mclk;
struct iio_trigger *trig;
struct completion completion;
unsigned int sampling_freq;
enum ad7779_filter filter_enabled;
struct iio_backend *back;
@@ -842,8 +841,7 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev
IRQF_NO_THREAD | IRQF_NO_AUTOEN, indio_dev->name,
st->trig);
if (ret)
return dev_err_probe(dev, ret, "request IRQ %d failed\n",
st->spi->irq);
return ret;
ret = devm_iio_trigger_register(dev, st->trig);
if (ret)
@@ -851,8 +849,6 @@ static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev
indio_dev->trig = iio_trigger_get(st->trig);
init_completion(&st->completion);
ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
&iio_pollfunc_store_time,
&ad7779_trigger_handler,

View File

@@ -347,10 +347,10 @@ static int ad7780_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7780_id[] = {
{ "ad7170", ID_AD7170 },
{ "ad7171", ID_AD7171 },
{ "ad7780", ID_AD7780 },
{ "ad7781", ID_AD7781 },
{ .name = "ad7170", .driver_data = ID_AD7170 },
{ .name = "ad7171", .driver_data = ID_AD7171 },
{ .name = "ad7780", .driver_data = ID_AD7780 },
{ .name = "ad7781", .driver_data = ID_AD7781 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7780_id);

View File

@@ -458,11 +458,11 @@ static int ad7791_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7791_spi_ids[] = {
{ "ad7787", AD7787 },
{ "ad7788", AD7788 },
{ "ad7789", AD7789 },
{ "ad7790", AD7790 },
{ "ad7791", AD7791 },
{ .name = "ad7787", .driver_data = AD7787 },
{ .name = "ad7788", .driver_data = AD7788 },
{ .name = "ad7789", .driver_data = AD7789 },
{ .name = "ad7790", .driver_data = AD7790 },
{ .name = "ad7791", .driver_data = AD7791 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7791_spi_ids);

View File

@@ -829,15 +829,15 @@ static int ad7793_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7793_id[] = {
{ "ad7785", ID_AD7785 },
{ "ad7792", ID_AD7792 },
{ "ad7793", ID_AD7793 },
{ "ad7794", ID_AD7794 },
{ "ad7795", ID_AD7795 },
{ "ad7796", ID_AD7796 },
{ "ad7797", ID_AD7797 },
{ "ad7798", ID_AD7798 },
{ "ad7799", ID_AD7799 },
{ .name = "ad7785", .driver_data = ID_AD7785 },
{ .name = "ad7792", .driver_data = ID_AD7792 },
{ .name = "ad7793", .driver_data = ID_AD7793 },
{ .name = "ad7794", .driver_data = ID_AD7794 },
{ .name = "ad7795", .driver_data = ID_AD7795 },
{ .name = "ad7796", .driver_data = ID_AD7796 },
{ .name = "ad7797", .driver_data = ID_AD7797 },
{ .name = "ad7798", .driver_data = ID_AD7798 },
{ .name = "ad7799", .driver_data = ID_AD7799 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7793_id);

View File

@@ -328,7 +328,7 @@ static int ad7887_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7887_id[] = {
{ "ad7887", ID_AD7887 },
{ .name = "ad7887", .driver_data = ID_AD7887 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7887_id);

View File

@@ -360,13 +360,13 @@ static int ad7923_probe(struct spi_device *spi)
}
static const struct spi_device_id ad7923_id[] = {
{ "ad7904", AD7904 },
{ "ad7914", AD7914 },
{ "ad7923", AD7924 },
{ "ad7924", AD7924 },
{ "ad7908", AD7908 },
{ "ad7918", AD7918 },
{ "ad7928", AD7928 },
{ .name = "ad7904", .driver_data = AD7904 },
{ .name = "ad7914", .driver_data = AD7914 },
{ .name = "ad7923", .driver_data = AD7924 },
{ .name = "ad7924", .driver_data = AD7924 },
{ .name = "ad7908", .driver_data = AD7908 },
{ .name = "ad7918", .driver_data = AD7918 },
{ .name = "ad7928", .driver_data = AD7928 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7923_id);

View File

@@ -865,9 +865,9 @@ static const struct of_device_id ad7944_of_match[] = {
MODULE_DEVICE_TABLE(of, ad7944_of_match);
static const struct spi_device_id ad7944_spi_id[] = {
{ "ad7944", (kernel_ulong_t)&ad7944_chip_info },
{ "ad7985", (kernel_ulong_t)&ad7985_chip_info },
{ "ad7986", (kernel_ulong_t)&ad7986_chip_info },
{ .name = "ad7944", .driver_data = (kernel_ulong_t)&ad7944_chip_info },
{ .name = "ad7985", .driver_data = (kernel_ulong_t)&ad7985_chip_info },
{ .name = "ad7986", .driver_data = (kernel_ulong_t)&ad7986_chip_info },
{ }
};

View File

@@ -410,9 +410,9 @@ static const struct of_device_id ad7949_spi_of_id[] = {
MODULE_DEVICE_TABLE(of, ad7949_spi_of_id);
static const struct spi_device_id ad7949_spi_id[] = {
{ "ad7949", ID_AD7949 },
{ "ad7682", ID_AD7682 },
{ "ad7689", ID_AD7689 },
{ .name = "ad7949", .driver_data = ID_AD7949 },
{ .name = "ad7682", .driver_data = ID_AD7682 },
{ .name = "ad7689", .driver_data = ID_AD7689 },
{ }
};
MODULE_DEVICE_TABLE(spi, ad7949_spi_id);

Some files were not shown because too many files have changed in this diff Show More