struct input_dev *input_dev;
        struct workqueue_struct *workqueue;
        struct work_struct play_work;
-       struct mutex mutex;
+
        int irq;
 
        bool enabled;
        struct vibra_info *info = container_of(work,
                                struct vibra_info, play_work);
 
-       mutex_lock(&info->mutex);
-
        if (info->weak_speed || info->strong_speed) {
                if (!info->enabled)
                        twl6040_vibra_enable(info);
        } else if (info->enabled)
                twl6040_vibra_disable(info);
 
-       mutex_unlock(&info->mutex);
 }
 
 static int vibra_play(struct input_dev *input, void *data,
 
        cancel_work_sync(&info->play_work);
 
-       mutex_lock(&info->mutex);
-
        if (info->enabled)
                twl6040_vibra_disable(info);
-
-       mutex_unlock(&info->mutex);
 }
 
 static int __maybe_unused twl6040_vibra_suspend(struct device *dev)
        struct platform_device *pdev = to_platform_device(dev);
        struct vibra_info *info = platform_get_drvdata(pdev);
 
-       mutex_lock(&info->mutex);
+       cancel_work_sync(&info->play_work);
 
        if (info->enabled)
                twl6040_vibra_disable(info);
 
-       mutex_unlock(&info->mutex);
-
        return 0;
 }
 
                return -EINVAL;
        }
 
-       mutex_init(&info->mutex);
-
        error = devm_request_threaded_irq(&pdev->dev, info->irq, NULL,
                                          twl6040_vib_irq_handler,
                                          IRQF_ONESHOT,