Commit Graph

2242 Commits

Author SHA1 Message Date
Luis Ubieda
5a9ff03c21 sensor: adxl3xx: Move run-time modification of ODR from cfg to data
Config struct is constant and attempting to modify it triggers a fault.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-01-15 19:05:45 +01:00
Wenxi Xu
a490c90dc3 drivers: sensor: bmi08x: fix interfaceand trigger
1. Temperature Interface
According to BMI08x datasheet, temperature reading
requires both MSB and LSB bytes to be read and
processed correctly.

Temp data processing should follow the formula:
Temp in °C = (temp_msb * 8) + (temp_lsb / 32)

This patch implements the correct reading
sequence and calculation method as specified
in the datasheet.

2. Trigger Setting
Previously we set handler and then trigger struct.
However under some situation, as long as we set
the handler, we get into ISR immediately and never
set trigger struct.
I simply changed the sequence.

Testing:
- Verified temperature readings match datasheet
- Tested on stm32f407igh board with BMI08x sensor

Fixes: #82375

Signed-off-by: Wenxi Xu <xuwenxi0517@gmail.com>
2025-01-15 19:04:06 +01:00
Jordan Yates
d36334a08c sensor: tmp108: optimize resource usage
Optimize the resource usage of the driver for the case where
`CONFIG_TMP108_ALERT_INTERRUPTS=n`.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-15 19:03:40 +01:00
Jordan Yates
093f66fe55 sensor: tmp108: fix sample_fetch API conformance
`sensor_sample_fetch` is documented as blocking until the fetch
operation is complete. Update the implementation so that this is true.

Since the fetch operation now blocks, there is no need for the data
ready trigger.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-15 19:03:40 +01:00
Jordan Yates
faf912d404 sensor: tmp108: fix one-shot mode for as6212
When configuring the device to run in one-shot mode, the AS6212 requires
the sleep mode bit to be set. From the datasheet:

```
The sleep mode is activated by setting the bit SM in the configuration
register to 1. This shuts the device down immediately and reduces the
power consumption to a minimum value.

Entering the sleep mode will take some time (120 ms maximum) and the
first conversion after the sleep mode has been entered takes longer than
the values specified in Figure 7. It is therefore recommended when
entering sleep mode to trigger a single shot conversion at the same
time. After 150 ms (max), the device has then entered the sleep mode and
subsequent conversion times are as specified in Figure 7.
```

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-15 19:03:40 +01:00
Jordan Yates
f5434c133f sensor: tmp108: use common sensor_value_ helpers
Use the common `sensor_value_*` helper functions instead of implementing
the conversions again in the driver.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-15 19:03:40 +01:00
Mark Chen
f4da9b9705 drivers: sensor: Add sensor clock API support
This commit introduces a new Sensor Clock API, enabling the retrieval
of cycle counts and conversion to nanoseconds based on the system or
external clock. The API includes:

- `sensor_clock_get_cycles()` to get the current cycle count from the
  sensor clock.
- `sensor_clock_cycles_to_ns()` to convert cycles to nanoseconds using
  the clock's frequency.

The implementation supports both system clocks and external clocks
defined in the device tree, making the sensor clock integration more
flexible for various sensor use cases.

Signed-off-by: Mark Chen <mark.chen@cienet.com>
2025-01-15 19:03:13 +01:00
Patrick Günzel
2a999e14e8 sensors: reconfig adc for channel
Some ADCs (e.g. SAM0) can only convert one channel at a time
    and therefore need to be reconfigured for every voltage
    divider prior to startin the conversion

Signed-off-by: Patrick Günzel <patrick.guenzel@kinexon.com>
2025-01-14 22:55:07 +01:00
Gerson Fernando Budke
ac579a8f89 drivers: sensors: Add SENSOR_CHAN_FREQUENCY channel
Add new SENSOR_CHAN_FREQUENCY constant to allow implement sensors that
output frequency values in Hertz.

Signed-off-by: Gerson Fernando Budke <gerson.budke@ossystems.com.br>
2025-01-14 17:58:41 +01:00
Luis Ubieda
5a1dfc82c3 sensor: default_rtio_sensor: fix: Treat individual axis data as q31_t
Instead of assuming that an individual axis must contain all
data-values. Additionally, for determining that there's XYZ data, all
three channels must be present in the header.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-01-09 08:20:32 +01:00
Luis Ubieda
36dfea121d sensor: shell: Allow individual axis data to be processed
For the supported channels, instead of just allowing 3-axis data being
printed out, allow individual channels to be processed (e.g: accel_x,
gyro_y, etc).

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2025-01-09 08:20:32 +01:00
Emilio Aguila Escalante
4c9b6b6ff7 Sensor: VCNL4040: Update to lux/step constants
Right now, the driver uses the lux/step constants from the datasheet
https://www.vishay.com/docs/84307/designingvcnl4040.pdf
However, the newest datasheet from 2024
indicates that the lux/step have changed (page 12)
https://www.vishay.com/docs/84274/vcnl4040.pdf

