}
 #endif
 
-int power_supply_register(struct device *parent, struct power_supply *psy)
+int __power_supply_register(struct device *parent, struct power_supply *psy, bool ws)
 {
        struct device *dev;
        int rc;
        }
 
        spin_lock_init(&psy->changed_lock);
-       rc = device_init_wakeup(dev, true);
+       rc = device_init_wakeup(dev, ws);
        if (rc)
                goto wakeup_init_failed;
 
 success:
        return rc;
 }
+
+int power_supply_register(struct device *parent, struct power_supply *psy)
+{
+       return __power_supply_register(parent, psy, true);
+}
 EXPORT_SYMBOL_GPL(power_supply_register);
 
+int power_supply_register_no_ws(struct device *parent, struct power_supply *psy)
+{
+       return __power_supply_register(parent, psy, false);
+}
+EXPORT_SYMBOL_GPL(power_supply_register_no_ws);
+
 void power_supply_unregister(struct power_supply *psy)
 {
        cancel_work_sync(&psy->changed_work);
 
 
 extern int power_supply_register(struct device *parent,
                                 struct power_supply *psy);
+extern int power_supply_register_no_ws(struct device *parent,
+                                struct power_supply *psy);
 extern void power_supply_unregister(struct power_supply *psy);
 extern int power_supply_powers(struct power_supply *psy, struct device *dev);