activate_all_cols(keypad, true);
 
        /* Enable IRQs again */
-       spin_lock_irq(&keypad->lock);
-       keypad->scan_pending = false;
-       enable_row_irqs(keypad);
-       spin_unlock_irq(&keypad->lock);
+       scoped_guard(spinlock_irq, &keypad->lock) {
+               keypad->scan_pending = false;
+               enable_row_irqs(keypad);
+       }
 }
 
 static irqreturn_t matrix_keypad_interrupt(int irq, void *id)
 {
        struct matrix_keypad *keypad = id;
-       unsigned long flags;
 
-       spin_lock_irqsave(&keypad->lock, flags);
+       guard(spinlock_irqsave)(&keypad->lock);
 
        /*
         * See if another IRQ beaten us to it and scheduled the
                              msecs_to_jiffies(keypad->debounce_ms));
 
 out:
-       spin_unlock_irqrestore(&keypad->lock, flags);
        return IRQ_HANDLED;
 }
 
 {
        struct matrix_keypad *keypad = input_get_drvdata(dev);
 
-       spin_lock_irq(&keypad->lock);
-       keypad->stopped = true;
-       spin_unlock_irq(&keypad->lock);
+       scoped_guard(spinlock_irq, &keypad->lock) {
+               keypad->stopped = true;
+       }
 
        flush_delayed_work(&keypad->work);
        /*