提交 a88bfe78 编写于 作者: I Irina Tirdea 提交者: Jonathan Cameron

iio: core: Introduce STEPS channel, ENABLE mask and INSTANCE event

These changes are needed to support the functionality of a pedometer.
A pedometer has two basic functionalities: step counter and step detector.

The step counter needs to be enabled and then it will count the steps
in its hardware register. Whenever the application needs to check
the step count, it will read the step counter register. To support the
step counter a new channel type STEPS is added. Since the pedometer needs
to be enabled first so that the hardware can count and store the steps,
we need a specific ENABLE channel info mask.

The step detector will generate an interrupt each time a step is detected.
To support this functionality we add a new event type INSTANCE.

For more information on the Android requirements for step counter and step
detector see:
http://source.android.com/devices/sensors/composite_sensors.html#counter
and http://source.android.com/devices/sensors/composite_sensors.html#detector.

A device that has the pedometer functionality this interface needs to
support is Freescale's MMA9553L:
http://www.freescale.com/files/sensors/doc/ref_manual/MMA9553LSWRM.pdfSigned-off-by: NIrina Tirdea <irina.tirdea@intel.com>
Signed-off-by: NDaniel Baluta <daniel.baluta@intel.com>
Signed-off-by: NJonathan Cameron <jic23@kernel.org>
上级 1843c2f3
...@@ -856,6 +856,13 @@ Description: ...@@ -856,6 +856,13 @@ Description:
number or direction is not specified, applies to all channels of number or direction is not specified, applies to all channels of
this type. this type.
What: /sys/.../events/in_steps_instance_en
KernelVersion: 3.19
Contact: linux-iio@vger.kernel.org
Description:
Enables or disables step detection. Each time the user takes a step an
event of this type will be generated.
What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger What: /sys/bus/iio/devices/iio:deviceX/trigger/current_trigger
KernelVersion: 2.6.35 KernelVersion: 2.6.35
Contact: linux-iio@vger.kernel.org Contact: linux-iio@vger.kernel.org
...@@ -1095,3 +1102,18 @@ Description: ...@@ -1095,3 +1102,18 @@ Description:
after application of scale and offset. If no offset or scale is after application of scale and offset. If no offset or scale is
present, output should be considered as processed with the present, output should be considered as processed with the
unit in milliamps. unit in milliamps.
What: /sys/.../iio:deviceX/in_steps_en
KernelVersion: 3.19
Contact: linux-iio@vger.kernel.org
Description:
Activates the step counter. After activation, the number of steps
taken by the user will be counted in hardware and exported through
in_steps_input.
What: /sys/.../iio:deviceX/in_steps_input
KernelVersion: 3.19
Contact: linux-iio@vger.kernel.org
Description:
This attribute is used to read the number of steps taken by the user
since the last reboot while activated.
...@@ -71,6 +71,7 @@ static const char * const iio_chan_type_name_spec[] = { ...@@ -71,6 +71,7 @@ static const char * const iio_chan_type_name_spec[] = {
[IIO_PRESSURE] = "pressure", [IIO_PRESSURE] = "pressure",
[IIO_HUMIDITYRELATIVE] = "humidityrelative", [IIO_HUMIDITYRELATIVE] = "humidityrelative",
[IIO_ACTIVITY] = "activity", [IIO_ACTIVITY] = "activity",
[IIO_STEPS] = "steps",
}; };
static const char * const iio_modifier_names[] = { static const char * const iio_modifier_names[] = {
...@@ -118,6 +119,7 @@ static const char * const iio_chan_info_postfix[] = { ...@@ -118,6 +119,7 @@ static const char * const iio_chan_info_postfix[] = {
[IIO_CHAN_INFO_HARDWAREGAIN] = "hardwaregain", [IIO_CHAN_INFO_HARDWAREGAIN] = "hardwaregain",
[IIO_CHAN_INFO_HYSTERESIS] = "hysteresis", [IIO_CHAN_INFO_HYSTERESIS] = "hysteresis",
[IIO_CHAN_INFO_INT_TIME] = "integration_time", [IIO_CHAN_INFO_INT_TIME] = "integration_time",
[IIO_CHAN_INFO_ENABLE] = "en",
}; };
/** /**
......
...@@ -197,6 +197,7 @@ static const char * const iio_ev_type_text[] = { ...@@ -197,6 +197,7 @@ static const char * const iio_ev_type_text[] = {
[IIO_EV_TYPE_ROC] = "roc", [IIO_EV_TYPE_ROC] = "roc",
[IIO_EV_TYPE_THRESH_ADAPTIVE] = "thresh_adaptive", [IIO_EV_TYPE_THRESH_ADAPTIVE] = "thresh_adaptive",
[IIO_EV_TYPE_MAG_ADAPTIVE] = "mag_adaptive", [IIO_EV_TYPE_MAG_ADAPTIVE] = "mag_adaptive",
[IIO_EV_TYPE_INSTANCE] = "instance",
}; };
static const char * const iio_ev_dir_text[] = { static const char * const iio_ev_dir_text[] = {
......
...@@ -38,6 +38,7 @@ enum iio_chan_info_enum { ...@@ -38,6 +38,7 @@ enum iio_chan_info_enum {
IIO_CHAN_INFO_HARDWAREGAIN, IIO_CHAN_INFO_HARDWAREGAIN,
IIO_CHAN_INFO_HYSTERESIS, IIO_CHAN_INFO_HYSTERESIS,
IIO_CHAN_INFO_INT_TIME, IIO_CHAN_INFO_INT_TIME,
IIO_CHAN_INFO_ENABLE,
}; };
enum iio_shared_by { enum iio_shared_by {
......
...@@ -31,6 +31,7 @@ enum iio_chan_type { ...@@ -31,6 +31,7 @@ enum iio_chan_type {
IIO_PRESSURE, IIO_PRESSURE,
IIO_HUMIDITYRELATIVE, IIO_HUMIDITYRELATIVE,
IIO_ACTIVITY, IIO_ACTIVITY,
IIO_STEPS,
}; };
enum iio_modifier { enum iio_modifier {
...@@ -73,6 +74,7 @@ enum iio_event_type { ...@@ -73,6 +74,7 @@ enum iio_event_type {
IIO_EV_TYPE_ROC, IIO_EV_TYPE_ROC,
IIO_EV_TYPE_THRESH_ADAPTIVE, IIO_EV_TYPE_THRESH_ADAPTIVE,
IIO_EV_TYPE_MAG_ADAPTIVE, IIO_EV_TYPE_MAG_ADAPTIVE,
IIO_EV_TYPE_INSTANCE,
}; };
enum iio_event_info { enum iio_event_info {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册