Signed-off-by: Emilio Aguila Escalante <emilio.aguila@hotmail.com>
2025-01-09 08:20:22 +01:00
Jordan Yates
1201c2404d sensor: bme280: wait for sampling period before checking
Wait until the typical time that the sample would be ready before
starting to poll the status register.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2025-01-09 08:20:10 +01:00
Yiding Jia
2bf61e51fe drivers: sensor: Fix TMAG5273/TMAG3001 by adding a TMAG3001 compatible
Fixes issue introduced in #76460

The previous code attempted to detect whether TMAG5273 or TMAG3001 was
connected based on DEVICE ID register. This doesn't work as the bits that
denote the version on one part are undefined on the other part, and cannot
be relied on to be zero.

This commit adds a TMAG3001 compatible which (for now) is just derived from
the TMAG5273 compatible. This allows TMAG3001 to be specified directly in
the DT. The driver code is updated to support both compatibles.

Signed-off-by: Yiding Jia <yiding.jia@gmail.com>
2025-01-08 09:33:02 +01:00
Gaël PORTAY
010bedb590 sensor_shell: fix missing channel and attribute names
The three sensor channels listed below were recently added by the commit
9471df95a5:
 - SENSOR_CHAN_GAME_ROTATION_VECTOR
 - SENSOR_CHAN_GRAVITY_VECTOR
 - SENSOR_CHAN_GBIAS_XYZ

Theses channel names are missing and causes a system crash if the
SENSOR_LOG_LEVEL is set to DEBUG.

Also, the two sensor attributes SENSOR_ATTR_GAIN and SENSOR_ATTR_RESOLUTION
were added by the commit f849140de7.

This adds these missing channel and attribute to the list of names in the
sensor shell.

Signed-off-by: Gaël PORTAY <gael.portay@rtone.fr>
2025-01-08 07:51:04 +01:00
Mathieu Choplain
d173737479 drivers: sensor: stm32_vref: take calibration resolution into account
Update the driver to take the "vrefint-cal-resolution" property into
account when performing the calculations.

Signed-off-by: Mathieu Choplain <mathieu.choplain@st.com>
2025-01-08 07:50:44 +01:00
Gergo Vari
2759adaf1a drivers: rtc: maxim,ds3231: RTC driver
This is a squash of all the groundwork needed to
get a functioning driver for the DS3231 with the RTC API.

Signed-off-by: Gergo Vari <work@gergovari.com>
2025-01-07 23:00:05 +01:00
Armando Visconti
21584003bf sensors: drivers: lsm6dsv16x: add SFLP FIFO support
Add the Sensor Fusion Low Power (SFLP) FIFO streaming capability,
using RTIO. The decode function is now aware of parsing following FIFO
tags:

    - LSM6DSV16X_SFLP_GAME_ROTATION_VECTOR_TAG
    - LSM6DSV16X_SFLP_GYROSCOPE_BIAS_TAG
    - LSM6DSV16X_SFLP_GRAVITY_VECTOR_TAG

To activate SFLP the user should put in DT the proper configuration.
For example, to activate a 60Hz SFLP FIFO batching rate of game rotation
vector, gravity vector and gbias components, the user should add in DT
the following:

  sflp-odr = <LSM6DSV16X_DT_SFLP_ODR_AT_60Hz>;
  sflp-fifo-enable = <LSM6DSV16X_DT_SFLP_FIFO_GAME_ROTATION_GRAVITY_GBIAS>;

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-01-02 18:04:19 +01:00
Armando Visconti
dc03fba586 sensors/lsm6dsv16x: fix interrupt handling
In case I3C IBI interrupt is not used do not skip reading the status
register, otherwise the interrupt event will not get cleared.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-01-02 18:04:19 +01:00
Armando Visconti
43a61a823b modules/hal_st: Align sensor drivers to stmemsc HAL i/f v2.8
Align all sensor drivers that are using stmemsc (STdC) HAL i/f
to new APIs of stmemsc v2.8

