From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/24] pm2301: Update watchdog for pm2xxx support
Date: Mon, 21 Jan 2013 12:03:47 +0000 [thread overview]
Message-ID: <1358769840-4763-12-git-send-email-lee.jones@linaro.org> (raw)
In-Reply-To: <1358769840-4763-1-git-send-email-lee.jones@linaro.org>
From: Loic Pallardy <loic.pallardy@stericsson.com>
AB and PMxxx doesn't have same watchdog refresh period. Add watchdog
to refresh period parameters in x500 charger structure, this should
kick watchdog every 30sec. The AC charging should also kick both
pm2xxx and the AB charger watchdog.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
Signed-off-by: Loic Pallardy <loic.pallardy@stericsson.com>
Reviewed-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Reviewed-by: Marcus COOPER <marcus.xm.cooper@stericsson.com>
Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Tested-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Tested-by: Jonas ABERG <jonas.aberg@stericsson.com>
---
drivers/power/ab8500_charger.c | 6 ++++++
drivers/power/abx500_chargalg.c | 12 +++++++++++-
drivers/power/pm2301_charger.c | 2 ++
drivers/power/pm2301_charger.h | 2 +-
include/linux/mfd/abx500/ux500_chargalg.h | 3 +++
5 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index 4c66172..0483e7c 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -93,6 +93,8 @@
#define CHARGER_STATUS_POLL 10 /* in ms */
+#define CHG_WD_INTERVAL (60 * HZ)
+
/* UsbLineStatus register - usb types */
enum ab8500_charger_link_status {
USB_STAT_NOT_CONFIGURED,
@@ -2953,7 +2955,9 @@ static int ab8500_charger_probe(struct platform_device *pdev)
ARRAY_SIZE(ab8500_charger_voltage_map) - 1];
di->ac_chg.max_out_curr = ab8500_charger_current_map[
ARRAY_SIZE(ab8500_charger_current_map) - 1];
+ di->ac_chg.wdt_refresh = CHG_WD_INTERVAL;
di->ac_chg.enabled = di->pdata->ac_enabled;
+ di->ac_chg.external = false;
/* USB supply */
/* power_supply base class */
@@ -2972,7 +2976,9 @@ static int ab8500_charger_probe(struct platform_device *pdev)
ARRAY_SIZE(ab8500_charger_voltage_map) - 1];
di->usb_chg.max_out_curr = ab8500_charger_current_map[
ARRAY_SIZE(ab8500_charger_current_map) - 1];
+ di->usb_chg.wdt_refresh = CHG_WD_INTERVAL;
di->usb_chg.enabled = di->pdata->usb_enabled;
+ di->usb_chg.external = false;
/* Create a work queue for the charger */
di->charger_wq =
diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/abx500_chargalg.c
index f59bc02..7defb3e 100644
--- a/drivers/power/abx500_chargalg.c
+++ b/drivers/power/abx500_chargalg.c
@@ -445,8 +445,18 @@ static int abx500_chargalg_kick_watchdog(struct abx500_chargalg *di)
{
/* Check if charger exists and kick watchdog if charging */
if (di->ac_chg && di->ac_chg->ops.kick_wd &&
- di->chg_info.online_chg & AC_CHG)
+ di->chg_info.online_chg & AC_CHG) {
+ /*
+ * If AB charger watchdog expired, pm2xxx charging
+ * gets disabled. To be safe, kick both AB charger watchdog
+ * and pm2xxx watchdog.
+ */
+ if (di->ac_chg->external &&
+ di->usb_chg && di->usb_chg->ops.kick_wd)
+ di->usb_chg->ops.kick_wd(di->usb_chg);
+
return di->ac_chg->ops.kick_wd(di->ac_chg);
+ }
else if (di->usb_chg && di->usb_chg->ops.kick_wd &&
di->chg_info.online_chg & USB_CHG)
return di->usb_chg->ops.kick_wd(di->usb_chg);
diff --git a/drivers/power/pm2301_charger.c b/drivers/power/pm2301_charger.c
index 16d8cfe..0e41168 100644
--- a/drivers/power/pm2301_charger.c
+++ b/drivers/power/pm2301_charger.c
@@ -875,7 +875,9 @@ static int __devinit pm2xxx_wall_charger_probe(struct i2c_client *i2c_client,
ARRAY_SIZE(pm2xxx_charger_voltage_map) - 1];
pm2->ac_chg.max_out_curr = pm2xxx_charger_current_map[
ARRAY_SIZE(pm2xxx_charger_current_map) - 1];
+ pm2->ac_chg.wdt_refresh = WD_KICK_INTERVAL;
pm2->ac_chg.enabled = true;
+ pm2->ac_chg.external = true;
/* Create a work queue for the charger */
pm2->charger_wq =
diff --git a/drivers/power/pm2301_charger.h b/drivers/power/pm2301_charger.h
index 4bace67..5ae3573 100644
--- a/drivers/power/pm2301_charger.h
+++ b/drivers/power/pm2301_charger.h
@@ -32,7 +32,7 @@
/* Watchdog timeout constant */
#define WD_TIMER 0x30 /* 4min */
-#define WD_KICK_INTERVAL (60 * HZ)
+#define WD_KICK_INTERVAL (30 * HZ)
#define PM2XXX_NUM_INT_REG 0x6
diff --git a/include/linux/mfd/abx500/ux500_chargalg.h b/include/linux/mfd/abx500/ux500_chargalg.h
index 5b77a61..d43ac0f 100644
--- a/include/linux/mfd/abx500/ux500_chargalg.h
+++ b/include/linux/mfd/abx500/ux500_chargalg.h
@@ -28,13 +28,16 @@ struct ux500_charger_ops {
* @max_out_volt maximum output charger voltage in mV
* @max_out_curr maximum output charger current in mA
* @enabled indicates if this charger is used or not
+ * @external external charger unit (pm2xxx)
*/
struct ux500_charger {
struct power_supply psy;
struct ux500_charger_ops ops;
int max_out_volt;
int max_out_curr;
+ int wdt_refresh;
bool enabled;
+ bool external;
};
#endif
--
1.7.9.5
next prev parent reply other threads:[~2013-01-21 12:03 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-21 12:03 [PATCH 00/24] Power: Next batch of AB8500 Battery Management patches Lee Jones
2013-01-21 12:03 ` [PATCH 01/24] pm2301: Provide u9540 support for the pm2301 charger Lee Jones
2013-01-21 12:03 ` [PATCH 02/24] ab8500-charger: AB workaround for invalid charger Lee Jones
2013-01-21 12:03 ` [PATCH 03/24] ab8500-fg: Adjust for RF bursts voltage drops Lee Jones
2013-01-21 12:03 ` [PATCH 04/24] ab8500-btemp: Adaptation to AB8505 and AB9540 platforms Lee Jones
2013-01-21 12:03 ` [PATCH 05/24] ab8500-charger: Kick watchdog Lee Jones
2013-01-21 12:03 ` [PATCH 06/24] ab8500-chargalg: Update battery health on safety timer exp Lee Jones
2013-01-21 12:03 ` [PATCH 07/24] pm2301: Add deep debug Lee Jones
2013-01-21 12:03 ` [PATCH 08/24] pm2301: Clean-up PM2301 interrupt management Lee Jones
2013-01-21 12:03 ` [PATCH 09/24] pm2301: Remove volt_now & curr_now properties Lee Jones
2013-01-21 12:03 ` [PATCH 10/24] ab8500-chargalg: Only root should have write permission on sysfs file Lee Jones
2013-01-21 19:17 ` Anton Vorontsov
2013-01-21 12:03 ` Lee Jones [this message]
2013-01-21 12:03 ` [PATCH 12/24] ab8500-fg: Add test interface for u9540 Lee Jones
2013-01-21 12:03 ` [PATCH 13/24] abx500-chargalg: Add new sysfs interface to get current charge status Lee Jones
2013-01-21 12:03 ` [PATCH 14/24] ab8500-charger: Add support for autopower on AB8505 and AB9540 Lee Jones
2013-01-21 12:03 ` [PATCH 15/24] ab8500-fg: Go to INIT_RECOVERY when charger removed Lee Jones
2013-01-21 12:03 ` [PATCH 16/24] ab8500-bm: Flush all work queues before suspending Lee Jones
2013-01-21 19:14 ` Anton Vorontsov
2013-01-22 8:43 ` Lee Jones
2013-01-21 12:03 ` [PATCH 17/24] ab8500-fg-deepdebug: Create Deep Debug interface Lee Jones
2013-01-21 12:03 ` [PATCH 18/24] pm2301: Enable vbat low monitoring Lee Jones
2013-01-21 12:03 ` [PATCH 19/24] pm2301: LPN mode control support Lee Jones
2013-01-21 12:03 ` [PATCH 20/24] ab8500-fg: Use correct battery charge full design Lee Jones
2013-01-21 12:03 ` [PATCH 21/24] ab8500-charger: Do not touch VBUSOVV bits Lee Jones
2013-01-21 12:03 ` [PATCH 22/24] ab8500-bm: Remove individual [charger|btemp|fg|chargalg] pdata structures Lee Jones
2013-01-21 12:03 ` [PATCH 23/24] ab8500-bm: Fix minor niggles experienced during testing Lee Jones
2013-01-21 19:13 ` Anton Vorontsov
2013-01-22 8:44 ` Lee Jones
2013-01-22 9:27 ` Lee Jones
2013-01-23 6:25 ` Anton Vorontsov
2013-01-23 8:16 ` Lee Jones
2013-01-21 12:04 ` [PATCH 24/24] u8500-charger: Delay for USB enumeration Lee Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1358769840-4763-12-git-send-email-lee.jones@linaro.org \
--to=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).