diff mbox

[2/2] drivers:power:twl4030-charger: don't check if battery is present

Message ID 72eab67d8ae1e25803a78a4636c8da78b7a0d32f.1446138086.git.hns@goldelico.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

H. Nikolaus Schaller Oct. 29, 2015, 5:01 p.m. UTC
We can't assume that the battery is present after probing (it can
usually be removed while device is operated through external AC
or USB power). So it makes no sense to check for it during probe.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
 drivers/power/twl4030_charger.c | 7 -------
 1 file changed, 7 deletions(-)

Comments

Nishanth Menon Oct. 29, 2015, 7:50 p.m. UTC | #1
On 10/29/2015 12:01 PM, H. Nikolaus Schaller wrote:
> We can't assume that the battery is present after probing (it can
> usually be removed while device is operated through external AC
> or USB power). So it makes no sense to check for it during probe.


Do you mean hot plug battery? you sure twl4030 is capable of dealing
with that :) ? we ran into all kinds of issues with LDP3430 trying to
make that logic work, finally came to the conclusion that the TWL4030
as it stands on LDP cannot just do that.

> 
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> ---
>  drivers/power/twl4030_charger.c | 7 -------
>  1 file changed, 7 deletions(-)
> 
> diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c
> index 859991f..e232453 100644
> --- a/drivers/power/twl4030_charger.c
> +++ b/drivers/power/twl4030_charger.c
> @@ -1008,13 +1008,6 @@ static int twl4030_bci_probe(struct platform_device *pdev)
>  	bci->irq_chg = platform_get_irq(pdev, 0);
>  	bci->irq_bci = platform_get_irq(pdev, 1);
>  
> -	/* Only proceed further *IF* battery is physically present */
> -	ret = twl4030_is_battery_present(bci);
> -	if  (ret) {
> -		dev_crit(&pdev->dev, "Battery was not detected:%d\n", ret);
> -		return ret;
> -	}
> -
>  	platform_set_drvdata(pdev, bci);
>  
>  	bci->ac = devm_power_supply_register(&pdev->dev, &twl4030_bci_ac_desc,
>
H. Nikolaus Schaller Oct. 30, 2015, 6:14 a.m. UTC | #2
Am 29.10.2015 um 20:50 schrieb Nishanth Menon <nm@ti.com>:

> On 10/29/2015 12:01 PM, H. Nikolaus Schaller wrote:
>> We can't assume that the battery is present after probing (it can
>> usually be removed while device is operated through external AC
>> or USB power). So it makes no sense to check for it during probe.
> 
> 
> Do you mean hot plug battery?

Yes.

> you sure twl4030 is capable of dealing
> with that :) ?

I am not sure about the twl4030 but with the tps65950 used in the GTA04,
it worked always in the past years with the old drivers (before 4.3-rc1 because
we have not tested the new ones well enough).

> we ran into all kinds of issues with LDP3430 trying to
> make that logic work, finally came to the conclusion that the TWL4030
> as it stands on LDP cannot just do that.

One issue is of course that AC or USB must provide enough current to
operate the board stand-alone. I.e. charging with high enough max_current
must be enabled.

A typical scenario I was using is to enable e.g. 800 mA max_current for
USB, connect the device to some laptop or USB wall charger and then
replace the battery.

This works with full and empty replacement batteries. Well, it should not
be too empty so that the inrush-current is not too much for the USB supply.

What we can't do is to boot from power-off without battery. In that case
the BCI isn't enabled for high enough current to operate the OMAP. But
as soon as the BCI enables enough current, it worked.

My main observation is that you can't make sure by software that the
user is not trying to hot-swap the battery. I.e. it can still happen after
probe time. This is why I think this check doesn't solve a problem.

So if there are problems with battery removed, we must find a solution
in the driver to handle that situation. And not only check once at boot time.

BR,
NIkolaus Schaller

> 
>> 
>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>> ---
>> drivers/power/twl4030_charger.c | 7 -------
>> 1 file changed, 7 deletions(-)
>> 
>> diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c
>> index 859991f..e232453 100644
>> --- a/drivers/power/twl4030_charger.c
>> +++ b/drivers/power/twl4030_charger.c
>> @@ -1008,13 +1008,6 @@ static int twl4030_bci_probe(struct platform_device *pdev)
>> 	bci->irq_chg = platform_get_irq(pdev, 0);
>> 	bci->irq_bci = platform_get_irq(pdev, 1);
>> 
>> -	/* Only proceed further *IF* battery is physically present */
>> -	ret = twl4030_is_battery_present(bci);
>> -	if  (ret) {
>> -		dev_crit(&pdev->dev, "Battery was not detected:%d\n", ret);
>> -		return ret;
>> -	}
>> -
>> 	platform_set_drvdata(pdev, bci);
>> 
>> 	bci->ac = devm_power_supply_register(&pdev->dev, &twl4030_bci_ac_desc,
>> 
> 
> 
> -- 
> Regards,
> Nishanth Menon

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c
index 859991f..e232453 100644
--- a/drivers/power/twl4030_charger.c
+++ b/drivers/power/twl4030_charger.c
@@ -1008,13 +1008,6 @@  static int twl4030_bci_probe(struct platform_device *pdev)
 	bci->irq_chg = platform_get_irq(pdev, 0);
 	bci->irq_bci = platform_get_irq(pdev, 1);
 
-	/* Only proceed further *IF* battery is physically present */
-	ret = twl4030_is_battery_present(bci);
-	if  (ret) {
-		dev_crit(&pdev->dev, "Battery was not detected:%d\n", ret);
-		return ret;
-	}
-
 	platform_set_drvdata(pdev, bci);
 
 	bci->ac = devm_power_supply_register(&pdev->dev, &twl4030_bci_ac_desc,