aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd
diff options
context:
space:
mode:
authorLee Jones <lee.jones@linaro.org>2013-02-14 07:39:15 -0500
committerLee Jones <lee.jones@linaro.org>2013-03-06 23:35:46 -0500
commitdb43e6c473b57d4e7a55c4bd6edef71f40f13eae (patch)
tree0fbe4762c914ba15898cf8bcb9bd8e531fe8fc31 /include/linux/mfd
parent405fea1c6691eb8259f2ca879c9348a4cf5d898d (diff)
ab8500-bm: Add usb power path support
AB8540 supports power path function in USB charging mode for fast power up with dead and weak battery, and it could extend the battery age. When USB charging starts, if the Vbattrue is below than SW cut off voltage, power path and pre-charge should be enabled. If Vbattrue is higher than SW cut off voltage, power path and pre-charge should be disabled. This is to make sure full current to battery charge. At the end of charge, power path should be enable again to reduce charging the battery again. Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'include/linux/mfd')
-rw-r--r--include/linux/mfd/abx500.h1
-rw-r--r--include/linux/mfd/abx500/ab8500-bm.h12
-rw-r--r--include/linux/mfd/abx500/ux500_chargalg.h4
3 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
index 188aedc322c2..cd71d8eadf50 100644
--- a/include/linux/mfd/abx500.h
+++ b/include/linux/mfd/abx500.h
@@ -267,6 +267,7 @@ struct abx500_bm_data {
267 bool autopower_cfg; 267 bool autopower_cfg;
268 bool ac_enabled; 268 bool ac_enabled;
269 bool usb_enabled; 269 bool usb_enabled;
270 bool usb_power_path;
270 bool no_maintenance; 271 bool no_maintenance;
271 bool capacity_scaling; 272 bool capacity_scaling;
272 bool chg_unknown_bat; 273 bool chg_unknown_bat;
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h
index a73e05a0441b..0ebf0c5d1f88 100644
--- a/include/linux/mfd/abx500/ab8500-bm.h
+++ b/include/linux/mfd/abx500/ab8500-bm.h
@@ -69,6 +69,8 @@
69#define AB8500_USBCH_CTRL1_REG 0xC0 69#define AB8500_USBCH_CTRL1_REG 0xC0
70#define AB8500_USBCH_CTRL2_REG 0xC1 70#define AB8500_USBCH_CTRL2_REG 0xC1
71#define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2 71#define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2
72#define AB8540_USB_PP_MODE_REG 0xC5
73#define AB8540_USB_PP_CHR_REG 0xC6
72 74
73/* 75/*
74 * Gas Gauge register offsets 76 * Gas Gauge register offsets
@@ -259,6 +261,16 @@ enum bup_vch_sel {
259#define AB8505_RTC_PCUT_RESTART_REG 0x16 261#define AB8505_RTC_PCUT_RESTART_REG 0x16
260#define AB8505_RTC_PCUT_DEBOUNCE_REG 0x17 262#define AB8505_RTC_PCUT_DEBOUNCE_REG 0x17
261 263
264/* USB Power Path constants for ab8540 */
265#define BUS_VSYS_VOL_SELECT_MASK 0x06
266#define BUS_VSYS_VOL_SELECT_3P6V 0x00
267#define BUS_VSYS_VOL_SELECT_3P325V 0x02
268#define BUS_VSYS_VOL_SELECT_3P9V 0x04
269#define BUS_VSYS_VOL_SELECT_4P3V 0x06
270#define BUS_POWER_PATH_MODE_ENA 0x01
271#define BUS_PP_PRECHG_CURRENT_MASK 0x0E
272#define BUS_POWER_PATH_PRECHG_ENA 0x01
273
262/** 274/**
263 * struct res_to_temp - defines one point in a temp to res curve. To 275 * struct res_to_temp - defines one point in a temp to res curve. To
264 * be used in battery packs that combines the identification resistor with a 276 * be used in battery packs that combines the identification resistor with a
diff --git a/include/linux/mfd/abx500/ux500_chargalg.h b/include/linux/mfd/abx500/ux500_chargalg.h
index fa831f1e8cf8..234c99143bf7 100644
--- a/include/linux/mfd/abx500/ux500_chargalg.h
+++ b/include/linux/mfd/abx500/ux500_chargalg.h
@@ -20,6 +20,8 @@ struct ux500_charger_ops {
20 int (*check_enable) (struct ux500_charger *, int, int); 20 int (*check_enable) (struct ux500_charger *, int, int);
21 int (*kick_wd) (struct ux500_charger *); 21 int (*kick_wd) (struct ux500_charger *);
22 int (*update_curr) (struct ux500_charger *, int); 22 int (*update_curr) (struct ux500_charger *, int);
23 int (*pp_enable) (struct ux500_charger *, bool);
24 int (*pre_chg_enable) (struct ux500_charger *, bool);
23}; 25};
24 26
25/** 27/**
@@ -30,6 +32,7 @@ struct ux500_charger_ops {
30 * @max_out_curr maximum output charger current in mA 32 * @max_out_curr maximum output charger current in mA
31 * @enabled indicates if this charger is used or not 33 * @enabled indicates if this charger is used or not
32 * @external external charger unit (pm2xxx) 34 * @external external charger unit (pm2xxx)
35 * @power_path USB power path support
33 */ 36 */
34struct ux500_charger { 37struct ux500_charger {
35 struct power_supply psy; 38 struct power_supply psy;
@@ -39,6 +42,7 @@ struct ux500_charger {
39 int wdt_refresh; 42 int wdt_refresh;
40 bool enabled; 43 bool enabled;
41 bool external; 44 bool external;
45 bool power_path;
42}; 46};
43 47
44extern struct blocking_notifier_head charger_notifier_list; 48extern struct blocking_notifier_head charger_notifier_list;