mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 14:04:27 -04:00
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:
2
.mailmap
2
.mailmap
@@ -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>
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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
|
||||
|
||||
21
Documentation/ABI/testing/sysfs-bus-iio-flow
Normal file
21
Documentation/ABI/testing/sysfs-bus-iio-flow
Normal 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".
|
||||
11
Documentation/ABI/testing/sysfs-bus-iio-frequency
Normal file
11
Documentation/ABI/testing/sysfs-bus-iio-frequency
Normal 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.
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
170
Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
Normal file
170
Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
@@ -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>;
|
||||
};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
219
Documentation/devicetree/bindings/iio/adc/ti,ads112c14.yaml
Normal file
219
Documentation/devicetree/bindings/iio/adc/ti,ads112c14.yaml
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
...
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
...
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
@@ -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 = <®_3v3>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <0 IRQ_TYPE_EDGE_RISING>;
|
||||
};
|
||||
};
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -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>;
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,.*":
|
||||
|
||||
199
Documentation/iio/adf41513.rst
Normal file
199
Documentation/iio/adf41513.rst
Normal 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).
|
||||
@@ -31,6 +31,7 @@ Industrial I/O Kernel Drivers
|
||||
ad7625
|
||||
ad7944
|
||||
ade9000
|
||||
adf41513
|
||||
adis16475
|
||||
adis16480
|
||||
adis16550
|
||||
|
||||
74
MAINTAINERS
74
MAINTAINERS
@@ -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>
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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" },
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 },
|
||||
{ }
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)<c2314_14_chip_info },
|
||||
{ .name = "bu79100g", .driver_data = (kernel_ulong_t)&ads7866_chip_info },
|
||||
{ .name = "ltc2314-14", .driver_data = (kernel_ulong_t)<c2314_14_chip_info },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(spi, ad7476_id);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 },
|
||||
{ }
|
||||
|
||||
};
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user