From: Andreas Dannenberg <dannenberg-l0cyMroinI0@public.gmane.org>
To: Sebastian Reichel <sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Dmitry Eremin-Solenikov
<dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
David Woodhouse <dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Laurentiu Palcu
<laurentiu.palcu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Krzysztof Kozlowski
<k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Cc: Ramakrishna Pallala
<ramakrishna.pallala-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Andreas Dannenberg <dannenberg-l0cyMroinI0@public.gmane.org>
Subject: [PATCH v7 03/15] power: bq24257: Streamline input current limit setup
Date: Fri, 25 Sep 2015 10:54:08 -0500 [thread overview]
Message-ID: <1443196460-26156-4-git-send-email-dannenberg@ti.com> (raw)
In-Reply-To: <1443196460-26156-1-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
The maximum amount of input current the charger should draw is dependent
on the power supply and should only be (re-)configured when the power
supply gets connected and disconnected. However the driver was also
lowering the bq24257's input current limit setting to 500mA when the
battery was removed and restored the previous setting according to the
power supply capabilities when the battery was reconnected although
these events are not impacting the amount of power that can be drawn
from the supply. Furthermore, a re-configuration of the input current
limit to 500mA when the battery gets disconnected is actually dangerous
if the limit was set higher previously and the system draws more than
500mA in which case the system voltage would be reduced in order to
maintain 500mA which could result in the system getting too low of a
supply to maintain operation. Last but not least the mechanism itself
used for battery re-connection detection did not work in corner cases
such as when the device's input current loop becomes active and the
bq24257 device clears its battery fault error resulting in incorrectly
reporting that the battery got reconnected.
This patches removes the impact the battery removal/insertion has on the
input current limit configured for the bq24257 and simplifies the
associated handler routine.
Signed-off-by: Andreas Dannenberg <dannenberg-l0cyMroinI0@public.gmane.org>
---
drivers/power/bq24257_charger.c | 29 +++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)
diff --git a/drivers/power/bq24257_charger.c b/drivers/power/bq24257_charger.c
index 69b53d0..d2d077c 100644
--- a/drivers/power/bq24257_charger.c
+++ b/drivers/power/bq24257_charger.c
@@ -448,14 +448,13 @@ static void bq24257_handle_state_change(struct bq24257_device *bq,
{
int ret;
struct bq24257_state old_state;
- bool reset_iilimit = false;
- bool config_iilimit = false;
mutex_lock(&bq->lock);
old_state = bq->state;
mutex_unlock(&bq->lock);
- if (!new_state->power_good) { /* power removed */
+ if (!new_state->power_good) {
+ dev_dbg(bq->dev, "Power removed\n");
cancel_delayed_work_sync(&bq->iilimit_setup_work);
/* activate D+/D- port detection algorithm */
@@ -463,26 +462,20 @@ static void bq24257_handle_state_change(struct bq24257_device *bq,
if (ret < 0)
goto error;
- reset_iilimit = true;
- } else if (!old_state.power_good) { /* power inserted */
- config_iilimit = true;
- } else if (new_state->fault == FAULT_NO_BAT) { /* battery removed */
- cancel_delayed_work_sync(&bq->iilimit_setup_work);
-
- reset_iilimit = true;
- } else if (old_state.fault == FAULT_NO_BAT) { /* battery connected */
- config_iilimit = true;
- } else if (new_state->fault == FAULT_TIMER) { /* safety timer expired */
- dev_err(bq->dev, "Safety timer expired! Battery dead?\n");
- }
-
- if (reset_iilimit) {
+ /* reset input current limit */
ret = bq24257_field_write(bq, F_IILIMIT, IILIMIT_500);
if (ret < 0)
goto error;
- } else if (config_iilimit) {
+ } else if (!old_state.power_good) {
+ dev_dbg(bq->dev, "Power inserted\n");
+
+ /* configure input current limit */
schedule_delayed_work(&bq->iilimit_setup_work,
msecs_to_jiffies(BQ24257_ILIM_SET_DELAY));
+ } else if (new_state->fault == FAULT_NO_BAT) {
+ dev_warn(bq->dev, "Battery removed\n");
+ } else if (new_state->fault == FAULT_TIMER) {
+ dev_err(bq->dev, "Safety timer expired! Battery dead?\n");
}
return;
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-09-25 15:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-25 15:54 [PATCH v7 00/15] power: bq24257: Add support for bq24250/bq24251 Andreas Dannenberg
[not found] ` <1443196460-26156-1-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-25 15:54 ` [PATCH v7 01/15] dt: power: bq24257-charger: Cover additional devices Andreas Dannenberg
[not found] ` <1443196460-26156-2-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 12:16 ` Krzysztof Kozlowski
2015-09-28 18:16 ` Sebastian Reichel
2015-09-25 15:54 ` [PATCH v7 02/15] power: bq24257: Remove IRQ config through stat-gpios Andreas Dannenberg
[not found] ` <1443196460-26156-3-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 16:38 ` Sebastian Reichel
2015-09-25 15:54 ` Andreas Dannenberg [this message]
[not found] ` <1443196460-26156-4-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 16:53 ` [PATCH v7 03/15] power: bq24257: Streamline input current limit setup Sebastian Reichel
2015-09-25 15:54 ` [PATCH v7 04/15] power: bq24257: Use managed power supply register Andreas Dannenberg
[not found] ` <1443196460-26156-5-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 13:10 ` Krzysztof Kozlowski
2015-09-28 17:22 ` Sebastian Reichel
2015-09-25 15:54 ` [PATCH v7 05/15] power: bq24257: Simplify bq24257_power_supply_init() Andreas Dannenberg
[not found] ` <1443196460-26156-6-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 13:10 ` Krzysztof Kozlowski
2015-09-25 15:54 ` [PATCH v7 08/15] power: bq24257: Allow manual setting of input current limit Andreas Dannenberg
2015-09-29 6:02 ` Krzysztof Kozlowski
2015-09-25 15:54 ` [PATCH v7 09/15] power: bq24257: Add SW-based approach for Power Good determination Andreas Dannenberg
[not found] ` <1443196460-26156-10-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-27 20:20 ` Sebastian Reichel
2015-09-28 12:04 ` Andreas Dannenberg
2015-09-28 15:49 ` Andreas Dannenberg
2015-09-28 16:02 ` Sebastian Reichel
2015-09-25 15:54 ` [PATCH v7 10/15] power: bq24257: Add over voltage protection setting support Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 11/15] power: bq24257: Add input DPM voltage threshold " Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 12/15] power: bq24257: Allow input current limit sysfs access Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 13/15] power: bq24257: Add various device-specific sysfs properties Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 14/15] power: bq24257: Add platform data based initialization Andreas Dannenberg
[not found] ` <1443196460-26156-15-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 17:58 ` Sebastian Reichel
2015-09-28 22:50 ` Andreas Dannenberg
2015-09-28 18:19 ` [PATCH v7 00/15] power: bq24257: Add support for bq24250/bq24251 Sebastian Reichel
2015-09-25 15:54 ` [PATCH v7 06/15] power: bq24257: Add basic " Andreas Dannenberg
[not found] ` <1443196460-26156-7-git-send-email-dannenberg-l0cyMroinI0@public.gmane.org>
2015-09-28 13:14 ` Krzysztof Kozlowski
2015-09-28 13:38 ` Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 07/15] power: bq24257: Add bit definition for temp sense enable Andreas Dannenberg
2015-09-25 15:54 ` [PATCH v7 15/15] Documentation: power: bq24257: Document exported sysfs entries Andreas Dannenberg
2015-09-28 12:14 ` [PATCH v7 00/15] power: bq24257: Add support for bq24250/bq24251 Krzysztof Kozlowski
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=1443196460-26156-4-git-send-email-dannenberg@ti.com \
--to=dannenberg-l0cymroini0@public.gmane.org \
--cc=dbaryshkov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=laurentiu.palcu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ramakrishna.pallala-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=sre-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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).