1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved. |
4 | */ |
5 | #ifndef _SSP_SENSORS_H_ |
6 | #define _SSP_SENSORS_H_ |
7 | |
8 | #include <linux/iio/iio.h> |
9 | |
10 | #define SSP_TIME_SIZE 4 |
11 | #define SSP_ACCELEROMETER_SIZE 6 |
12 | #define SSP_GYROSCOPE_SIZE 6 |
13 | #define SSP_BIO_HRM_RAW_SIZE 8 |
14 | #define SSP_BIO_HRM_RAW_FAC_SIZE 36 |
15 | #define SSP_BIO_HRM_LIB_SIZE 8 |
16 | |
17 | /** |
18 | * enum ssp_sensor_type - SSP sensor type |
19 | */ |
20 | enum ssp_sensor_type { |
21 | SSP_ACCELEROMETER_SENSOR = 0, |
22 | SSP_GYROSCOPE_SENSOR, |
23 | SSP_GEOMAGNETIC_UNCALIB_SENSOR, |
24 | SSP_GEOMAGNETIC_RAW, |
25 | SSP_GEOMAGNETIC_SENSOR, |
26 | SSP_PRESSURE_SENSOR, |
27 | SSP_GESTURE_SENSOR, |
28 | SSP_PROXIMITY_SENSOR, |
29 | SSP_TEMPERATURE_HUMIDITY_SENSOR, |
30 | SSP_LIGHT_SENSOR, |
31 | SSP_PROXIMITY_RAW, |
32 | SSP_ORIENTATION_SENSOR, |
33 | SSP_STEP_DETECTOR, |
34 | SSP_SIG_MOTION_SENSOR, |
35 | SSP_GYRO_UNCALIB_SENSOR, |
36 | SSP_GAME_ROTATION_VECTOR, |
37 | SSP_ROTATION_VECTOR, |
38 | SSP_STEP_COUNTER, |
39 | SSP_BIO_HRM_RAW, |
40 | SSP_BIO_HRM_RAW_FAC, |
41 | SSP_BIO_HRM_LIB, |
42 | SSP_SENSOR_MAX, |
43 | }; |
44 | |
45 | struct ssp_data; |
46 | |
47 | /** |
48 | * struct ssp_sensor_data - Sensor object |
49 | * @process_data: Callback to feed sensor data. |
50 | * @type: Used sensor type. |
51 | * @buffer: Received data buffer. |
52 | */ |
53 | struct ssp_sensor_data { |
54 | int (*process_data)(struct iio_dev *indio_dev, void *buf, |
55 | int64_t timestamp); |
56 | enum ssp_sensor_type type; |
57 | u8 *buffer; |
58 | }; |
59 | |
60 | void ssp_register_consumer(struct iio_dev *indio_dev, |
61 | enum ssp_sensor_type type); |
62 | |
63 | int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type, |
64 | u32 delay); |
65 | |
66 | int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type); |
67 | |
68 | u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type); |
69 | |
70 | int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type, |
71 | u32 delay); |
72 | #endif /* _SSP_SENSORS_H_ */ |
73 | |