.. | .. |
---|
360 | 360 | bool ac_valid, vbus_valid; |
---|
361 | 361 | unsigned int rest_vol; |
---|
362 | 362 | unsigned int reg_value; |
---|
| 363 | + int ibat; |
---|
363 | 364 | int ret; |
---|
364 | 365 | |
---|
365 | 366 | struct axp803_bat_power *bat_power = power_supply_get_drvdata(psy); |
---|
.. | .. |
---|
369 | 370 | return ret; |
---|
370 | 371 | bat_det = !!(reg_value & AXP803_CHGSTATUS_BAT_PST_VALID) && |
---|
371 | 372 | !!(reg_value & AXP803_CHGSTATUS_BAT_PRESENT); |
---|
372 | | - bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING); |
---|
| 373 | + //bat_charging = !!(reg_value & AXP803_CHGSTATUS_BAT_CHARGING); |
---|
| 374 | + ibat = axp803_get_ibat(bat_power); |
---|
373 | 375 | |
---|
374 | 376 | ret = regmap_read(bat_power->regmap, AXP803_STATUS, ®_value); |
---|
375 | 377 | if (ret) |
---|
.. | .. |
---|
383 | 385 | if (bat_det) { |
---|
384 | 386 | if (rest_vol == 100) |
---|
385 | 387 | val->intval = POWER_SUPPLY_STATUS_FULL; |
---|
386 | | - else if (bat_charging) |
---|
| 388 | + else if (ibat > 0) |
---|
387 | 389 | val->intval = POWER_SUPPLY_STATUS_CHARGING; |
---|
388 | 390 | else |
---|
389 | 391 | val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING; |
---|