static void applespi_msg_complete(struct applespi_data *applespi,
                                  bool is_write_msg, bool is_read_compl)
 {
-       unsigned long flags;
-
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        if (is_read_compl)
                applespi->read_active = false;
                applespi->cmd_msg_queued = 0;
                applespi_send_cmd_msg(applespi);
        }
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
 }
 
 static void applespi_async_write_complete(void *context)
 
 static void applespi_init(struct applespi_data *applespi, bool is_resume)
 {
-       unsigned long flags;
-
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        if (is_resume)
                applespi->want_mt_init_cmd = true;
        else
                applespi->want_tp_info_cmd = true;
        applespi_send_cmd_msg(applespi);
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
 }
 
 static int applespi_set_capsl_led(struct applespi_data *applespi,
                                  bool capslock_on)
 {
-       unsigned long flags;
-       int sts;
-
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        applespi->want_cl_led_on = capslock_on;
-       sts = applespi_send_cmd_msg(applespi);
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
-
-       return sts;
+       return applespi_send_cmd_msg(applespi);
 }
 
 static void applespi_set_bl_level(struct led_classdev *led_cdev,
 {
        struct applespi_data *applespi =
                container_of(led_cdev, struct applespi_data, backlight_info);
-       unsigned long flags;
 
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        if (value == 0) {
                applespi->want_bl_level = value;
        }
 
        applespi_send_cmd_msg(applespi);
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
 }
 
 static int applespi_event(struct input_dev *dev, unsigned int type,
        /* process packet header */
        if (!applespi_verify_crc(applespi, applespi->rx_buffer,
                                 APPLESPI_PACKET_SIZE)) {
-               unsigned long flags;
-
-               spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+               guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
                if (applespi->drain) {
                        applespi->read_active = false;
                        wake_up_all(&applespi->drain_complete);
                }
 
-               spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
-
                return;
        }
 
 {
        struct applespi_data *applespi = context;
        int sts;
-       unsigned long flags;
 
        trace_applespi_irq_received(ET_RD_IRQ, PT_READ);
 
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        if (!applespi->suspended) {
                sts = applespi_async(applespi, &applespi->rd_m,
                        applespi->read_active = true;
        }
 
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
-
        return ACPI_INTERRUPT_HANDLED;
 }
 
 
 static void applespi_drain_writes(struct applespi_data *applespi)
 {
-       unsigned long flags;
-
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        applespi->drain = true;
        wait_event_lock_irq(applespi->drain_complete, !applespi->write_active,
                            applespi->cmd_msg_lock);
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
 }
 
 static void applespi_drain_reads(struct applespi_data *applespi)
 {
-       unsigned long flags;
-
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
+       guard(spinlock_irqsave)(&applespi->cmd_msg_lock);
 
        wait_event_lock_irq(applespi->drain_complete, !applespi->read_active,
                            applespi->cmd_msg_lock);
 
        applespi->suspended = true;
-
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
 }
 
 static void applespi_remove(struct spi_device *spi)
        struct spi_device *spi = to_spi_device(dev);
        struct applespi_data *applespi = spi_get_drvdata(spi);
        acpi_status acpi_sts;
-       unsigned long flags;
 
        /* ensure our flags and state reflect a newly resumed device */
-       spin_lock_irqsave(&applespi->cmd_msg_lock, flags);
-
-       applespi->drain = false;
-       applespi->have_cl_led_on = false;
-       applespi->have_bl_level = 0;
-       applespi->cmd_msg_queued = 0;
-       applespi->read_active = false;
-       applespi->write_active = false;
-
-       applespi->suspended = false;
+       scoped_guard(spinlock_irqsave, &applespi->cmd_msg_lock) {
+               applespi->drain = false;
+               applespi->have_cl_led_on = false;
+               applespi->have_bl_level = 0;
+               applespi->cmd_msg_queued = 0;
+               applespi->read_active = false;
+               applespi->write_active = false;
 
-       spin_unlock_irqrestore(&applespi->cmd_msg_lock, flags);
+               applespi->suspended = false;
+       }
 
        /* switch on the SPI interface */
        applespi_enable_spi(applespi);