aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-31 08:43:49 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-31 08:43:49 -0800
commit89c468263befb4617aaab36ae8c54ba04164c7b0 (patch)
tree9da22d6a4ff19d8f4d09fa8daac4872b298bfde7 /include/linux
parentstaging: Remove logger and alarm-dev from android Makefile (diff)
parentiio:common:ssp_sensors fix warnings due to 32 bit instead of 64 bit passed to do_div (diff)
Merge tag 'iio-for-3.20b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-testing
Jonathan writes: Second round of IIO new drivers, functionality and cleanups for the 3.20 cycle. New drivers and device support: * Capella cm3232 ambient light sensor driver. * Freescale MMA9553 pedometer and activity monitor. Note this involved a refactor of the mma9551 driver to pull out shared elements. * Samsung sensor hub (as used in the galaxy gear 2 watch) Core support and initial drivers (gyro and accelerometer) more to follow. An additional fix was applied on top of this for a build issue thrown up by the autobuilders on some platforms. * Cosmic Circuits 10001 ADC driver * Qualcomm SPMI PMIC voltage ADC driver (current adc merged a while back). * Add binding for AK8963 (in capitals) as unfortunately there are bios' out there not using lower case. New functionality * Add newe operating mode to the core to allow for non triggered software buffers. This is mostly semantics as previously drivers just claimed they had a hardware buffer (when they didn't). * Add distance channel type. * Add energy channel type. * Add velocity channel type and IIO_MOD_ROOT_SUM_SQUARED (i.e. speed when our channel type is velocity). * Add _debounce_count and _debounce_time filter attributes. Only really make sense for counting types of measurements. First use is for avoiding miss detection of steps prior to walking. * Add change event type. This replaces the briefly present INSTANCE type (which hadn't gained any users). It is more generic as it allows for events say every 10 steps rather than every step. * Add _calibweight attributes to the ABI (and core support). Used by activity monitors to estimate energy use. Can imagine there will be other uses for this one. Driver new functionality * mma9551 gains runtime pm support. * hid-sensors gain PM support. Cleanup * Change calibheight unit to m from cm. As there are no prior users and this was inconsistent with other distance units, it makes sense to fix it before hte mma9553 driver which uses it. * mpu6050 cleanups and devm_ use. * as3935 switch over to PM ops. * Fix a few format strings for signed vs unsigned. * Fix tcs3414 missindentation * Typo in industrialio-event * Stop requiring IIO_TRIGGER for IIO_KFIFO_BUF as we have drivers that don't need it. No one is quite sure why that dependency was there and it seems to not matter.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/iio/common/ssp_sensors.h82
-rw-r--r--include/linux/iio/iio.h9
-rw-r--r--include/linux/iio/types.h6
3 files changed, 94 insertions, 3 deletions
diff --git a/include/linux/iio/common/ssp_sensors.h b/include/linux/iio/common/ssp_sensors.h
new file mode 100644
index 000000000000..f4d1b0edb432
--- /dev/null
+++ b/include/linux/iio/common/ssp_sensors.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2014, Samsung Electronics Co. Ltd. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ */
+#ifndef _SSP_SENSORS_H_
+#define _SSP_SENSORS_H_
+
+#include <linux/iio/iio.h>
+
+#define SSP_TIME_SIZE 4
+#define SSP_ACCELEROMETER_SIZE 6
+#define SSP_GYROSCOPE_SIZE 6
+#define SSP_BIO_HRM_RAW_SIZE 8
+#define SSP_BIO_HRM_RAW_FAC_SIZE 36
+#define SSP_BIO_HRM_LIB_SIZE 8
+
+/**
+ * enum ssp_sensor_type - SSP sensor type
+ */
+enum ssp_sensor_type {
+ SSP_ACCELEROMETER_SENSOR = 0,
+ SSP_GYROSCOPE_SENSOR,
+ SSP_GEOMAGNETIC_UNCALIB_SENSOR,
+ SSP_GEOMAGNETIC_RAW,
+ SSP_GEOMAGNETIC_SENSOR,
+ SSP_PRESSURE_SENSOR,
+ SSP_GESTURE_SENSOR,
+ SSP_PROXIMITY_SENSOR,
+ SSP_TEMPERATURE_HUMIDITY_SENSOR,
+ SSP_LIGHT_SENSOR,
+ SSP_PROXIMITY_RAW,
+ SSP_ORIENTATION_SENSOR,
+ SSP_STEP_DETECTOR,
+ SSP_SIG_MOTION_SENSOR,
+ SSP_GYRO_UNCALIB_SENSOR,
+ SSP_GAME_ROTATION_VECTOR,
+ SSP_ROTATION_VECTOR,
+ SSP_STEP_COUNTER,
+ SSP_BIO_HRM_RAW,
+ SSP_BIO_HRM_RAW_FAC,
+ SSP_BIO_HRM_LIB,
+ SSP_SENSOR_MAX,
+};
+
+struct ssp_data;
+
+/**
+ * struct ssp_sensor_data - Sensor object
+ * @process_data: Callback to feed sensor data.
+ * @type: Used sensor type.
+ * @buffer: Received data buffer.
+ */
+struct ssp_sensor_data {
+ int (*process_data)(struct iio_dev *indio_dev, void *buf,
+ int64_t timestamp);
+ enum ssp_sensor_type type;
+ u8 *buffer;
+};
+
+void ssp_register_consumer(struct iio_dev *indio_dev,
+ enum ssp_sensor_type type);
+
+int ssp_enable_sensor(struct ssp_data *data, enum ssp_sensor_type type,
+ u32 delay);
+
+int ssp_disable_sensor(struct ssp_data *data, enum ssp_sensor_type type);
+
+u32 ssp_get_sensor_delay(struct ssp_data *data, enum ssp_sensor_type);
+
+int ssp_change_delay(struct ssp_data *data, enum ssp_sensor_type type,
+ u32 delay);
+#endif /* _SSP_SENSORS_H_ */
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index 878d861b0610..80d855061064 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -40,6 +40,9 @@ enum iio_chan_info_enum {
IIO_CHAN_INFO_INT_TIME,
IIO_CHAN_INFO_ENABLE,
IIO_CHAN_INFO_CALIBHEIGHT,
+ IIO_CHAN_INFO_CALIBWEIGHT,
+ IIO_CHAN_INFO_DEBOUNCE_COUNT,
+ IIO_CHAN_INFO_DEBOUNCE_TIME,
};
enum iio_shared_by {
@@ -286,10 +289,11 @@ static inline s64 iio_get_time_ns(void)
/* Device operating modes */
#define INDIO_DIRECT_MODE 0x01
#define INDIO_BUFFER_TRIGGERED 0x02
+#define INDIO_BUFFER_SOFTWARE 0x04
#define INDIO_BUFFER_HARDWARE 0x08
#define INDIO_ALL_BUFFER_MODES \
- (INDIO_BUFFER_TRIGGERED | INDIO_BUFFER_HARDWARE)
+ (INDIO_BUFFER_TRIGGERED | INDIO_BUFFER_HARDWARE | INDIO_BUFFER_SOFTWARE)
#define INDIO_MAX_RAW_ELEMENTS 4
@@ -593,7 +597,8 @@ void devm_iio_trigger_free(struct device *dev, struct iio_trigger *iio_trig);
static inline bool iio_buffer_enabled(struct iio_dev *indio_dev)
{
return indio_dev->currentmode
- & (INDIO_BUFFER_TRIGGERED | INDIO_BUFFER_HARDWARE);
+ & (INDIO_BUFFER_TRIGGERED | INDIO_BUFFER_HARDWARE |
+ INDIO_BUFFER_SOFTWARE);
}
/**
diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
index 904dcbbf0e6f..580ed5bdb3fa 100644
--- a/include/linux/iio/types.h
+++ b/include/linux/iio/types.h
@@ -32,6 +32,9 @@ enum iio_chan_type {
IIO_HUMIDITYRELATIVE,
IIO_ACTIVITY,
IIO_STEPS,
+ IIO_ENERGY,
+ IIO_DISTANCE,
+ IIO_VELOCITY,
};
enum iio_modifier {
@@ -66,6 +69,7 @@ enum iio_modifier {
IIO_MOD_JOGGING,
IIO_MOD_WALKING,
IIO_MOD_STILL,
+ IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z,
};
enum iio_event_type {
@@ -74,7 +78,7 @@ enum iio_event_type {
IIO_EV_TYPE_ROC,
IIO_EV_TYPE_THRESH_ADAPTIVE,
IIO_EV_TYPE_MAG_ADAPTIVE,
- IIO_EV_TYPE_INSTANCE,
+ IIO_EV_TYPE_CHANGE,
};
enum iio_event_info {