diff --git a/Android.mk b/Android.mk
index 770f0b8..8004fc3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,7 +14,6 @@
 	Loop.cpp \
 	Devmapper.cpp \
 	ResponseCode.cpp \
-	CheckBattery.cpp \
 	Ext4Crypt.cpp \
 	VoldUtil.c \
 	cryptfs.cpp \
diff --git a/CheckBattery.cpp b/CheckBattery.cpp
deleted file mode 100644
index 27b3b0b..0000000
--- a/CheckBattery.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "VoldCheckBattery"
-#include <cutils/log.h>
-
-extern "C"
-{
-    int is_battery_ok_to_start()
-    {
-      // Bug 16868177 exists to purge this code completely
-      return true; //is_battery_ok(START_THRESHOLD);
-    }
-
-    int is_battery_ok_to_continue()
-    {
-      // Bug 16868177 exists to purge this code completely
-      return true; //is_battery_ok(CONTINUE_THRESHOLD);
-    }
-}
diff --git a/CheckBattery.h b/CheckBattery.h
deleted file mode 100644
index dd11ba9..0000000
--- a/CheckBattery.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _CHECKBATTERY_H__
-#define _CHECKBATTERY_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int is_battery_ok_to_start();
-int is_battery_ok_to_continue();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/EncryptInplace.cpp b/EncryptInplace.cpp
index 9aa2a21..6ef1cb0 100644
--- a/EncryptInplace.cpp
+++ b/EncryptInplace.cpp
@@ -33,7 +33,6 @@
 #include "cutils/properties.h"
 #define LOG_TAG "EncryptInplace"
 #include "cutils/log.h"
-#include "CheckBattery.h"
 
 // HORRIBLE HACK, FIXME
 #include "cryptfs.h"
@@ -245,13 +244,6 @@
                     goto errout;
                 }
             }
-
-            if (!is_battery_ok_to_continue()) {
-                SLOGE("Stopping encryption due to low battery");
-                rc = 0;
-                goto errout;
-            }
-
         }
         if (flush_outstanding_data(data)) {
             goto errout;
@@ -574,13 +566,6 @@
                   CRYPT_SECTORS_PER_BUFSIZE,
                   i * CRYPT_SECTORS_PER_BUFSIZE);
         }
-
-       if (!is_battery_ok_to_continue()) {
-            SLOGE("Stopping encryption due to low battery");
-            *size_already_done += (i + 1) * CRYPT_SECTORS_PER_BUFSIZE - 1;
-            rc = 0;
-            goto errout;
-        }
     }
 
     /* Do any remaining sectors */
diff --git a/cryptfs.cpp b/cryptfs.cpp
index 8d70fb2..fe4e648 100644
--- a/cryptfs.cpp
+++ b/cryptfs.cpp
@@ -58,7 +58,6 @@
 #include "VoldUtil.h"
 #include "Ext4Crypt.h"
 #include "f2fs_sparseblock.h"
-#include "CheckBattery.h"
 #include "EncryptInplace.h"
 #include "Process.h"
 #include "Keymaster.h"
@@ -2029,11 +2028,6 @@
     off64_t cur_encryption_done=0, tot_encryption_size=0;
     int rc = -1;
 
-    if (!is_battery_ok_to_start()) {
-        SLOGW("Not starting encryption due to low battery");
-        return 0;
-    }
-
     /* The size of the userdata partition, and add in the vold volumes below */
     tot_encryption_size = crypt_ftr->fs_size;
 
