|
@@ -218,8 +218,10 @@ static void matrix_keypad_stop(struct input_dev *dev)
|
|
{
|
|
{
|
|
struct matrix_keypad *keypad = input_get_drvdata(dev);
|
|
struct matrix_keypad *keypad = input_get_drvdata(dev);
|
|
|
|
|
|
|
|
+ spin_lock_irq(&keypad->lock);
|
|
keypad->stopped = true;
|
|
keypad->stopped = true;
|
|
- mb();
|
|
|
|
|
|
+ spin_unlock_irq(&keypad->lock);
|
|
|
|
+
|
|
flush_work(&keypad->work.work);
|
|
flush_work(&keypad->work.work);
|
|
/*
|
|
/*
|
|
* matrix_keypad_scan() will leave IRQs enabled;
|
|
* matrix_keypad_scan() will leave IRQs enabled;
|