From 6040899acd4e773dbc61b9dbe8096e76efca459a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Pali=20Roh=C3=A1r?= Date: Thu, 14 Feb 2013 17:34:58 +0100 Subject: [PATCH] bq2415x_charger: Add support for offline and 100mA mode --- kernel-power-2.6.28/debian/changelog | 3 +- .../debian/patches/bq2415x_charger.patch | 32 ++++++++++++++------ .../debian/patches/bq2415x_rx51.patch | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/kernel-power-2.6.28/debian/changelog b/kernel-power-2.6.28/debian/changelog index 0d4f6d0..12e397e 100644 --- a/kernel-power-2.6.28/debian/changelog +++ b/kernel-power-2.6.28/debian/changelog @@ -14,8 +14,9 @@ kernel-power (1:2.6.28-10power52) fremantle; urgency=low * Optify bootimg package * Enable vlan (8021q) module * Fix reporting temperature in rx51_battery driver (driver should export temperature in 1/10 °C) + * Add support for offline mode in bq2415x_charger driver - -- Pali Rohár Fri, 18 Jan 2013 17:31:40 +0100 + -- Pali Rohár Thu, 14 Feb 2013 17:34:58 +0100 kernel-power (1:2.6.28-10power51r1) fremantle; urgency=low diff --git a/kernel-power-2.6.28/debian/patches/bq2415x_charger.patch b/kernel-power-2.6.28/debian/patches/bq2415x_charger.patch index 41d807e..5fd90ed 100644 --- a/kernel-power-2.6.28/debian/patches/bq2415x_charger.patch +++ b/kernel-power-2.6.28/debian/patches/bq2415x_charger.patch @@ -1,6 +1,6 @@ --- /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 @@ -730,12 +730,10 @@ + 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); @@ -747,6 +745,10 @@ + 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); @@ -839,7 +841,7 @@ + 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); +} + @@ -1124,6 +1126,10 @@ + 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; @@ -1170,6 +1176,9 @@ + 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; @@ -1203,6 +1212,8 @@ + 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: @@ -1513,8 +1524,8 @@ + 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; + @@ -1647,7 +1658,7 @@ +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 @@ -1720,7 +1731,8 @@ + +/* 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) */ diff --git a/kernel-power-2.6.28/debian/patches/bq2415x_rx51.patch b/kernel-power-2.6.28/debian/patches/bq2415x_rx51.patch index 5dfeda6..47c62fa 100644 --- a/kernel-power-2.6.28/debian/patches/bq2415x_rx51.patch +++ b/kernel-power-2.6.28/debian/patches/bq2415x_rx51.patch @@ -181,7 +181,7 @@ + else if (rx51_charger_connected) + mode = BQ2415X_MODE_HOST_CHARGER; /* usb charger */ + else -+ mode = BQ2415X_MODE_NONE; /* no charger */ ++ mode = BQ2415X_MODE_OFF; /* no charger */ + + if (rx51_charger_mode == mode) + return; -- 1.7.9.5