diff options
author | Andrew F. Davis <afd@ti.com> | 2016-11-04 14:33:13 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-01-19 14:18:07 -0500 |
commit | cb50d45c3d42633830ca60b34bf46c14941cdde4 (patch) | |
tree | f8c65e2a563db9c98d18652c3e39f4baf613b61a | |
parent | df386a0c2804c0a2282dd95d5530e3aa75f7cd3f (diff) |
power: supply: bq27xxx_battery: Fix register map for BQ27510 and BQ27520
commit 3bee9ea1de687925d116670f036599cbed8b66b0 upstream.
The BQ27510 and BQ27520 use a slightly different register map than the
BQ27500, add a new type enum and add these gauges to it.
Fixes: d74534c27775 ("power: bq27xxx_battery: Add support for additional bq27xxx family devices")
Based-on-patch-by: Kenneth R. Crudup <kenny@panix.com>
Signed-off-by: Andrew F. Davis <afd@ti.com>
Signed-off-by: Sebastian Reichel <sre@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/power/supply/bq27xxx_battery.c | 41 | ||||
-rw-r--r-- | drivers/power/supply/bq27xxx_battery_i2c.c | 4 | ||||
-rw-r--r-- | include/linux/power/bq27xxx_battery.h | 3 |
3 files changed, 44 insertions, 4 deletions
diff --git a/drivers/power/supply/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c index 3b0dbc689d72..bccb3f595ff3 100644 --- a/drivers/power/supply/bq27xxx_battery.c +++ b/drivers/power/supply/bq27xxx_battery.c | |||
@@ -164,6 +164,25 @@ static u8 bq27xxx_regs[][BQ27XXX_REG_MAX] = { | |||
164 | [BQ27XXX_REG_DCAP] = 0x3c, | 164 | [BQ27XXX_REG_DCAP] = 0x3c, |
165 | [BQ27XXX_REG_AP] = INVALID_REG_ADDR, | 165 | [BQ27XXX_REG_AP] = INVALID_REG_ADDR, |
166 | }, | 166 | }, |
167 | [BQ27510] = { | ||
168 | [BQ27XXX_REG_CTRL] = 0x00, | ||
169 | [BQ27XXX_REG_TEMP] = 0x06, | ||
170 | [BQ27XXX_REG_INT_TEMP] = 0x28, | ||
171 | [BQ27XXX_REG_VOLT] = 0x08, | ||
172 | [BQ27XXX_REG_AI] = 0x14, | ||
173 | [BQ27XXX_REG_FLAGS] = 0x0a, | ||
174 | [BQ27XXX_REG_TTE] = 0x16, | ||
175 | [BQ27XXX_REG_TTF] = INVALID_REG_ADDR, | ||
176 | [BQ27XXX_REG_TTES] = 0x1a, | ||
177 | [BQ27XXX_REG_TTECP] = INVALID_REG_ADDR, | ||
178 | [BQ27XXX_REG_NAC] = 0x0c, | ||
179 | [BQ27XXX_REG_FCC] = 0x12, | ||
180 | [BQ27XXX_REG_CYCT] = 0x1e, | ||
181 | [BQ27XXX_REG_AE] = INVALID_REG_ADDR, | ||
182 | [BQ27XXX_REG_SOC] = 0x20, | ||
183 | [BQ27XXX_REG_DCAP] = 0x2e, | ||
184 | [BQ27XXX_REG_AP] = INVALID_REG_ADDR, | ||
185 | }, | ||
167 | [BQ27530] = { | 186 | [BQ27530] = { |
168 | [BQ27XXX_REG_CTRL] = 0x00, | 187 | [BQ27XXX_REG_CTRL] = 0x00, |
169 | [BQ27XXX_REG_TEMP] = 0x06, | 188 | [BQ27XXX_REG_TEMP] = 0x06, |
@@ -302,6 +321,24 @@ static enum power_supply_property bq27500_battery_props[] = { | |||
302 | POWER_SUPPLY_PROP_MANUFACTURER, | 321 | POWER_SUPPLY_PROP_MANUFACTURER, |
303 | }; | 322 | }; |
304 | 323 | ||
324 | static enum power_supply_property bq27510_battery_props[] = { | ||
325 | POWER_SUPPLY_PROP_STATUS, | ||
326 | POWER_SUPPLY_PROP_PRESENT, | ||
327 | POWER_SUPPLY_PROP_VOLTAGE_NOW, | ||
328 | POWER_SUPPLY_PROP_CURRENT_NOW, | ||
329 | POWER_SUPPLY_PROP_CAPACITY, | ||
330 | POWER_SUPPLY_PROP_CAPACITY_LEVEL, | ||
331 | POWER_SUPPLY_PROP_TEMP, | ||
332 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, | ||
333 | POWER_SUPPLY_PROP_TECHNOLOGY, | ||
334 | POWER_SUPPLY_PROP_CHARGE_FULL, | ||
335 | POWER_SUPPLY_PROP_CHARGE_NOW, | ||
336 | POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, | ||
337 | POWER_SUPPLY_PROP_CYCLE_COUNT, | ||
338 | POWER_SUPPLY_PROP_HEALTH, | ||
339 | POWER_SUPPLY_PROP_MANUFACTURER, | ||
340 | }; | ||
341 | |||
305 | static enum power_supply_property bq27530_battery_props[] = { | 342 | static enum power_supply_property bq27530_battery_props[] = { |
306 | POWER_SUPPLY_PROP_STATUS, | 343 | POWER_SUPPLY_PROP_STATUS, |
307 | POWER_SUPPLY_PROP_PRESENT, | 344 | POWER_SUPPLY_PROP_PRESENT, |
@@ -385,6 +422,7 @@ static struct { | |||
385 | BQ27XXX_PROP(BQ27000, bq27000_battery_props), | 422 | BQ27XXX_PROP(BQ27000, bq27000_battery_props), |
386 | BQ27XXX_PROP(BQ27010, bq27010_battery_props), | 423 | BQ27XXX_PROP(BQ27010, bq27010_battery_props), |
387 | BQ27XXX_PROP(BQ27500, bq27500_battery_props), | 424 | BQ27XXX_PROP(BQ27500, bq27500_battery_props), |
425 | BQ27XXX_PROP(BQ27510, bq27510_battery_props), | ||
388 | BQ27XXX_PROP(BQ27530, bq27530_battery_props), | 426 | BQ27XXX_PROP(BQ27530, bq27530_battery_props), |
389 | BQ27XXX_PROP(BQ27541, bq27541_battery_props), | 427 | BQ27XXX_PROP(BQ27541, bq27541_battery_props), |
390 | BQ27XXX_PROP(BQ27545, bq27545_battery_props), | 428 | BQ27XXX_PROP(BQ27545, bq27545_battery_props), |
@@ -635,7 +673,8 @@ static int bq27xxx_battery_read_pwr_avg(struct bq27xxx_device_info *di) | |||
635 | */ | 673 | */ |
636 | static bool bq27xxx_battery_overtemp(struct bq27xxx_device_info *di, u16 flags) | 674 | static bool bq27xxx_battery_overtemp(struct bq27xxx_device_info *di, u16 flags) |
637 | { | 675 | { |
638 | if (di->chip == BQ27500 || di->chip == BQ27541 || di->chip == BQ27545) | 676 | if (di->chip == BQ27500 || di->chip == BQ27510 || |
677 | di->chip == BQ27541 || di->chip == BQ27545) | ||
639 | return flags & (BQ27XXX_FLAG_OTC | BQ27XXX_FLAG_OTD); | 678 | return flags & (BQ27XXX_FLAG_OTC | BQ27XXX_FLAG_OTD); |
640 | if (di->chip == BQ27530 || di->chip == BQ27421) | 679 | if (di->chip == BQ27530 || di->chip == BQ27421) |
641 | return flags & BQ27XXX_FLAG_OT; | 680 | return flags & BQ27XXX_FLAG_OT; |
diff --git a/drivers/power/supply/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c index 85d4ea2a9c20..5c5c3a6f9923 100644 --- a/drivers/power/supply/bq27xxx_battery_i2c.c +++ b/drivers/power/supply/bq27xxx_battery_i2c.c | |||
@@ -149,8 +149,8 @@ static const struct i2c_device_id bq27xxx_i2c_id_table[] = { | |||
149 | { "bq27200", BQ27000 }, | 149 | { "bq27200", BQ27000 }, |
150 | { "bq27210", BQ27010 }, | 150 | { "bq27210", BQ27010 }, |
151 | { "bq27500", BQ27500 }, | 151 | { "bq27500", BQ27500 }, |
152 | { "bq27510", BQ27500 }, | 152 | { "bq27510", BQ27510 }, |
153 | { "bq27520", BQ27500 }, | 153 | { "bq27520", BQ27510 }, |
154 | { "bq27530", BQ27530 }, | 154 | { "bq27530", BQ27530 }, |
155 | { "bq27531", BQ27530 }, | 155 | { "bq27531", BQ27530 }, |
156 | { "bq27541", BQ27541 }, | 156 | { "bq27541", BQ27541 }, |
diff --git a/include/linux/power/bq27xxx_battery.h b/include/linux/power/bq27xxx_battery.h index e30deb046156..bed9557b69e7 100644 --- a/include/linux/power/bq27xxx_battery.h +++ b/include/linux/power/bq27xxx_battery.h | |||
@@ -4,7 +4,8 @@ | |||
4 | enum bq27xxx_chip { | 4 | enum bq27xxx_chip { |
5 | BQ27000 = 1, /* bq27000, bq27200 */ | 5 | BQ27000 = 1, /* bq27000, bq27200 */ |
6 | BQ27010, /* bq27010, bq27210 */ | 6 | BQ27010, /* bq27010, bq27210 */ |
7 | BQ27500, /* bq27500, bq27510, bq27520 */ | 7 | BQ27500, /* bq27500 */ |
8 | BQ27510, /* bq27510, bq27520 */ | ||
8 | BQ27530, /* bq27530, bq27531 */ | 9 | BQ27530, /* bq27530, bq27531 */ |
9 | BQ27541, /* bq27541, bq27542, bq27546, bq27742 */ | 10 | BQ27541, /* bq27541, bq27542, bq27546, bq27742 */ |
10 | BQ27545, /* bq27545 */ | 11 | BQ27545, /* bq27545 */ |