[Letux-kernel] [PATCH resend v2] power: supply: bq27xxx: enable writing capacity values for bq27421

H. Nikolaus Schaller hns at goldelico.com
Fri Sep 8 22:28:45 CEST 2017


Hi Liam,

> Am 08.09.2017 um 22:19 schrieb Liam Breck <liam at networkimprov.net>:
> 
> Hi Nikolaus,
> 
> On Fri, Sep 8, 2017 at 10:38 AM, H. Nikolaus Schaller <hns at goldelico.com> wrote:
>> Hi Liam,
>> I finally continues testing on OpenPandora.
>> 
>>> Am 31.08.2017 um 22:19 schrieb Liam Breck <liam at networkimprov.net>:
>>> 
>>> Hi,
>>> 
>>> This may be a fix that allows >0 input from DT, but won't try to
>>> program the register since the first 3 fields aren't compatible:
>>> 
>>> ... bq27500_dm_regs[] = {
>>> ...
>>> [bq27xxx_dm_design_energy] = {  0,  0, 0,    0, 65535 }, /* missing on chip */
>>> NB: align columns with other rows
>> 
>> I have tried with this DT
>> 
>>        bat: battery {
>>                compatible = "simple-battery", "openpandora-battery";
>>                voltage-min-design-microvolt = <3250000>;
>>                energy-full-design-microwatt-hours = <14800000>;
>>                charge-full-design-microamp-hours = <4100000>;
>>        };
>> 
>> and here is the result:
>> 
>>> root at letux:~# dmesg|fgrep bq27
>>> [   10.391235] bq27xxx_battery_setup
>>> [   10.391265] bq27xxx_battery_setup: dm_regs=bf0520e0
>>> [   10.393798] (NULL device *): hwmon: 'bq27500-1-0' is not a valid name attribute, please fix
>>> [   10.432678] bq27xxx_battery_settings
>>> [   10.432952] bq27xxx_battery_set_config
>>> [   10.432952] bq27xxx_battery_unseal
>>> [   10.485168] bq27xxx_battery_update_dm_block
>>> [   10.485198] bq27xxx-battery 2-0055: update design-capacity to 4100
>> 
>> looks good
>> 
>>> [   10.485229] bq27xxx_battery_update_dm_block
>>> [   10.485229] bq27xxx-battery 2-0055: buffer does not match design-energy dm spec
>> 
>> ok, ignored
>> 
>>> [   10.511718] bq27xxx_battery_update_dm_block
>>> [   10.511749] bq27xxx-battery 2-0055: update terminate-voltage to 3250
>> 
>> looks good
>> 
>>> [   10.826446] bq27xxx_battery_seal
>>> [   12.150939] bq27xxx_battery_platform_probe
>>> [   12.151031] bq27xxx_battery_setup
>>> [   12.151062] bq27xxx_battery_setup: dm_regs=  (null)
>>> [   12.153411] (NULL device *): hwmon: 'bq27000-battery' is not a valid name attribute, please fix
>>> [   12.154327] bq27xxx_battery_settings
>>> [   12.154357] power_supply bq27000-battery: power_supply_get_battery_info currently only supports devicetree
>>> [   12.154388] bq27xxx_battery_settings: power_supply_get_battery_info failed ret=-6
> 
> Is there also a bq27000 chip on this device, or a battery with it
> embedded? If so, it doesn't appear to have a DT node (correct for
> embedded), hence that warning, which isn't useful in that case. Prob
> battery_settings() should do:
>    if (!di->dev->of_node || power_supply_get_battery_info(...) < 0) return;
> altho that would be wrong once get_battery_info() supports ACPI config...

No it is not available, but could be. The bq27000 can be connected through
HDQ to an OMAP3 and therefore there is no auto-detection. If it is configured
the driver will be loaded. Even if there is no battery_info.

In fact we use the same defconfig for several devices and there is one (GTA04)
which only has a bq27000 inside the battery.

> 
>> ... login:
>> 
>>> root at letux:~# cat /sys/class/power_supply/bq27500-1-0/uevent
>>> POWER_SUPPLY_NAME=bq27500-1-0
>>> POWER_SUPPLY_STATUS=Discharging
>>> POWER_SUPPLY_PRESENT=1
>>> POWER_SUPPLY_VOLTAGE_NOW=3892000
>>> POWER_SUPPLY_CURRENT_NOW=-317000
>>> POWER_SUPPLY_CAPACITY=0
>> 
>> oops.
>> 
>>> POWER_SUPPLY_CAPACITY_LEVEL=Low
>>> POWER_SUPPLY_TEMP=223
>>> POWER_SUPPLY_TIME_TO_EMPTY_NOW=0
>>> POWER_SUPPLY_TECHNOLOGY=Li-ion
>>> POWER_SUPPLY_CHARGE_FULL=1147000
>>> POWER_SUPPLY_CHARGE_NOW=2665000
>>> POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
>>> POWER_SUPPLY_CYCLE_COUNT=6
>>> POWER_SUPPLY_ENERGY_NOW=0
>>> POWER_SUPPLY_POWER_AVG=64395
>>> POWER_SUPPLY_HEALTH=Dead
>> 
>> oops. But maybe the bq27500 needs a full cycle first
> 
> I wouldn't guess that the above state is due to the DM update
> sequence, but I suppose that's possible. Another update pass might
> clarify that.

Ok, will do tomorrow.

