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_als.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_als.c')
| -rw-r--r-- | drivers/misc/m4sensorhub_als.c | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/misc/m4sensorhub_als.c b/drivers/misc/m4sensorhub_als.c index fbb7c110672..781e74fc07e 100644 --- a/drivers/misc/m4sensorhub_als.c +++ b/drivers/misc/m4sensorhub_als.c @@ -268,6 +268,29 @@ m4als_create_m4eventdev_fail:  	return err;  } +static void m4als_panic_restore(struct m4sensorhub_data *m4sensorhub, +				void *data) +{ +	int size, err; +	struct m4als_driver_data *dd = (struct m4als_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_LIGHTSENSOR_SAMPLERATE); +	err = m4sensorhub_reg_write(dd->m4, M4SH_REG_LIGHTSENSOR_SAMPLERATE, +				   (char *)&dd->samplerate, m4sh_no_mask); +	if (err < 0) { +		m4als_err("%s: Failed to set sample rate.\n", __func__); +	} else if (err != size) { +		m4als_err("%s: Wrote %d bytes instead of %d.\n", +			  __func__, err, size); +	} +} +  static int m4als_driver_init(struct init_calldata *p_arg)  {  	struct m4als_driver_data *dd = p_arg->p_data; @@ -294,6 +317,10 @@ static int m4als_driver_init(struct init_calldata *p_arg)  		goto m4als_driver_init_irq_fail;  	} +	err = m4sensorhub_panic_register(dd->m4, PANICHDL_ALS_RESTORE, +					 m4als_panic_restore, dd); +	if (err < 0) +		KDEBUG(M4SH_ERROR, "Als panic callback register failed\n");  	goto m4als_driver_init_exit;  m4als_driver_init_irq_fail:  |