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