> 
>>> POWER_SUPPLY_MANUFACTURER=Texas Instruments
>> 
>> vvv after plugging in charger
>> 
>>> root at letux:~# cat /sys/class/power_supply/bq27500-1-0/uevent
>>> POWER_SUPPLY_NAME=bq27500-1-0
>>> POWER_SUPPLY_STATUS=Charging
>>> POWER_SUPPLY_PRESENT=1
>>> POWER_SUPPLY_VOLTAGE_NOW=3923000
>>> POWER_SUPPLY_CURRENT_NOW=204000
>>> POWER_SUPPLY_CAPACITY=0
>>> POWER_SUPPLY_CAPACITY_LEVEL=Low
>>> POWER_SUPPLY_TEMP=249
>>> POWER_SUPPLY_TIME_TO_EMPTY_NOW=0
>>> POWER_SUPPLY_TECHNOLOGY=Li-ion
>>> POWER_SUPPLY_CHARGE_FULL=1147000
>>> POWER_SUPPLY_CHARGE_NOW=2665000
>>> POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
>>> POWER_SUPPLY_CYCLE_COUNT=6
>>> POWER_SUPPLY_ENERGY_NOW=0
>>> POWER_SUPPLY_POWER_AVG=800
>>> POWER_SUPPLY_HEALTH=Dead
>>> POWER_SUPPLY_MANUFACTURER=Texas Instruments
>>> root at letux:~#
>> 
>> Now a reboot after removing charger and battery for several minutes:
>> 
>>> root at letux:~# dmesg|fgrep bq27
>>> [   10.482818] bq27xxx_battery_setup
>>> [   12.179687] bq27xxx_battery_platform_probe
>>> [   12.179779] bq27xxx_battery_setup
>>> [   12.179809] bq27xxx_battery_setup: dm_regs=  (null)
>>> [   12.182495] (NULL device *): hwmon: 'bq27000-battery' is not a valid name attribute, please fix
>>> [   12.183502] bq27xxx_battery_settings
>>> [   12.183532] power_supply bq27000-battery: power_supply_get_battery_info currently only supports devicetree
>>> [   12.183563] bq27xxx_battery_settings: power_supply_get_battery_info failed ret=-6
>>> [   15.145812] bq27xxx_battery_setup: dm_regs=bf0520e0
>>> [   15.152618] (NULL device *): hwmon: 'bq27500-1-0' is not a valid name attribute, please fix
>>> [   15.346557] bq27xxx_battery_settings
>>> [   15.350585] bq27xxx_battery_set_config
>>> [   15.354553] bq27xxx_battery_unseal
>>> [   15.576538] bq27xxx_battery_update_dm_block
>>> [   15.580993] bq27xxx-battery 2-0055: design-capacity has 4100
>> 
>> ^^^ ok, no change needed
>> 
>>> [   15.676818] bq27xxx_battery_update_dm_block
>>> [   15.681243] bq27xxx-battery 2-0055: buffer does not match design-energy dm spec
>>> [   15.798675] bq27xxx_battery_update_dm_block
>>> [   15.803100] bq27xxx-battery 2-0055: update terminate-voltage to 3250
>> 
>> ^^^ looks as if this is not stored in NVM. Should it be?
> 
> Oh dear. I imagine this is due to a flaw in the multi-block DM update
> logic. It could be that one of the pauses between calls should be
> longer The terminate-voltage spec comes from this datasheet:
> page 19, http://www.ti.com/lit/ds/symlink/bq27500.pdf
> 
> It's possible that this second pass did update it. What does the next
> reboot show?

Will boot tomorrow with exactly the same system and report.

> 
>> BTW: it would be nice if all "update" messages could tell the old value as well.
> 
> We have the orig values in memory since we read the block before
> updating. Feel free to patch that in :-)

Ok.

> 
>>> [   16.011169] bq27xxx_battery_seal
>>> root at letux:~# cat /sys/class/power_supply/bq27500-1-0/uevent
>>> POWER_SUPPLY_NAME=bq27500-1-0
>>> POWER_SUPPLY_STATUS=Discharging
>>> POWER_SUPPLY_PRESENT=1
>>> POWER_SUPPLY_VOLTAGE_NOW=3894000
>>> POWER_SUPPLY_CURRENT_NOW=-291000
>>> POWER_SUPPLY_CAPACITY=71
>> 
>> ^^^ looks as if the bq27500 did recover from reprogramming
>> 
>>> POWER_SUPPLY_CAPACITY_LEVEL=Normal
>>> POWER_SUPPLY_TEMP=223
>>> POWER_SUPPLY_TIME_TO_EMPTY_NOW=31200
>>> POWER_SUPPLY_TECHNOLOGY=Li-ion
>>> POWER_SUPPLY_CHARGE_FULL=3748000
>>> POWER_SUPPLY_CHARGE_NOW=2713000
>>> POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
>>> POWER_SUPPLY_CYCLE_COUNT=6
>>> POWER_SUPPLY_ENERGY_NOW=9930000
>>> POWER_SUPPLY_POWER_AVG=64407
>>> POWER_SUPPLY_HEALTH=Good
>> 
>> ^^^ same here
>> 
>>> POWER_SUPPLY_MANUFACTURER=Texas Instruments
>>> root at letux:~#
> 
> For general use on OpenPandora, you wouldn't have
> config...dt_updates_nvm option set,

Yes.

> so the driver should report what
> the chip settings are and whether they aren't what the DT spec'd.
> Let's verify that too...

Ok.

BR,
Nikolaus



More information about the Letux-kernel mailing list