aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorPaul Reioux <reioux@gmail.com>2014-02-11 01:03:49 -0800
committerJohn Brewer <lycanrom@hotmail.com>2014-08-28 21:38:54 -0400
commitd56a43710ccb878b51a1a1dcc1ff0254f52ca825 (patch)
tree427eb45aca72a16ba2463025e7509c1736539d3e /drivers
parent539bc3ee1ac57cc7afa5d8296c4213ed6d8ed2af (diff)
fastcharge: initial adaptation for Moto X
Signed-off-by: Paul Reioux <reioux@gmail.com> Change-Id: I3faacfc1a069f9cc4682a10204b14bd14f588d3c
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/pm8921-charger.c36
-rw-r--r--drivers/usb/otg/msm_otg.c9
2 files changed, 45 insertions, 0 deletions
diff --git a/drivers/power/pm8921-charger.c b/drivers/power/pm8921-charger.c
index 601f6b69419..9c6e5014f85 100644
--- a/drivers/power/pm8921-charger.c
+++ b/drivers/power/pm8921-charger.c
@@ -41,6 +41,10 @@
#include <linux/emu-accy.h>
#endif
+#ifdef CONFIG_FORCE_FAST_CHARGE
+#include <linux/fastchg.h>
+#endif
+
#define CHG_BUCK_CLOCK_CTRL 0x14
#define CHG_BUCK_CLOCK_CTRL_8038 0xD
@@ -2496,7 +2500,39 @@ static void __pm8921_charger_vbus_draw(unsigned int mA)
i--;
if (i < 0)
i = 0;
+
+#ifdef CONFIG_FORCE_FAST_CHARGE
+ if (force_fast_charge == 1)
+ i = 10;
+ else if (force_fast_charge == 2) {
+ switch (fast_charge_level) {
+ case FAST_CHARGE_500:
+ i = 2;
+ break;
+ case FAST_CHARGE_700:
+ i = 4;
+ break;
+ case FAST_CHARGE_900:
+ i = 8;
+ break;
+ case FAST_CHARGE_1100:
+ i = 10;
+ break;
+ case FAST_CHARGE_1300:
+ i = 12;
+ break;
+ case FAST_CHARGE_1500:
+ i = 14;
+ break;
+ default:
+ break;
+ }
+ }
+ rc = pm_chg_iusbmax_set(the_chip, i);
+ pr_info("charge curent index => %d\n", i);
+#else
rc = pm_chg_iusbmax_set(the_chip, i);
+#endif
if (rc)
pr_err("unable to set iusb to %d rc = %d\n", i, rc);
}
diff --git a/drivers/usb/otg/msm_otg.c b/drivers/usb/otg/msm_otg.c
index 2163f50ca18..8720d455a08 100644
--- a/drivers/usb/otg/msm_otg.c
+++ b/drivers/usb/otg/msm_otg.c
@@ -53,6 +53,10 @@
#include <mach/msm_bus.h>
#include <mach/rpm-regulator.h>
+#ifdef CONFIG_FORCE_FAST_CHARGE
+#include <linux/fastchg.h>
+#endif
+
#define MSM_USB_BASE (motg->regs)
#define DRIVER_NAME "msm_otg"
@@ -1172,6 +1176,11 @@ static void msm_otg_notify_charger(struct msm_otg *motg, unsigned mA)
"Failed notifying %d charger type to PMIC\n",
motg->chg_type);
+#ifdef CONFIG_FORCE_FAST_CHARGE
+ if (force_fast_charge > 0)
+ mA = IDEV_ACA_CHG_MAX;
+#endif
+
if (motg->cur_power == mA)
return;