How to deactivate wifi and bluetooth in sleep mode?

You can refer to the following modifications. Have a try. Thanks :smile:

diff --git a/kernel/power/earlysuspend.c b/kernel/power/earlysuspend.c
index f428084..da2ec80 100644
--- a/kernel/power/earlysuspend.c
+++ b/kernel/power/earlysuspend.c
@@ -23,6 +23,7 @@
 
 #include "power.h"
 
+extern void release_whole_wake_lock(void);
 enum {
        DEBUG_USER_STATE = 1U << 0,
        DEBUG_SUSPEND = 1U << 2,
@@ -103,6 +104,7 @@ static void early_suspend(struct work_struct *work)
                pr_info("early_suspend: sync\n");
 
        sys_sync();
+       release_whole_wake_lock();
  abort:
        spin_lock_irqsave(&state_lock, irqflags);
        if (state == SUSPEND_REQUESTED_AND_SUSPENDED)
diff --git a/kernel/power/userwakelock.c b/kernel/power/userwakelock.c
index 33f95d9..590eb10 100644
--- a/kernel/power/userwakelock.c
+++ b/kernel/power/userwakelock.c
@@ -147,6 +147,26 @@ ssize_t wake_lock_show(
        return s - buf;
 }
 
+
+void release_whole_wake_lock(void)
+{
+
+       struct rb_node *n;
+       struct user_wake_lock *l;
+       struct user_wake_lock *k;
+
+       mutex_lock(&tree_lock);
+
+       for (n = rb_first(&user_wake_locks); n != NULL; n = rb_next(n)) {
+               l = rb_entry(n, struct user_wake_lock, node);
+               if (wake_lock_active(&l->wake_lock)) {
+                       k = lookup_wake_lock_name(l->name, 0, NULL);
+                       wake_unlock(&k->wake_lock);
+               }
+       }
+       mutex_unlock(&tree_lock);
+}
+
 ssize_t wake_lock_store(
        struct kobject *kobj, struct kobj_attribute *attr,
        const char *buf, size_t n)

3 Likes