summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViditha Hanumanthareddy <ngjq36@motorola.com>2014-05-27 15:13:53 -0500
committerViditha H <ngjq36@motorola.com>2014-05-29 17:55:30 +0000
commit9c1764fef85c8f34489dfe73183b258bbfced4e1 (patch)
tree09563d38a2bbb82bb86380c58a0200bf52f7a26e
parentb2f0b362d75cb65a9a78451f8c7dd8eb94761306 (diff)
downloadolio-linux-3.10-9c1764fef85c8f34489dfe73183b258bbfced4e1.tar.xz
olio-linux-3.10-9c1764fef85c8f34489dfe73183b258bbfced4e1.zip
IKXCLOCK-1646: Add ability to enable/disable passive mode
Change-Id: I882c3fe5c3a034154593bb560a3e6e9aaa1cd6fa
-rw-r--r--drivers/mfd/m4sensorhub-reg.h17
-rw-r--r--drivers/misc/m4sensorhub_passive.c18
-rw-r--r--include/linux/m4sensorhub/m4sensorhub_reg_enum.h3
3 files changed, 31 insertions, 7 deletions
diff --git a/drivers/mfd/m4sensorhub-reg.h b/drivers/mfd/m4sensorhub-reg.h
index b9c2f09ebf5..d52590b3e8d 100644
--- a/drivers/mfd/m4sensorhub-reg.h
+++ b/drivers/mfd/m4sensorhub-reg.h
@@ -162,12 +162,15 @@ static const struct {
[M4SH_REG_GESTURE_GESTURE3] = {M4SH_TYPE_GESTURE, 0x7, 1},
[M4SH_REG_GESTURE_CONFIDENCE3] = {M4SH_TYPE_GESTURE, 0x8, 1},
[M4SH_REG_GESTURE_VALUE3] = {M4SH_TYPE_GESTURE, 0x9, 1},
- [M4SH_REG_PASSIVE_TIMESTAMP] = {M4SH_TYPE_PASSIVE, 0x0, 48},
- [M4SH_REG_PASSIVE_STEPS] = {M4SH_TYPE_PASSIVE, 0x30, 24},
- [M4SH_REG_PASSIVE_CALORIES] = {M4SH_TYPE_PASSIVE, 0x48, 24},
- [M4SH_REG_PASSIVE_HEARTRATE] = {M4SH_TYPE_PASSIVE, 0x60, 24},
- [M4SH_REG_PASSIVE_HRCONFIDENCE] = {M4SH_TYPE_PASSIVE, 0x78, 12},
- [M4SH_REG_PASSIVE_HEALTHYMINUTES] = {M4SH_TYPE_PASSIVE, 0x84, 12},
+ [M4SH_REG_PASSIVE_ENABLE] = {M4SH_TYPE_PASSIVE, 0x0, 1},
+ [M4SH_REG_PASSIVE_DUMMY] = {M4SH_TYPE_PASSIVE, 0x1, 1},
+ [M4SH_REG_PASSIVE_DUMMY1] = {M4SH_TYPE_PASSIVE, 0x2, 2},
+ [M4SH_REG_PASSIVE_TIMESTAMP] = {M4SH_TYPE_PASSIVE, 0x4, 48},
+ [M4SH_REG_PASSIVE_STEPS] = {M4SH_TYPE_PASSIVE, 0x34, 24},
+ [M4SH_REG_PASSIVE_CALORIES] = {M4SH_TYPE_PASSIVE, 0x4c, 24},
+ [M4SH_REG_PASSIVE_HEARTRATE] = {M4SH_TYPE_PASSIVE, 0x64, 24},
+ [M4SH_REG_PASSIVE_HRCONFIDENCE] = {M4SH_TYPE_PASSIVE, 0x7c, 12},
+ [M4SH_REG_PASSIVE_HEALTHYMINUTES] = {M4SH_TYPE_PASSIVE, 0x88, 12},
[M4SH_REG_EMG_SIGNALCOUNT] = {M4SH_TYPE_EMG, 0x0, 1},
[M4SH_REG_EMG_DUMMY] = {M4SH_TYPE_EMG, 0x1, 1},
[M4SH_REG_EMG_SAMPLERATE] = {M4SH_TYPE_EMG, 0x2, 2},
@@ -210,7 +213,7 @@ static const unsigned int bank_size_tbl[M4SH_TYPE__NUM] = {
[M4SH_TYPE_TIMEPIECE] = 8,
[M4SH_TYPE_WRIST] = 8,
[M4SH_TYPE_GESTURE] = 10,
- [M4SH_TYPE_PASSIVE] = 144,
+ [M4SH_TYPE_PASSIVE] = 148,
[M4SH_TYPE_EMG] = 330,
[M4SH_TYPE_HEARTRATE] = 11,
[M4SH_TYPE_HRSENSOR] = 13,
diff --git a/drivers/misc/m4sensorhub_passive.c b/drivers/misc/m4sensorhub_passive.c
index 6c0de12aa33..797258a2169 100644
--- a/drivers/misc/m4sensorhub_passive.c
+++ b/drivers/misc/m4sensorhub_passive.c
@@ -186,6 +186,15 @@ static int m4pas_set_samplerate(struct iio_dev *iio, int16_t rate)
dd->samplerate = rate;
if (rate >= 0) {
+ /* Enable passive mode feature */
+ err = m4sensorhub_reg_write_1byte(dd->m4,
+ M4SH_REG_PASSIVE_ENABLE,
+ 0x01, 0xFF);
+ if (err != 1) {
+ m4pas_err("%s: Failed to enable with %d.\n",
+ __func__, err);
+ goto m4pas_set_samplerate_fail;
+ }
/* Enable the IRQ if necessary */
if (!(dd->status & (1 << M4PAS_IRQ_ENABLED_BIT))) {
err = m4sensorhub_irq_enable(dd->m4,
@@ -198,6 +207,15 @@ static int m4pas_set_samplerate(struct iio_dev *iio, int16_t rate)
dd->status = dd->status | (1 << M4PAS_IRQ_ENABLED_BIT);
}
} else {
+ /* Disable passive mode feature */
+ err = m4sensorhub_reg_write_1byte(dd->m4,
+ M4SH_REG_PASSIVE_ENABLE,
+ 0x0, 0xFF);
+ if (err != 1) {
+ m4pas_err("%s: Failed to disable with %d.\n",
+ __func__, err);
+ goto m4pas_set_samplerate_fail;
+ }
/* Disable the IRQ if necessary */
if (dd->status & (1 << M4PAS_IRQ_ENABLED_BIT)) {
err = m4sensorhub_irq_disable(dd->m4,
diff --git a/include/linux/m4sensorhub/m4sensorhub_reg_enum.h b/include/linux/m4sensorhub/m4sensorhub_reg_enum.h
index f8ebb767e61..8b69a5c105b 100644
--- a/include/linux/m4sensorhub/m4sensorhub_reg_enum.h
+++ b/include/linux/m4sensorhub/m4sensorhub_reg_enum.h
@@ -156,6 +156,9 @@ enum m4sensorhub_reg {
M4SH_REG_GESTURE_GESTURE3,
M4SH_REG_GESTURE_CONFIDENCE3,
M4SH_REG_GESTURE_VALUE3,
+ M4SH_REG_PASSIVE_ENABLE,
+ M4SH_REG_PASSIVE_DUMMY,
+ M4SH_REG_PASSIVE_DUMMY1,
M4SH_REG_PASSIVE_TIMESTAMP,
M4SH_REG_PASSIVE_STEPS,
M4SH_REG_PASSIVE_CALORIES,