zephyr/drivers/sensor/Kconfig
Gerard Marull-Paretas 44f48f6da7 drivers: sensor: zephyr_thermistor: refactor driver
Refactor driver to align a bit more with its Linux counterpart, ie,
ntc_thermistor. This driver did quite a few _unconventional_ things,
like using "zephyr," compatibles, a dedicated node for pre-computed
compensation table (referenced by the actual pseudo-device node), etc.
The comparison helper function should likely be simplified as well (to
avoid the need for custom wrapper for bsearch), but this can be done
later.

In this refactor, each thermistor gets a compatible, e.g. "epcos,xxxx".
Compatibles are known by the driver, so are compensation tables. This
simplifies devicetree files. There's no need to bother about
compensation tables in **every** board file if Zephyr supports a certain
NTC model.

In general we should respect Linux bindings, which in the end influence
how drivers are implemented. In this case, this principle resulted in
simplified, easier to use code.

For future developers, this is how support for a new NTC can be added:

1. Add to the end of the driver:

```c
 #undef DT_DRV_COMPAT
 #define DT_DRV_COMPAT vnd_model

 static __unused const struct ntc_compensation comp_vnd_model[] = {
     { x, y },
     ...,
 };

 #define DT_INST_FOREACH_STATUS_OKAY_VARGS(NTC_THERMISTOR_DEV_INIT,
                                           DT_DRV_COMPAT, comp_vnd_model)
```
3. In driver's Kconfig make sure it depends on
   DT_HAS_$DT_DRV_COMPAT$_ENABLED

Note: $X$ means _value_ of X.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2023-05-04 20:49:48 +02:00

313 lines
6.4 KiB
Plaintext

