power: pm8921-bms: use direct charger api instead of power supply api
The power supply api reports usb as missing if a usb wall charger
is plugged in - this is expected as a usb wall charger should be
treated as a dc charger - not a usb charger.
The bms needs to know if anything is connected to the usb port, it
does not care whether it is a usb wall charger or pc usb charger.
Use a direct api exposed by the charger that reports the USBIN_VALID
bit.
Change-Id: Ide05f7da1b14ad3b288633e887611dd5fa79276a
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
diff --git a/drivers/power/pm8921-bms.c b/drivers/power/pm8921-bms.c
index dba2b06..e544ec8 100644
--- a/drivers/power/pm8921-bms.c
+++ b/drivers/power/pm8921-bms.c
@@ -326,19 +326,13 @@
static int usb_chg_plugged_in(void)
{
- union power_supply_propval ret = {0,};
- static struct power_supply *psy;
+ int val = pm8921_is_usb_chg_plugged_in();
- if (psy == NULL) {
- psy = power_supply_get_by_name("usb");
- if (psy == NULL)
- return 0;
- }
+ /* treat as if usb is not present in case of error */
+ if (val == -EINVAL)
+ val = 0;
- if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &ret))
- return 0;
-
- return ret.intval;
+ return val;
}
#define HOLD_OREG_DATA BIT(1)