Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / include / linux / iio / common / ssp_sensors.h
1 /*
2  *  Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved.
3  *
4  *  This program is free software; you can redistribute it and/or modify
5  *  it under the terms of the GNU General Public License as published by
6  *  the Free Software Foundation; either version 2 of the License, or
7  *  (at your option) any later version.
8  *
9  *  This program is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *  GNU General Public License for more details.
13  *
14  */
15 #ifndef _SSP_SENSORS_H_
16 #define _SSP_SENSORS_H_
17
18 #include <linux/iio/iio.h>
19
20 #define SSP_TIME_SIZE                           4
21 #define SSP_ACCELEROMETER_SIZE                  6
22 #define SSP_GYROSCOPE_SIZE                      6
23 #define SSP_BIO_HRM_RAW_SIZE                    8
24 #define SSP_BIO_HRM_RAW_FAC_SIZE                36
25 #define SSP_BIO_HRM_LIB_SIZE                    8
26
27 /**
28  * enum ssp_sensor_type - SSP sensor type
29  */
30 enum ssp_sensor_type {
31         SSP_ACCELEROMETER_SENSOR = 0,
32         SSP_GYROSCOPE_SENSOR,
33         SSP_GEOMAGNETIC_UNCALIB_SENSOR,
34         SSP_GEOMAGNETIC_RAW,
35         SSP_GEOMAGNETIC_SENSOR,
36         SSP_PRESSURE_SENSOR,
37         SSP_GESTURE_SENSOR,
38         SSP_PROXIMITY_SENSOR,
39         SSP_TEMPERATURE_HUMIDITY_SENSOR,
40         SSP_LIGHT_SENSOR,
41         SSP_PROXIMITY_RAW,
42         SSP_ORIENTATION_SENSOR,
43         SSP_STEP_DETECTOR,
44         SSP_SIG_MOTION_SENSOR,
45         SSP_GYRO_UNCALIB_SENSOR,
46         SSP_GAME_ROTATION_VECTOR,
47         SSP_ROTATION_VECTOR,
48         SSP_STEP_COUNTER,
49         SSP_BIO_HRM_RAW,
50         SSP_BIO_HRM_RAW_FAC,
51         SSP_BIO_HRM_LIB,
52         SSP_SENSOR_MAX,
53 };
54
55 struct ssp_data;
56
57 /**
58  * struct ssp_sensor_data - Sensor object
59  * @process_data:       Callback to feed sensor data.
60  * @type:               Used sensor type.
61  * @buffer:             Received data buffer.
62  */
63 struct ssp_sensor_data {
64         int (*process_data)(struct iio_dev *indio_dev, void *buf,
65                             int64_t timestamp);
66         enum ssp_sensor_type type;
67         u8 *buffer;
68 };
69
70 void ssp_register_consumer(struct iio_dev *indio_dev,
71                            enum ssp_sensor_type type);
72
73 int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type,
74                       u32 delay);
75
76 int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type);
77
78 u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type);
79
80 int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type,
81                      u32 delay);
82 #endif /* _SSP_SENSORS_H_ */