# Sensor configuration options
# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
menuconfig SENSOR
bool "Sensor drivers"
help
Include sensor drivers in system config
if SENSOR
module = SENSOR
module-str = sensor
source "subsys/logging/Kconfig.template.log_config"
config SENSOR_INIT_PRIORITY
int "Sensor init priority"
default 90
help
Sensor initialization priority.
config SENSOR_SHELL
bool "Sensor shell"
depends on SHELL
select CBPRINTF_FP_SUPPORT
default y if !SHELL_MINIMAL
help
This shell provides access to basic sensor data.
config SENSOR_SHELL_BATTERY
bool "Sensor shell 'battery' command"
depends on SHELL
help
This enables the 'battery' command which reports charging information
in a convenient format. It makes use of a fuel gauge to read its
information.
config SENSOR_INFO
bool "Sensor Info iterable section"
comment "Device Drivers"
source "drivers/sensor/adt7310/Kconfig"
source "drivers/sensor/adt7420/Kconfig"
source "drivers/sensor/adxl345/Kconfig"
source "drivers/sensor/adxl362/Kconfig"
source "drivers/sensor/adxl372/Kconfig"
source "drivers/sensor/ak8975/Kconfig"
source "drivers/sensor/akm09918c/Kconfig"
source "drivers/sensor/amg88xx/Kconfig"
source "drivers/sensor/ams_as5600/Kconfig"
source "drivers/sensor/ams_iAQcore/Kconfig"
source "drivers/sensor/apds9960/Kconfig"
source "drivers/sensor/bh1750/Kconfig"
source "drivers/sensor/bma280/Kconfig"
source "drivers/sensor/bmc150_magn/Kconfig"
source "drivers/sensor/bme280/Kconfig"
source "drivers/sensor/bme680/Kconfig"
source "drivers/sensor/bmg160/Kconfig"
source "drivers/sensor/bmi160/Kconfig"
source "drivers/sensor/bmi270/Kconfig"
source "drivers/sensor/bmm150/Kconfig"
source "drivers/sensor/bmp388/Kconfig"
source "drivers/sensor/bq274xx/Kconfig"
source "drivers/sensor/ccs811/Kconfig"
source "drivers/sensor/dht/Kconfig"
source "drivers/sensor/dps310/Kconfig"
source "drivers/sensor/ds18b20/Kconfig"
source "drivers/sensor/ens210/Kconfig"
source "drivers/sensor/fdc2x1x/Kconfig"
source "drivers/sensor/fxas21002/Kconfig"
source "drivers/sensor/fxos8700/Kconfig"
source "drivers/sensor/grove/Kconfig"
source "drivers/sensor/grow_r502a/Kconfig"
source "drivers/sensor/ti_hdc/Kconfig"
source "drivers/sensor/ti_hdc20xx/Kconfig"
source "drivers/sensor/hmc5883l/Kconfig"
source "drivers/sensor/hp206c/Kconfig"
source "drivers/sensor/hts221/Kconfig"
source "drivers/sensor/i3g4250d/Kconfig"
source "drivers/sensor/icm42605/Kconfig"
source "drivers/sensor/icm42670/Kconfig"
source "drivers/sensor/icm42688/Kconfig"
source "drivers/sensor/icp10125/Kconfig"
source "drivers/sensor/iis2dh/Kconfig"
source "drivers/sensor/iis2dlpc/Kconfig"
source "drivers/sensor/iis2iclx/Kconfig"
source "drivers/sensor/iis2mdc/Kconfig"
source "drivers/sensor/iis3dhhc/Kconfig"
source "drivers/sensor/ina23x/Kconfig"
source "drivers/sensor/ina3221/Kconfig"
source "drivers/sensor/isl29035/Kconfig"
source "drivers/sensor/ina219/Kconfig"
source "drivers/sensor/ism330dhcx/Kconfig"
source "drivers/sensor/lis2dh/Kconfig"
source "drivers/sensor/lis2ds12/Kconfig"
source "drivers/sensor/lis2dw12/Kconfig"
source "drivers/sensor/lis2mdl/Kconfig"
source "drivers/sensor/lis3mdl/Kconfig"
source "drivers/sensor/lm75/Kconfig"
source "drivers/sensor/lm77/Kconfig"
source "drivers/sensor/lps22hb/Kconfig"
source "drivers/sensor/lps22hh/Kconfig"
source "drivers/sensor/lps25hb/Kconfig"
source "drivers/sensor/lsm303dlhc_magn/Kconfig"
source "drivers/sensor/lsm6ds0/Kconfig"
source "drivers/sensor/lsm6dsl/Kconfig"
source "drivers/sensor/lsm6dso/Kconfig"
source "drivers/sensor/lsm9ds0_gyro/Kconfig"
source "drivers/sensor/lsm9ds0_mfd/Kconfig"
source "drivers/sensor/max17055/Kconfig"
source "drivers/sensor/max17262/Kconfig"
source "drivers/sensor/max30101/Kconfig"
source "drivers/sensor/max31855/Kconfig"
source "drivers/sensor/max31865/Kconfig"
source "drivers/sensor/max31875/Kconfig"
source "drivers/sensor/max44009/Kconfig"
source "drivers/sensor/max6675/Kconfig"
source "drivers/sensor/mchp_tach_xec/Kconfig"
source "drivers/sensor/mcp970x/Kconfig"
source "drivers/sensor/mcp9808/Kconfig"
source "drivers/sensor/mhz19b/Kconfig"
source "drivers/sensor/mpr/Kconfig"
source "drivers/sensor/mpu6050/Kconfig"
source "drivers/sensor/mpu9250/Kconfig"
source "drivers/sensor/ms5837/Kconfig"
source "drivers/sensor/ms5607/Kconfig"
source "drivers/sensor/npm1300_charger/Kconfig"
source "drivers/sensor/nrf5/Kconfig"
source "drivers/sensor/opt3001/Kconfig"
source "drivers/sensor/pms7003/Kconfig"
source "drivers/sensor/qdec_mcux/Kconfig"
source "drivers/sensor/qdec_nrfx/Kconfig"
source "drivers/sensor/qdec_sam/Kconfig"
source "drivers/sensor/qdec_stm32/Kconfig"
source "drivers/sensor/sbs_gauge/Kconfig"
source "drivers/sensor/sgp40/Kconfig"
source "drivers/sensor/shtcx/Kconfig"
source "drivers/sensor/sht3xd/Kconfig"
source "drivers/sensor/sht4x/Kconfig"
source "drivers/sensor/si7006/Kconfig"
source "drivers/sensor/si7055/Kconfig"
source "drivers/sensor/si7060/Kconfig"
source "drivers/sensor/si7210/Kconfig"
source "drivers/sensor/sm351lt/Kconfig"
source "drivers/sensor/stm32_temp/Kconfig"
source "drivers/sensor/stm32_vbat/Kconfig"
source "drivers/sensor/stts751/Kconfig"
source "drivers/sensor/sx9500/Kconfig"
source "drivers/sensor/th02/Kconfig"
source "drivers/sensor/tmp007/Kconfig"
source "drivers/sensor/tmp108/Kconfig"
source "drivers/sensor/tmp112/Kconfig"
source "drivers/sensor/tmp116/Kconfig"
source "drivers/sensor/vcnl4040/Kconfig"
source "drivers/sensor/veml7700/Kconfig"
source "drivers/sensor/vl53l0x/Kconfig"
source "drivers/sensor/vl53l1x/Kconfig"
source "drivers/sensor/nxp_kinetis_temp/Kconfig"
source "drivers/sensor/wsen_hids/Kconfig"
source "drivers/sensor/wsen_itds/Kconfig"
source "drivers/sensor/wsen_pads/Kconfig"
source "drivers/sensor/wsen_pdus/Kconfig"
source "drivers/sensor/wsen_tids/Kconfig"
source "drivers/sensor/mcux_acmp/Kconfig"
source "drivers/sensor/nuvoton_tach_npcx/Kconfig"
source "drivers/sensor/nuvoton_adc_cmp_npcx/Kconfig"
source "drivers/sensor/ite_tach_it8xxx2/Kconfig"
source "drivers/sensor/ite_vcmp_it8xxx2/Kconfig"
source "drivers/sensor/pcnt_esp32/Kconfig"
source "drivers/sensor/esp32_temp/Kconfig"
source "drivers/sensor/rpi_pico_temp/Kconfig"
source "drivers/sensor/xmc4xxx_temp/Kconfig"
source "drivers/sensor/tmd2620/Kconfig"
source "drivers/sensor/ntc_thermistor/Kconfig"
source "drivers/sensor/s11059/Kconfig"
endif # SENSOR