diff options
| author | Viditha Hanumanthareddy <ngjq36@motorola.com> | 2014-06-02 09:11:25 -0500 |
|---|---|---|
| committer | Viditha Hanumanthareddy <ngjq36@motorola.com> | 2014-06-04 09:36:24 -0500 |
| commit | 13994f358b36cf0482295fe3a38a1297c3916715 (patch) | |
| tree | 4e91b74228f67c1f4d438d96d0d6c30ba98f75c2 /drivers/misc/m4sensorhub_fusion.c | |
| parent | 312df65201da563be207d3c5b9a0ff06fd0c48be (diff) | |
| download | olio-linux-3.10-13994f358b36cf0482295fe3a38a1297c3916715.tar.xz olio-linux-3.10-13994f358b36cf0482295fe3a38a1297c3916715.zip | |
IKXCLOCK-1762: Fix m4 panic handlers
Change-Id: I53820435227388c323d2beec6e678a94b674fff9
Diffstat (limited to 'drivers/misc/m4sensorhub_fusion.c')
| -rw-r--r-- | drivers/misc/m4sensorhub_fusion.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/misc/m4sensorhub_fusion.c b/drivers/misc/m4sensorhub_fusion.c index e426efe9021..99c80df1d33 100644 --- a/drivers/misc/m4sensorhub_fusion.c +++ b/drivers/misc/m4sensorhub_fusion.c @@ -308,6 +308,27 @@ m4fus_create_iiodev_exit: return err; } +static void m4fus_panic_restore(struct m4sensorhub_data *m4sensorhub, + void *data) +{ + int size, err; + struct m4fus_driver_data *dd = (struct m4fus_driver_data *)data; + + if (dd == NULL) { + m4als_err("%s: Driver data is null, unable to restore\n"); + return; + } + size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_FUSION_SAMPLERATE); + err = m4sensorhub_reg_write(dd->m4, M4SH_REG_FUSION_SAMPLERATE, + (char *)&dd->samplerate, m4sh_no_mask); + if (err < 0) { + m4fus_err("%s: Failed to set sample rate.\n", __func__); + } else if (err != size) { + m4fus_err("%s: Wrote %d bytes instead of %d.\n", + __func__, err, size); + } +} + static int m4fus_driver_init(struct init_calldata *p_arg) { struct iio_dev *iio = p_arg->p_data; @@ -330,6 +351,11 @@ static int m4fus_driver_init(struct init_calldata *p_arg) goto m4fus_driver_init_fail; } + err = m4sensorhub_panic_register(dd->m4, PANICHDL_FUSION_RESTORE, + m4fus_panic_restore, dd); + if (err < 0) + KDEBUG(M4SH_ERROR, "Fusion panic callback register failed\n"); + goto m4fus_driver_init_exit; m4fus_driver_init_fail: |