^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * STMicroelectronics accelerometers driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright 2012-2013 STMicroelectronics Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Denis Ciocca <denis.ciocca@st.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * v. 1.0.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef ST_ACCEL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define ST_ACCEL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/iio/common/st_sensors.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) enum st_accel_type {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) LSM303DLH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) LSM303DLHC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) LIS3DH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) LSM330D,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) LSM330DL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) LSM330DLC,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) LIS331DLH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) LSM303DL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) LSM303DLM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) LSM330,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) LSM303AGR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) LIS2DH12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) LIS3L02DQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) LNG2DM,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) H3LIS331DL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) LIS331DL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) LIS3LV02DL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) LIS2DW12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) LIS3DHH,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) LIS2DE12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) LIS2HH12,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ST_ACCEL_MAX,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define H3LIS331DL_ACCEL_DEV_NAME "h3lis331dl_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define LIS3LV02DL_ACCEL_DEV_NAME "lis3lv02dl_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #define LSM303DLHC_ACCEL_DEV_NAME "lsm303dlhc_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) #define LIS3DH_ACCEL_DEV_NAME "lis3dh"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) #define LSM330D_ACCEL_DEV_NAME "lsm330d_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define LSM330DL_ACCEL_DEV_NAME "lsm330dl_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define LSM330DLC_ACCEL_DEV_NAME "lsm330dlc_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define LIS331DL_ACCEL_DEV_NAME "lis331dl_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #define LIS331DLH_ACCEL_DEV_NAME "lis331dlh"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define LSM303DL_ACCEL_DEV_NAME "lsm303dl_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define LSM303DLH_ACCEL_DEV_NAME "lsm303dlh_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define LSM303DLM_ACCEL_DEV_NAME "lsm303dlm_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define LSM330_ACCEL_DEV_NAME "lsm330_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define LSM303AGR_ACCEL_DEV_NAME "lsm303agr_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define LIS2DH12_ACCEL_DEV_NAME "lis2dh12_accel"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define LIS3L02DQ_ACCEL_DEV_NAME "lis3l02dq"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define LNG2DM_ACCEL_DEV_NAME "lng2dm"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define LIS2DW12_ACCEL_DEV_NAME "lis2dw12"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define LIS3DHH_ACCEL_DEV_NAME "lis3dhh"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) #define LIS3DE_ACCEL_DEV_NAME "lis3de"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define LIS2DE12_ACCEL_DEV_NAME "lis2de12"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) #define LIS2HH12_ACCEL_DEV_NAME "lis2hh12"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) * struct st_sensors_platform_data - default accel platform data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) * @drdy_int_pin: default accel DRDY is available on INT1 pin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) static __maybe_unused const struct st_sensors_platform_data default_accel_pdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) .drdy_int_pin = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) const struct st_sensor_settings *st_accel_get_settings(const char *name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) int st_accel_common_probe(struct iio_dev *indio_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) void st_accel_common_remove(struct iio_dev *indio_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #ifdef CONFIG_IIO_BUFFER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) int st_accel_allocate_ring(struct iio_dev *indio_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) void st_accel_deallocate_ring(struct iio_dev *indio_dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) int st_accel_trig_set_state(struct iio_trigger *trig, bool state);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) #define ST_ACCEL_TRIGGER_SET_STATE (&st_accel_trig_set_state)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) #else /* CONFIG_IIO_BUFFER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) static inline int st_accel_allocate_ring(struct iio_dev *indio_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) static inline void st_accel_deallocate_ring(struct iio_dev *indio_dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) #define ST_ACCEL_TRIGGER_SET_STATE NULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #endif /* CONFIG_IIO_BUFFER */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) #endif /* ST_ACCEL_H */