--- /dev/null
+++ kernel-power/drivers/power/bq2415x_charger.c
-@@ -0,0 +1,1644 @@
+@@ -0,0 +1,1655 @@
+/*
+ bq2415x_charger.c - bq2415x charger driver
+ Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com>
+ int charger = 0;
+ int boost = 0;
+
-+ if (mode == BQ2415X_MODE_HOST_CHARGER ||
-+ mode == BQ2415X_MODE_DEDICATED_CHARGER)
-+ charger = 1;
-+
+ if (mode == BQ2415X_MODE_BOOST)
+ boost = 1;
++ else if (mode != BQ2415X_MODE_OFF)
++ charger = 1;
+
+ if (!charger)
+ ret = bq2415x_exec_command(bq, BQ2415X_CHARGER_DISABLE);
+ return ret;
+
+ switch (mode) {
++ case BQ2415X_MODE_OFF:
++ dev_dbg(bq->dev, "changing mode to: Offline\n");
++ ret = bq2415x_set_current_limit(bq, 100);
++ break;
+ case BQ2415X_MODE_NONE:
+ dev_dbg(bq->dev, "changing mode to: N/A\n");
+ ret = bq2415x_set_current_limit(bq, 100);
+ dev_err(bq->dev, "%s\n", msg);
+ if (bq->automode > 0)
+ bq->automode = 0;
-+ bq2415x_set_mode(bq, BQ2415X_MODE_NONE);
++ bq2415x_set_mode(bq, BQ2415X_MODE_OFF);
+ bq2415x_set_autotimer(bq, 0);
+}
+
+ return -ENOSYS;
+ bq->automode = 1;
+ mode = bq->reported_mode;
++ } else if (strncmp(buf, "off", 3) == 0) {
++ if (bq->automode > 0)
++ bq->automode = 0;
++ mode = BQ2415X_MODE_OFF;
+ } else if (strncmp(buf, "none", 4) == 0) {
+ if (bq->automode > 0)
+ bq->automode = 0;
+ ret += sprintf(buf+ret, "auto (");
+
+ switch (bq->mode) {
++ case BQ2415X_MODE_OFF:
++ ret += sprintf(buf+ret, "off");
++ break;
+ case BQ2415X_MODE_NONE:
+ ret += sprintf(buf+ret, "none");
+ break;
+ return -EINVAL;
+
+ switch (bq->reported_mode) {
++ case BQ2415X_MODE_OFF:
++ return sprintf(buf, "off\n");
+ case BQ2415X_MODE_NONE:
+ return sprintf(buf, "none\n");
+ case BQ2415X_MODE_HOST_CHARGER:
+ bq->dev = &client->dev;
+ bq->chip = id->driver_data;
+ bq->name = name;
-+ bq->mode = BQ2415X_MODE_NONE;
-+ bq->reported_mode = BQ2415X_MODE_NONE;
++ bq->mode = BQ2415X_MODE_OFF;
++ bq->reported_mode = BQ2415X_MODE_OFF;
+ bq->autotimer = 0;
+ bq->automode = 0;
+
+MODULE_LICENSE("GPL");
--- /dev/null
+++ kernel-power/include/linux/power/bq2415x_charger.h
-@@ -0,0 +1,90 @@
+@@ -0,0 +1,91 @@
+/*
+ bq2415x_charger.h - bq2415x charger driver
+ Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com>
+
+/* Supported modes with maximal current limit */
+enum bq2415x_mode {
-+ BQ2415X_MODE_NONE, /* unknown or no charger (100mA) */
++ BQ2415X_MODE_OFF, /* offline mode (charger disabled) */
++ BQ2415X_MODE_NONE, /* unknown charger (100mA) */
+ BQ2415X_MODE_HOST_CHARGER, /* usb host/hub charger (500mA) */
+ BQ2415X_MODE_DEDICATED_CHARGER, /* dedicated charger (unlimited) */
+ BQ2415X_MODE_BOOST, /* boost mode (charging disabled) */