Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved.
0004  */
0005 #ifndef _SSP_SENSORS_H_
0006 #define _SSP_SENSORS_H_
0007 
0008 #include <linux/iio/iio.h>
0009 
0010 #define SSP_TIME_SIZE               4
0011 #define SSP_ACCELEROMETER_SIZE          6
0012 #define SSP_GYROSCOPE_SIZE          6
0013 #define SSP_BIO_HRM_RAW_SIZE            8
0014 #define SSP_BIO_HRM_RAW_FAC_SIZE        36
0015 #define SSP_BIO_HRM_LIB_SIZE            8
0016 
0017 /**
0018  * enum ssp_sensor_type - SSP sensor type
0019  */
0020 enum ssp_sensor_type {
0021     SSP_ACCELEROMETER_SENSOR = 0,
0022     SSP_GYROSCOPE_SENSOR,
0023     SSP_GEOMAGNETIC_UNCALIB_SENSOR,
0024     SSP_GEOMAGNETIC_RAW,
0025     SSP_GEOMAGNETIC_SENSOR,
0026     SSP_PRESSURE_SENSOR,
0027     SSP_GESTURE_SENSOR,
0028     SSP_PROXIMITY_SENSOR,
0029     SSP_TEMPERATURE_HUMIDITY_SENSOR,
0030     SSP_LIGHT_SENSOR,
0031     SSP_PROXIMITY_RAW,
0032     SSP_ORIENTATION_SENSOR,
0033     SSP_STEP_DETECTOR,
0034     SSP_SIG_MOTION_SENSOR,
0035     SSP_GYRO_UNCALIB_SENSOR,
0036     SSP_GAME_ROTATION_VECTOR,
0037     SSP_ROTATION_VECTOR,
0038     SSP_STEP_COUNTER,
0039     SSP_BIO_HRM_RAW,
0040     SSP_BIO_HRM_RAW_FAC,
0041     SSP_BIO_HRM_LIB,
0042     SSP_SENSOR_MAX,
0043 };
0044 
0045 struct ssp_data;
0046 
0047 /**
0048  * struct ssp_sensor_data - Sensor object
0049  * @process_data:   Callback to feed sensor data.
0050  * @type:       Used sensor type.
0051  * @buffer:     Received data buffer.
0052  */
0053 struct ssp_sensor_data {
0054     int (*process_data)(struct iio_dev *indio_dev, void *buf,
0055                 int64_t timestamp);
0056     enum ssp_sensor_type type;
0057     u8 *buffer;
0058 };
0059 
0060 void ssp_register_consumer(struct iio_dev *indio_dev,
0061                enum ssp_sensor_type type);
0062 
0063 int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type,
0064               u32 delay);
0065 
0066 int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type);
0067 
0068 u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type);
0069 
0070 int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type,
0071              u32 delay);
0072 #endif /* _SSP_SENSORS_H_ */