{
struct mms114_data *data = dev_id;
struct i2c_client *client = data->client;
- struct input_dev *input_dev = data->input_dev;
struct mms114_touch touch[MMS114_MAX_TOUCH];
int packet_size;
int touch_size;
int index;
int error;
- mutex_lock(&input_dev->mutex);
- if (!input_device_enabled(input_dev)) {
- mutex_unlock(&input_dev->mutex);
- goto out;
- }
- mutex_unlock(&input_dev->mutex);
-
packet_size = mms114_read_reg(data, MMS114_PACKET_SIZE);
if (packet_size <= 0)
goto out;
input_mt_report_pointer_emulation(input_dev, true);
input_sync(input_dev);
- mutex_lock(&input_dev->mutex);
+ guard(mutex)(&input_dev->mutex);
+
if (input_device_enabled(input_dev))
mms114_stop(data);
- mutex_unlock(&input_dev->mutex);
return 0;
}
struct input_dev *input_dev = data->input_dev;
int error;
- mutex_lock(&input_dev->mutex);
+ guard(mutex)(&input_dev->mutex);
+
if (input_device_enabled(input_dev)) {
error = mms114_start(data);
- if (error < 0) {
- mutex_unlock(&input_dev->mutex);
+ if (error)
return error;
- }
}
- mutex_unlock(&input_dev->mutex);
return 0;
}