| 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 | |