Requires https://github.com/zephyrproject-rtos/hal_st/pull/24

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-01-02 18:04:19 +01:00
Armando Visconti
4e503748a5 sensors: lsm6dsv16x: fix get_frame_count API
The get_frame_count() API must return the number of frames in FIFO
for a given channel type, and not the total number of generic FIFO
frames. This API may be also re-used in the decoder routine when
the timestamp baseline is adjusted.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2025-01-02 04:07:37 +01:00
Armando Visconti
f9eceaebf9 drivers/sensor: lis2dux12: add lis2duxs12 support
The LIS2DUXS12 is a smart, digital, 3-axis linear accelerometer whose
MEMS and ASIC have been expressly designed to combine the lowest current
consumption possible with features such as always-on antialiasing
filtering, a finite state machine (FSM) and machine learning core (MLC)
with adaptive self-configuration (ASC), and an analog hub / Qvar sensing
channel.

(https://www.st.com/en/mems-and-sensors/lis2duxs12.html)

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-12-27 19:34:46 +01:00
Armando Visconti
0f76a4e519 drivers/sensor: lis2dux12: re-working to be DUX generic
Prepare the driver to be able to handle other DUX software compatible
devices. Currently the driver handles the st_lis2dux12 compatible only.

Do following major changes:

1. Introduce the lis2dux12_chip_api structure filled with device specific
   APIs. At the moment define following callback:

    - api_lis2dux12_set_odr_raw()
    - api_lis2dux12_set_range()
    - api_lis2dux12_sample_fetch_accel()
    - api_lis2dux12_sample_fetch_temp()
    - api_lis2dux12_handle_interrupt()
    - api_lis2dux12_init_interrupt()

2. Prepare specific APIs for st_lis2dux12 device.

3. Make DT instantiation on inst + name basis, and not only by inst. This
   commit only use "name = DT_DRV_COMPAT = st_lis2dux12".

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-12-27 19:34:46 +01:00
Omar Naffaa
c9be1a991b drivers: sensor: dht: Fix sensor read issue on esp32_devkitc_wrover
The DHT[11/22] sensor driver fails to read data due to an extra
"gpio_pin_set_dt" that is occurs prior to waiting for the sensor active
response. This leads to consistent failed reads on esp32 (devkitc,
wrover). After removing this line reads are consistently successful.

Signed-off-by: Omar Naffaa <omarnaffaa.on@gmail.com>
2024-12-23 09:16:06 +01:00
Jilay Pandya
dcf9449b51 drivers: sensor: mmc56x3_async.c fix missing break
coverity complains of a missing break statement in SENSOR_CHAN_ALL case
this is fixed by adding __attribute__((fallthrough))

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-21 15:04:22 +01:00
Dimitrije Lilic
088afe9359 drivers: sensor: adxl345: Support for RTIO I2C stream
Updated ADXL345 driver with RTIO I2C stream functionality.

Signed-off-by: Dimitrije Lilic <dimitrije.lilic@orioninc.com>
2024-12-20 16:23:46 +01:00
Mariëlle Korthout
4fa94f6742 drivers: sensor: Add HS400x driver
Adds Renesas HS400x temperature and humidity sensors driver.
Signed-off-by: Mariëlle Korthout <marielle.korthout.jc@renesas.com>
2024-12-20 03:18:19 +01:00
Ryan McClelland
eb93ba03a9 sensor: lsm6dsv16x: add i3c support
Add I3C support to the lsm6dsv16x.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-18 22:12:04 +01:00
Ryan McClelland
cbfabf8be8 sensor: lps22hh: fix null check for i3c ibi
A typo was made where if the i3c bus is not null, then it will not set
the ibi callback.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-12-18 22:12:04 +01:00
Yishai Jaffe
1b4cef325b shell: use shell_device_get_binding
Use shell_device_get_binding() instead of device_get_binding() so that
we get the device based on its name and in addition by its label.

Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
2024-12-18 15:32:10 +01:00
Aurelie Fontaine
8a0469dc4f drivers: sensor: icm42670: supports icm42670-P/-S
Prepare to use official TDK Invensense Inc. driver for icm42670-P/-S
sensor in tdk_hal module. Simplify I2C and SPI transport files.
Driver code moves in hal_tdk module.
Adds APEX features, such as Pedometer, Tilt detection, Wake on Motion
and Significant Motion Detector.

Signed-off-by: Aurelie Fontaine <aurelie.fontaine@tdk.com>
2024-12-18 03:04:31 +01:00
Lucien Zhao
c0b21f4a30 drivers: sensor: nxp: add code judge whether read back correctly
find a sensor driver bug don't judge the data whether read back
correctly, deal with buffer data directly.

Signed-off-by: Lucien Zhao <lucien.zhao@nxp.com>
2024-12-18 01:01:37 +01:00
Jilay Pandya
50928c0482 drivers: sensor: bmp180 fix unintentional integer overflow issue
cast partial_x3 explicitly to uint64_t to circumvent unintentioanl integer
overflow coverity issue

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-13 17:45:15 +01:00
Jilay Pandya
772b206408 drivers: sensor: fix missing break in mmc56x3_decoder
introduce breaks in mmc56x3_decoder.c

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-12 18:39:33 +01:00
Tomáš Juřena
96eb476d5d drivers: sensor: ti: ina230: Fix shared data between instances
This commit fixes a shared context between multiple instances of the
INA230 and INA236 driver. The issue is the naming of the instance data in
`INA230_DRIVER_INIT` macro when we have one instance of INA230 and one
of INA236 the name of the data variable will be `drv_data_0`. This
variable will then be passed to both instances.

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2024-12-12 18:39:23 +01:00
Jilay Pandya
2174ea0ac0 drivers: sensor: apds9306 fix unchecked return value coverity issue
check the return valeus of i2c_reg_write_byte_dt function and return
appropriate error code

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-12 11:05:49 +01:00
TOKITA Hiroshi
0e978fb1e6 drivers: sensor: scd4x: Fix to allow the use of multiple models
Compilation will fail if multiple models are used at the same time.
Changing to define different unique names for the symbols
to avoid conflicts.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-12-11 21:33:14 +01:00
TOKITA Hiroshi
f41195f922 drivers: sensor: lsm6dso: Fix issue lsm6dso32 cannot enabled
The lsm6dso driver does not correctly reflect the status of
the node in dt. So the driver didn't compile even if
`st,lsm6dso32` node exists.

I fixed it to correctly go through ithe compile.

Signed-off-by: TOKITA Hiroshi <tokita.hiroshi@gmail.com>
2024-12-11 21:33:14 +01:00
Jilay Pandya
47fc9a1a59 drivers: sensor: tdk: fix icm42688 division by zero
There were code paths that could have lead to divide by zero given an
invalid scale setting for accel or gyro. In practice this should be an
invalid setup even before getting to these conversion functions. The
conversion functions now better show all valid values are accounted for
by using CODE_UNREACHABLE in the default case.

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-07 11:02:28 +01:00
Maxmillion McLaughlin
7497b8bbbe drivers: sensor: max31865: fix compilation warning -Wdouble-promotion
Fixes type mix-match for rtd temperature calculation. Also changes
coefficient array name for clarity.

Signed-off-by: Maxmillion McLaughlin <max@sorcerer.earth>
2024-12-06 06:50:58 +01:00
Audun Korneliussen
ab6bca66ac drivers: sensor: npm1300_charger: Updating of discharge current limit
Update discharge current limit property to be aligned
with the most recent npm1300 datasheet.
This affects the discharge current measurement calculation,
which needs to be scaled accordingly.

Signed-off-by: Audun Korneliussen <audun.korneliussen@nordicsemi.no>
2024-12-05 15:18:23 +01:00
Armando Visconti
1e28ffab40 sensors: lsm6dsv16x: Kconfig: Fix trigger mode
Select TRIGGER_GLOBAL_THREAD by default if rtio streaming is enabled,
and TRIGGER_NONE otherwise. This change prevents bad trigger configurations
like

    CONFIG_LSM6DSV16X_TRIGGER=y
    CONFIG_LSM6DSV16X_TRIGGER_NONE=y

which does not have any sense.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-12-05 12:30:28 +01:00
Audun Korneliussen
439d3b2973 drivers: sensor: npm2100: Add driver for npm2100 pmic
Add sensor driver for npm2100 pmic.

This pmic performs measurements of battery voltage, regulator voltage
and die temperature.

Configurable pmic attributes are also organized under this driver.

Signed-off-by: Audun Korneliussen <audun.korneliussen@nordicsemi.no>
2024-12-04 14:19:53 -05:00
Jeppe Odgaard
c41570871b drivers: sensor: tmp116: support set sample frequency
Add support for setting the sample frequency via `attr_set` and the
output data rate from device tree source.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
2024-12-03 19:57:06 +01:00
Vladislav Pejic
756e699a41 driver: sensor: adxl366: Add supp for adxl366
Modifed ADXL367 driver to support both ADXL367 and ADXL366.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-12-03 15:48:01 +00:00
Yishai Jaffe
c09930ed30 drivers: led: Place API into iterable section
Add wrapper DEVICE_API macro to all led_driver_api instances.

Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
2024-12-02 22:07:36 +00:00
Pieter De Gendt
e16dece057 drivers: sensor: shell: Check sensor API type
Update sensor shell commands to filter and verify the device's API type.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 22:04:55 +00:00
Pieter De Gendt
a553af738d drivers: sensor: Place API into iterable section
Add wrapper DEVICE_API macro to all sensor_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 22:04:55 +00:00
Jeff Welder
712dff57d8 drivers: sensor: lsm6dsv16x: fix temperature overflow
Fixed integer overflow by explicit casting

Signed-off-by: Jeff Welder <Jeff.Welder@ellenbytech.com>
2024-12-02 18:19:46 +01:00
Jilay Pandya
0fd662febc drivers: sensor: tsic_xx6: fix implicit sign extension
This commit explicitly type-casts data_bits to uint64_t
in order to fix implicit sign extension warning

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-12-02 18:19:35 +01:00
James Roy
5df9611dc9 drivers: sensor: st: Fix uninitialized variable in lsm6dsv16x
Fix uninitialized val variables scanned by Coverity.

Signed-off-by: James Roy <rruuaanng@outlook.com>
2024-11-29 11:45:32 +01:00
Armando Visconti
b7ffb3d59d sensor/st: lsm6dsv16x: Fix lsm6dsv16x_attr_get() API
Fix a couple of typos when getting the accelerometer configuration.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-11-29 09:21:03 +01:00
Armando Visconti
a867dbdc47 sensors: lsm6dsv16x: add RTIO async and fifo stream
Add RTIO async and RTIO stream functionalities that enables,
among all the other things, the sensor data streaming from FIFO.

RTIO stream is using both SENSOR_TRIG_FIFO_WATERMARK and
SENSOR_TRIG_FIFO_FULL triggers. The decoder currently only supports
following FIFO tags:

  - LSM6DSV16X_XL_NC_TAG
  - LSM6DSV16X_GY_NC_TAG
  - LSM6DSV16X_TEMP_NC_TAG

Following FIFO parameters has to be defined in device tree to
correctly stream sensor data:

  - fifo-watermark (defaults to 32)
  - accel-fifo-batch-rate (defaults to LSM6DSV16X_DT_XL_NOT_BATCHED)
  - gyro-fifo-batch-rate (defaults to LSM6DSV16X_DT_GY_NOT_BATCHED)
  - temp-fifo-batch-rate (defaults to LSM6DSV16X_DT_TEMP_NOT_BATCHED)

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-11-27 21:06:30 +00:00
Armando Visconti
01c1e1173f sensors: lsm6dsv16x: add attr_get driver API
Add attr_get() driver API

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-11-27 21:06:30 +00:00
Armando Visconti
5bdde779c1 sensors: lsm6dsv16x: save gyro_fs in data
Save gyroscope range set from DT or SENSOR_ATTR in data
structure.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-11-27 21:06:30 +00:00
Tomáš Juřena
b4dcdaaeab drivers: sensor: ti: ina230: Fix dts warning if INA230_TRIGGER enabled
Updates the Kconfig condition to support trigger functionality for INA236.
This will get rid of `warning: INA230_TRIGGER (defined at
drivers/sensor/ti/ina23x/Kconfig:43) was assigned the value 'y' but got
the value 'n'.` if INA230_TRIGGER is enabled.

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2024-11-27 08:18:57 +01:00
Vladislav Pejic
04c70d681e driver: sensor: adxl367: Fix for extra 0
Fix for extra 0 in conversion of acceleration values in
adxl367_accel_convert.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-11-26 15:44:31 -05:00
Vladislav Pejic
19fe816f28 driver: sensor: adxl367: Temp conversion
Fix for conversion of temperature values in adxl367_temp_convert
and missing break statement.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-11-26 15:44:31 -05:00
Vladislav Pejic
eb15f306b6 driver: sensor: adxl367: Fix for SPI
Fix for SPI communication when RTIO is used in SPI driver. When in
adxl367_bus_access, const struct spi_buf buf[3] is used,
spi_rtio_copy function won't set correct buffers and length
for buf[2] and that will cause exception when that buffer is
processed.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-11-26 15:44:31 -05:00
Jordan Yates
91e006cb7c sensor: bme280: bme280_wait_until_ready timeout
Add a timeout to the `bme280_wait_until_ready` loop to ensure that we
never get stuck in this loop even if the bus enters an error condition.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-11-26 08:45:29 +01:00
Vladislav Pejic
aad4c69068 drivers: sensor: adxl367: Added RTIO stream
Updated ADXL367 driver with RTIO stream functionality.
RTIO stream is using both FIFO threshold and FIFO full triggers.
Together with RTIO stream, RTIO async read is also implemented.
Supported FIFO_CHANNEL configurations:
- XYZ
- X
- Y
- Z
- XYZT
- XT
- YT
- ZT
Configurations with external ADC are currently not supported.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-11-22 17:43:36 +01:00
Sergei Ovchinnikov
55c6a0eaa5 drivers: sensor: npm1300_charger: expose VBUS status
Add possibility to retrieve VBUS status of the nPM1300 charger through
its sensor APIs. Updated shields/npm1300_ek sample to use the new API.

Signed-off-by: Sergei Ovchinnikov <sergei.ovchinnikov@nordicsemi.no>
2024-11-19 17:51:13 -05:00
Jan Faeh
2efc8598e3 drivers: sensor: SCD4x Add driver
This adds support for Sensirion's SCD4x co2 sensor.

Signed-off-by: Jan Faeh <jan.faeh@sensirion.com>
2024-11-18 19:38:10 -05:00
Jan Faeh
22945254ef drivers: sensor: STS4x Add driver
This adds support for Sensirion's STS4x temperature sensor.

Signed-off-by: Jan Faeh <jan.faeh@sensirion.com>
2024-11-16 14:02:15 -05:00
Adrien Leravat
9df661ea1a drivers: sensor: hc-sr04: add driver
Add a simple driver for the HC-SR04 ultrasonic distance sensor.

Signed-off-by: Adrien Leravat <adrien.leravat@gmail.com>
2024-11-16 14:00:34 -05:00
Thomas Stranger
d0816a1a60 drivers: w1: updates to reflect analog maxim acquisition
Links and the manufacturer name are updated from maxim to analog
for the 1-wire subsystem and the related ds18b20 sensor.

After the acquisition of Maxim Integrated the documentation
of these devices has been moved to the analog.com website.
Redirects exist, so they are not broken yet,
but we should not rely on that.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2024-11-16 13:51:38 -05:00
Thomas Stranger
501f07fe53 drivers: sensor: sensirion: sht4x: update measurement duration
Update the measurement durations for the sht4x sensors
in accordance with the datasheet revision 6.6 (2024-04).

These timings have been updated by sensirion in rev 3 of
the datasheet.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2024-11-16 13:51:10 -05:00
Jilay Pandya
6a0d7351d5 drivers: sensor: fcx_mldx5 fix string_overflow issue
This commit fixes Copy into fixed size buffer (STRING_OVERFLOW) by checking
the cmd_data_len

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-11-16 13:38:00 -05:00
Jilay Pandya
cebd1c78e8 drivers: sensor: emul_bmi160: fix cid 215232
This commit fixes the issue of Null pointer dereferencing

Signed-off-by: Jilay Pandya <jilay.pandya@outlook.com>
2024-11-16 13:37:42 -05:00
Tarang Raval
bb7319e7f2 drivers: sensor: ina219: remove redundant error check
The function ina219_set_msr_delay always returns zero, indicating success.
Therefore, the error check on its return value is unnecessary and can be
removed.

Signed-off-by: Tarang Raval <tarang.raval@siliconsignals.io>
2024-11-16 13:33:34 -05:00
Ryan McClelland
c58c130b48 drivers: sensor: default_rtio_sensor: fix limited range warning
`chan_type` is defined as a `uint16_t`. This makes checking if it is
< 0 always false. A warning is shown with -Wtype-limits. Remove the
check as it is unnecessary.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-11-08 22:28:08 -06:00
Jun Lin
69e85b25fe board: npcx: remove CONFIG_PINCTRL from defconfig of npcx boards
The CONFIG_PINCTRL is removed from the board's defconfig files.
Drivers which use pin control function should add "select PINCTRL"
in their Kconfig files.

Fixes #78619

Signed-off-by: Jun Lin <CHLin56@nuvoton.com>
2024-11-07 08:59:14 -08:00
Gerson Fernando Budke
0cc8f93e8a soc: atmel: Drop PINCTRL from Kconfig.defconfig
This Kconfig has wrongly been added to defconfig files. It is not the
right place for it. It has never been the right place for it. Drivers
that need it should select the symbol in their Kconfig entries. Drop
PINCTL from Kconfig.defconfig and add proper select at Kconfig.sam*.

Fixes #78619

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2024-11-04 13:43:26 -06:00
Dimitrije Lilic
5ee9d7a869 driver: sensor: adxl345: Bug fix for q31_t conv
This is a bug fix for adxl345_accel_convert_q31 functions.
Functions are used to convert samples received from
sensor to q31_t format when RTIO stream is used.

Signed-off-by: Dimitrije Lilic <dimitrije.lilic@orioninc.com>
2024-10-29 07:09:13 -05:00
Maureen Helm
9ca3826abf drivers: sensor: adi: Set trigger thread name
Sets the trigger thread name for all adi sensor drivers to more clearly
identify the thread when tracing or debugging.

Signed-off-by: Maureen Helm <maureen.helm@analog.com>
2024-10-26 03:56:58 +01:00
Vladislav Pejic
832bbd8030 driver: sensor: adxl372: Bug fix for q31_t conv
This is a bug fix for adxl372_accel_convert_q31 function.
Function is used to convert samples received from
sensor to q31_t format when RTIO stream is used.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-10-26 03:54:23 +01:00
Vladislav Pejic
527c1f5356 driver: sensor: adxl362: Bug fix for q31_t conv
This is a bug fix for adxl362_temp_convert_q31 and
adxl362_accel_convert_q31 functions.
Functions are used to convert samples received from
sensor to q31_t format when RTIO stream is used.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-10-25 12:51:31 -05:00
Mahesh Mahadevan
38f06aa4bf drivers: sensor: p3t1755: Driver for NXP digital temperature sensor
Added driver for the NXP P3T1755 digital temperature sensor.

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
2024-10-25 08:53:56 +02:00
Tobias Pisani
66af846010 drivers: ti: bq274xx: Do not wait for device on init when lazy-loading
Before communicating with the device, the driver needs to wait 300ms. This
moves all communication with the device from init to configure, such
that this delay can be avoided on startup by using zephyr,lazy-load.

Signed-off-by: Tobias Pisani <mail@topisani.dev>
2024-10-24 17:52:30 +02:00
Michal Smola
ab3bf82efe drivers: sensor: nxp kinetis temp: Remove depends on kinetis
Remove Kconfig dependency on SOC_FAMILY_KINETIS as the temperature
sensor is available also on MCX family.

Signed-off-by: Michal Smola <michal.smola@nxp.com>
2024-10-24 14:05:00 +02:00
Florian Weber
1a89d4b13e drivers: sensor: akm09918: make submit function more unblocking
The driver now does not wait for the completion of a measurement
in the submit function.
Instead it schedule the fetch and the completion of the
submission queue entry as delayed work to the system work queue.

Signed-off-by: Florian Weber <Florian.Weber@live.de>
2024-10-23 15:35:35 -05:00
Jilay Pandya
d172847da5 drivers: sensor: adi: ltc2990 init trigger measurement
This commit triggers measurement during sensor initialization

Signed-off-by: Jilay Pandya <jilay.pandya@zeiss.com>
2024-10-23 15:33:56 -05:00
Armando Visconti
5be36eef47 drivers/sensor: lps2xdf: add ilps22qs support
The ILPS22QS is an ultra-compact piezoresistive absolute pressure sensor
which functions as a digital output barometer, supporting dual full-scale
up to user- selectable 4060 hPa. The device delivers ultra-low pressure
noise with very low power consumption and operates over an extended
temperature range from -40 °C to +105 °C.

(https://www.st.com/en/mems-and-sensors/ilps22qs.html)

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-10-23 16:52:57 +02:00
Armando Visconti
4c3606a3bf drivers/sensor: lps2xdf: Fix typo in Kconfig
Change I2C into I3C as it is a typo.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-10-23 16:52:57 +02:00
Armando Visconti
71bb3f7ade drivers/sensor: lps2xdf: add API to configure interrupt
Add a generic lps2xdf_config_int() API to configure device interrupt
mode, and implement the specific routines for lps22df and lps28dfw.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-10-23 16:52:57 +02:00
Armando Visconti
8fab391d3f drivers/sensor: lps2xdf: (Fix) move API inside CONFIG_LPS2XDF_TRIGGER
Move api_lps2xdf_handle_interrupt() API inside the CONFIG_LPS2XDF_TRIGGER
ifdef, because it should be defined only in that case.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
2024-10-23 16:52:57 +02:00
Vladislav Pejic
cfe64f7f1c drivers: sensor: adxl372: Updated driver with RTIO stream functionality
Updated ADXL372 driver with RTIO stream functionality.
RTIO stream is using both FIFO threshold and FIFO full triggers.
Together with RTIO stream, RTIO async read is also implemented.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-10-22 18:30:13 -04:00
Dimitrije Lilic
86ed9811c4 drivers: sensor: adxl345: Updated ADXL345 drv RTIO stream & Trigger func
Updated ADXL345 driver with RTIO stream functionality.
Added Trigger intterupt functionality. RTIO stream is using
FIFO threshold.Together with RTIO stream, RTIO async read
is also implemented.

Signed-off-by: Dimitrije Lilic <dimitrije.lilic@orioninc.com>
2024-10-22 18:29:22 -04:00
Luis Ubieda
ca822d4e4b sensor: lm77: Add LM77 config as a subset of the main symbol
Following pattern used in other Kconfigs. This also addresses the CI
failure on previous run.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2024-10-22 20:41:43 +02:00
Luis Ubieda
d557ee36d5 sensor: tree-wide: Enforce dependency of int-gpios with Trigger feature
We need int-gpios defined to use trigger functionality. Enforced with
the Kconfig parameter.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
2024-10-22 20:41:43 +02:00
Wajdi ELMuhtadi
fb45c6d93a drivers: sensor: wsen_hids_2525020210002: add sensor driver
Add wsen_hids_2525020210002 driver with
the corrected name and compatibility with
the hal update as well as added new features.

Signed-off-by: Wajdi ELMuhtadi <wajdi.elmuhtadi@we-online.com>
2024-10-22 14:03:08 +02:00
Vladislav Pejic
6d8ace9198 drivers: sensor: adxl362: Added RTIO stream
Updated ADXL362 driver with RTIO stream functionality.
RTIO stream is using both FIFO threshold and FIFO full triggers.
Together with RTIO stream, RTIO async read is also implemented.

Signed-off-by: Vladislav Pejic <vladislav.pejic@orioninc.com>
2024-10-22 14:02:21 +02:00
Chris Ruehl
a3f863e3f1 Drivers: Sensors: Bosch bmp390 merge into bmp388
Add support for Bosch bmp390 sensor, the drop in replacement for the
bmp388 with same register but different chip-id. This patch make use
of "bosch_bmp390" or "bosch_bmp388" and set the specific chip-id in a
data->chip-id variable, which then used to check against the register
value.

Additional, manual shift operation had been replaced with ENDIAN safe
macros and calibration values with target variable of int16_t add a
cast for it.

bmp388_spi: read register implementation wrong, fixed it.
tx-buffer must be <addr><dummy><dummy> in order to receive the
register value. Read registers in burst mode and have rx and tx
buffer same spi_buf to avoid clock stop and delay with nrf5.

Signed-off-by: Chris Ruehl <chris@gtsys.com.hk>
2024-10-22 13:58:33 +02:00
Stefan Schwendeler
8786436909 drivers: sensor: ntc_thermistor: adds support for VDD based ADC reference
The NTC thermistor implementation assumes a constant pull-up voltage
and that the ADC channel is measured against a reference voltage so that
the absolute voltage across the NTC can be calculated. Based on the
relationship of `pullup-uv` and this absolute NTC voltage, the resistance
of the NTC is calculated.

There are applications where the "pullup-uv" is not constant, but VDD.
Most ADCs support relative measurements against VDD. If `pullup-uv` is not
defined, the implementation assumes now that the ADC channel is configured
to use VDD as a reference and therefore no millivolt conversion is
required.

Signed-off-by: Stefan Schwendeler <Stefan.Schwendeler@husqvarnagroup.com>
2024-10-22 13:56:54 +02:00
Juliane Schulze
7adcebc675 vcnl36825t: add trigger capability
Adds trigger capability to the Vishay VCNL36825T sensor.

Signed-off-by: Juliane Schulze <juliane.schulze@deveritec.com>
2024-10-21 12:41:12 +02:00
Javier Santos
a70eaa5c4a drivers: sensor: npm1300: Added charging support without NTC
Current nPM1300 charger driver does not work with batteries
without NTC thermistor. Added supported for this feature.

Signed-off-by: Javier Santos <jasr93@outlook.es>
2024-10-17 15:39:28 -04:00
Tomáš Juřena
3602342611 drivers: sensor: ti: ina230: Add support for INA236
This commit adds support for INA236 into the existing INA230 driver.
These two chips are similar enough to share most of the code.
The device can be defined the same way as INA230 and we only have
the extra option to select the high-precision mode.

```
ina236: ina236@40 {
		status = "okay";
		compatible = "ti,ina236", "ti,ina230";
		reg = <0x40>;
		adc-mode = "Bus and shunt voltage continuous";
		vbus-conversion-time-us = <1100>;
		vshunt-conversion-time-us = <1100>;
		avg-count = <1>;
		current-lsb-microamps = <1000>;
		rshunt-micro-ohms = <15000>;
		alert-gpios = <&gpiod 0 GPIO_ACTIVE_LOW>;
		high-precision;
	};
```

Signed-off-by: Tomáš Juřena <jurenatomas@gmail.com>
2024-10-17 15:39:18 -04:00
Jordan Yates
8f4cf7f6af sensor: voltage_divider: delay sampling after power-on
Enforce some minimum delay between enabling the voltage divider with a
GPIO and sampling the analog voltage. Without this delay the ADC can
easily sample the transient power up curve instead of the steady state
output.

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-10-17 15:38:52 -04:00
Florian Weber
0d9cdf0990 drivers: sensors: rtio
Inform the executor of a submissions completion with -ENOMEM
if the size of the workq is not big enough.

Signed-off-by: Florian Weber <Florian.Weber@live.de>
2024-10-17 15:37:49 -04:00
Daniel Kampert
9d0486e3ee drivers: sensor: Add support for Broadcom APDS-9306
- Add Broadcom / Avago APDS-9306 ambient light sensor driver

Signed-off-by: Daniel Kampert <DanielKampert@kampis-elektroecke.de>
2024-10-17 09:46:53 +02:00