diff --git a/drivers/power/qpnp-charger.c b/drivers/power/qpnp-charger.c
index 86f656131ae57cc5c52e6d7ff87e24dd8825a533..2c0cf18cd37aadbef23a2eb94369307ade446e35 100644
--- a/drivers/power/qpnp-charger.c
+++ b/drivers/power/qpnp-charger.c
@@ -2421,7 +2421,11 @@ get_prop_current_now(struct qpnp_chg_chip *chip)
 	if (chip->bms_psy) {
 		chip->bms_psy->get_property(chip->bms_psy,
 			  POWER_SUPPLY_PROP_CURRENT_NOW, &ret);
-		return ret.intval;
+		/*
+		 * qpnp-charger's sign of ibat convention
+		 * is opposite of power_supply's CURRENT_NOW
+		 */
+		return -1 * ret.intval;
 	} else {
 		pr_debug("No BMS supply registered return 0\n");
 	}
@@ -2693,7 +2697,8 @@ qpnp_batt_power_get_property(struct power_supply *psy,
 		val->intval = get_prop_capacity(chip);
 		break;
 	case POWER_SUPPLY_PROP_CURRENT_NOW:
-		val->intval = get_prop_current_now(chip);
+		/* positive value indicate current entering battery */
+		val->intval = -1 * get_prop_current_now(chip);
 		break;
 	case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN:
 		val->intval = get_prop_full_design(chip);