summaryrefslogtreecommitdiff
path: root/drivers/misc/m4sensorhub_passive.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/m4sensorhub_passive.c')
-rw-r--r--drivers/misc/m4sensorhub_passive.c18
1 files changed, 18 insertions, 0 deletions
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,