void cma3000_suspend(struct cma3000_accl_data *data)
{
	mutex_lock(&data->mutex);

	if (!data->suspended && data->opened)
		cma3000_poweroff(data);

	data->suspended = true;

	mutex_unlock(&data->mutex);
}
static void cma3000_close(struct input_dev *input_dev)
{
	struct cma3000_accl_data *data = input_get_drvdata(input_dev);

	mutex_lock(&data->mutex);

	if (!data->suspended)
		cma3000_poweroff(data);

	data->opened = false;

	mutex_unlock(&data->mutex);
}
int cma3000_exit(struct cma3000_accl_data *data)
{
	int ret;

	ret = cma3000_poweroff(data);

	if (data->client->irq)
		free_irq(data->client->irq, data);

	mutex_destroy(&data->mutex);
	input_unregister_device(data->input_dev);
	input_free_device(data->input_dev);
	sysfs_remove_group(&data->client->dev.kobj, &cma3000_attr_group);
	return ret;
}