Make this driver multi-instance and use the new API. Notes for sensorhub mode: In case of multiples devices it is possible that some of them has i2c slaves attached to it (sensorhub mode) but not the others. Since the driver is configured in the same way for all the instances (CONFIG_SENSORHUB=y), the routine that initialize the sensorhub part does not fail anymore in case no slaves are found for a particular instance. Instead, those non-sensorhub driver instances will set the shub_inited flag to false and will totally ignore the feature. Notes for triggers: In case of multiples devices the device pin the interrupt wire is attached to can be different (INT1 or INT2 pin). So, this information has been moved in DTS and then stored in the specific instance config structure. Currently the driver is able to handle a sngle interrupt line at a time attached to either INT1 or INT2. MOreover, the interrupt initialization for a driver instance proceed only if the drdy has been configured in its DT, else it returns ok. Signed-off-by: Armando Visconti <armando.visconti@st.com>
124 lines
2.6 KiB
Text
124 lines
2.6 KiB
Text
# ST Microelectronics IIS2ICLX 2-axis accelerometer sensor driver
|
|
|
|
# Copyright (c) 2020 STMicroelectronics
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menuconfig IIS2ICLX
|
|
bool "IIS2ICLX I2C/SPI accelerometer Chip"
|
|
depends on I2C || SPI
|
|
select HAS_STMEMSC
|
|
select USE_STDC_IIS2ICLX
|
|
help
|
|
Enable driver for IIS2ICLX accelerometer
|
|
sensor.
|
|
|
|
if IIS2ICLX
|
|
|
|
choice IIS2ICLX_TRIGGER_MODE
|
|
prompt "Trigger mode"
|
|
help
|
|
Specify the type of triggering to be used by the driver.
|
|
|
|
config IIS2ICLX_TRIGGER_NONE
|
|
bool "No trigger"
|
|
|
|
config IIS2ICLX_TRIGGER_GLOBAL_THREAD
|
|
bool "Use global thread"
|
|
depends on GPIO
|
|
select IIS2ICLX_TRIGGER
|
|
|
|
config IIS2ICLX_TRIGGER_OWN_THREAD
|
|
bool "Use own thread"
|
|
depends on GPIO
|
|
select IIS2ICLX_TRIGGER
|
|
|
|
endchoice
|
|
|
|
config IIS2ICLX_TRIGGER
|
|
bool
|
|
|
|
if IIS2ICLX_TRIGGER
|
|
|
|
config IIS2ICLX_THREAD_PRIORITY
|
|
int "Thread priority"
|
|
depends on IIS2ICLX_TRIGGER_OWN_THREAD
|
|
default 10
|
|
help
|
|
Priority of thread used by the driver to handle interrupts.
|
|
|
|
config IIS2ICLX_THREAD_STACK_SIZE
|
|
int "Thread stack size"
|
|
depends on IIS2ICLX_TRIGGER_OWN_THREAD
|
|
default 1024
|
|
help
|
|
Stack size of thread used by the driver to handle interrupts.
|
|
|
|
endif # IIS2ICLX_TRIGGER
|
|
|
|
config IIS2ICLX_ENABLE_TEMP
|
|
bool "Enable temperature"
|
|
help
|
|
Enable/disable temperature
|
|
|
|
config IIS2ICLX_SENSORHUB
|
|
bool "Enable I2C sensorhub feature"
|
|
help
|
|
Enable/disable internal sensorhub. You can enable
|
|
a maximum of two external sensors (if more than two are enabled
|
|
the system would enumerate only the first two found)
|
|
|
|
if IIS2ICLX_SENSORHUB
|
|
|
|
config IIS2ICLX_EXT_LIS2MDL
|
|
bool "Enable LIS2MDL as external sensor"
|
|
|
|
config IIS2ICLX_EXT_IIS2MDC
|
|
bool "Enable IIS2MDC as external sensor"
|
|
|
|
config IIS2ICLX_EXT_LPS22HH
|
|
bool "Enable LPS22HH as external sensor"
|
|
|
|
config IIS2ICLX_EXT_HTS221
|
|
bool "Enable HTS221 as external sensor"
|
|
|
|
config IIS2ICLX_EXT_LPS22HB
|
|
bool "Enable LPS22HB as external sensor"
|
|
|
|
endif # IIS2ICLX_SENSORHUB
|
|
|
|
menu "Attributes"
|
|
|
|
config IIS2ICLX_ACCEL_FS
|
|
int "Accelerometer full-scale range"
|
|
default 0
|
|
help
|
|
Specify the default accelerometer full-scale range.
|
|
An X value for the config represents a range of +/- X G. Valid values
|
|
are:
|
|
0: Full Scale selected at runtime
|
|
500: +/- 500mg
|
|
1000: +/- 1g
|
|
2000: +/- 2g
|
|
3000: +/- 3g
|
|
|
|
config IIS2ICLX_ACCEL_ODR
|
|
int "Accelerometer Output data rate frequency"
|
|
range 0 10
|
|
default 0
|
|
help
|
|
Specify the default accelerometer output data rate expressed in
|
|
samples per second (Hz).
|
|
0: ODR selected at runtime
|
|
1: 12.5Hz
|
|
2: 26Hz
|
|
3: 52Hz
|
|
4: 104Hz
|
|
5: 208Hz
|
|
6: 416Hz
|
|
7: 833Hz
|
|
8: 1660Hz
|
|
9: 3330Hz
|
|
10: 6660Hz
|
|
endmenu
|
|
|
|
endif # IIS2ICLX
|