|
@@ -598,6 +598,14 @@ static int bq27x00_powersupply_init(struct bq27x00_device_info *di)
|
|
|
|
|
|
static void bq27x00_powersupply_unregister(struct bq27x00_device_info *di)
|
|
|
{
|
|
|
+ /*
|
|
|
+ * power_supply_unregister call bq27x00_battery_get_property which
|
|
|
+ * call bq27x00_battery_poll.
|
|
|
+ * Make sure that bq27x00_battery_poll will not call
|
|
|
+ * schedule_delayed_work again after unregister (which cause OOPS).
|
|
|
+ */
|
|
|
+ poll_interval = 0;
|
|
|
+
|
|
|
cancel_delayed_work_sync(&di->work);
|
|
|
|
|
|
power_supply_unregister(&di->bat);
|