BQ27xxx registers

From: Chris Lapa
Date: Tue Dec 20 2016 - 01:00:51 EST


Hi,

I'm testing out the 4.9 kernel on a AM3359 board fitted with a BQ27510-G3 fuel gauge. The board previously worked on the 4.1 kernel, however on the 4.9 kernel the bq27xxx_battery.c driver is spitting out this error continuously:

power_supply bq27510-0: driver failed to report `charge_full_design' property: -121

I have narrowed down the problem to commit 099867a16 where the BQ27XXX_REG_DCAP value was changed from 0x2e to 0x3c.

I can generate a patch to fix this issue, however the bigger problem exists as to which revision fuel gauge the bq27xxx_battery.c driver is intended to support for each family.

Attached is a table I put together of all the register addresses for each supported device under the BQ27500 definition and what the current driver utilizes (I didn't paste it here as the word wrapping messes with the formatting).

There isn't really an ideal solution I can see where we keep the single BQ27500 definition and support all the functionality of each revision.

We can try and just support the latest revisions (BQ27510-G3 and BQ27520-G4) but I think it could hurt backwards compatibility for existing hardware.

I'm happy to work on a fix but just wanted to get some thoughts before proceeding.

Cheers,
Chris
Register BQ27500/1 BQ27510-G1 BQ27510-G2 BQ27510-G3 BQ27520-G1 BQ27520-G2 BQ27520-G3 BQ27520-G4 bq27xxx_battery.c
BQ27XXX_REG_CTRL 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
BQ27XXX_REG_TEMP 0x06 0x06 0x06 0x06 0x06 0x06 0x06 0x06 0x06
BQ27XXX_REG_INT_TEMP â - - 0x28 - 0x36 0x36 0x28 0x28
BQ27XXX_REG_VOLT 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08 0x08
BQ27XXX_REG_AI 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14 0x14
BQ27XXX_REG_FLAGS 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a 0x0a
BQ27XXX_REG_TTE 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16 0x16
BQ27XXX_REG_TTF 0x18 0x18 0x18 â 0x18 0x18 - - -
BQ27XXX_REG_TTES 0x1c 0x1c 0x1c 0x1a 0x1c 0x1c 0x1c 0x1a 0x1a
BQ27XXX_REG_TTECP 0x26 0x26 0x26 - 0x26 0x26 0x26 - -
BQ27XXX_REG_NAC 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c 0x0c
BQ27XXX_REG_FCC 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12 0x12
BQ27XXX_REG_CYCT 0x2a 0x2a 0x2a 0x1e - 0x2a 0x2a 0x1e 0x2a
BQ27XXX_REG_AE 0x22 0x22 0x22 - 0x22 0x22 0x22 - -
BQ27XXX_REG_SOC 0x2c 0x2c 0x2c 0x20 0x2c 0x2c 0x2c 0x20 0x2c
BQ27XXX_REG_DCAP 0x3c 0x3c 0x3c 0x2e 0x3c 0x3c 0x3c - 0x3c
BQ27XXX_REG_AP 0x24 0x24 0x24 - 0x24 0x24 0x24 - -