diff options
| author | Viditha Hanumanthareddy <ngjq36@motorola.com> | 2014-05-27 15:13:53 -0500 |
|---|---|---|
| committer | Viditha H <ngjq36@motorola.com> | 2014-05-29 17:55:30 +0000 |
| commit | 9c1764fef85c8f34489dfe73183b258bbfced4e1 (patch) | |
| tree | 09563d38a2bbb82bb86380c58a0200bf52f7a26e | |
| parent | b2f0b362d75cb65a9a78451f8c7dd8eb94761306 (diff) | |
| download | olio-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.h | 17 | ||||
| -rw-r--r-- | drivers/misc/m4sensorhub_passive.c | 18 | ||||
| -rw-r--r-- | include/linux/m4sensorhub/m4sensorhub_reg_enum.h | 3 |
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, |