extern int acpi_s2idle_begin(void);
 extern int acpi_s2idle_prepare(void);
 extern int acpi_s2idle_prepare_late(void);
+extern void acpi_s2idle_check(void);
 extern bool acpi_s2idle_wake(void);
 extern void acpi_s2idle_restore_early(void);
 extern void acpi_s2idle_restore(void);
 
        return 0;
 }
 
+void acpi_s2idle_check(void)
+{
+       struct acpi_s2idle_dev_ops *handler;
+
+       if (!lps0_device_handle || sleep_no_lps0)
+               return;
+
+       list_for_each_entry(handler, &lps0_s2idle_devops_head, list_node) {
+               if (handler->check)
+                       handler->check();
+       }
+}
+
 void acpi_s2idle_restore_early(void)
 {
        struct acpi_s2idle_dev_ops *handler;
        .begin = acpi_s2idle_begin,
        .prepare = acpi_s2idle_prepare,
        .prepare_late = acpi_s2idle_prepare_late,
+       .check = acpi_s2idle_check,
        .wake = acpi_s2idle_wake,
        .restore_early = acpi_s2idle_restore_early,
        .restore = acpi_s2idle_restore,
 
 struct acpi_s2idle_dev_ops {
        struct list_head list_node;
        void (*prepare)(void);
+       void (*check)(void);
        void (*restore)(void);
 };
 int acpi_register_lps0_dev(struct acpi_s2idle_dev_ops *arg);