Loading drivers/power/smb135x-charger.c +24 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,9 @@ #define USING_USB_BIT BIT(1) #define USING_DC_BIT BIT(0) #define STATUS_2_REG 0x48 #define HARD_LIMIT_STS_BIT BIT(6) #define STATUS_4_REG 0x4A #define BATT_NET_CHG_CURRENT_BIT BIT(7) #define BATT_LESS_THAN_2V BIT(4) Loading Loading @@ -1728,8 +1731,23 @@ static enum power_supply_property smb135x_parallel_properties[] = { POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_VOLTAGE_MAX, POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED, }; static bool smb135x_is_input_current_limited(struct smb135x_chg *chip) { int rc; u8 reg; rc = smb135x_read(chip, STATUS_2_REG, ®); if (rc) { pr_debug("Couldn't read _REG for ICL status rc = %d\n", rc); return false; } return !!(reg & HARD_LIMIT_STS_BIT); } static int smb135x_parallel_set_chg_present(struct smb135x_chg *chip, int present) { Loading Loading @@ -1969,6 +1987,12 @@ static int smb135x_parallel_get_property(struct power_supply *psy, else val->intval = POWER_SUPPLY_STATUS_DISCHARGING; break; case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED: if (chip->parallel_charger_present) val->intval = smb135x_is_input_current_limited(chip); else val->intval = 0; break; default: return -EINVAL; } Loading Loading
drivers/power/smb135x-charger.c +24 −0 Original line number Diff line number Diff line Loading @@ -185,6 +185,9 @@ #define USING_USB_BIT BIT(1) #define USING_DC_BIT BIT(0) #define STATUS_2_REG 0x48 #define HARD_LIMIT_STS_BIT BIT(6) #define STATUS_4_REG 0x4A #define BATT_NET_CHG_CURRENT_BIT BIT(7) #define BATT_LESS_THAN_2V BIT(4) Loading Loading @@ -1728,8 +1731,23 @@ static enum power_supply_property smb135x_parallel_properties[] = { POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_VOLTAGE_MAX, POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED, }; static bool smb135x_is_input_current_limited(struct smb135x_chg *chip) { int rc; u8 reg; rc = smb135x_read(chip, STATUS_2_REG, ®); if (rc) { pr_debug("Couldn't read _REG for ICL status rc = %d\n", rc); return false; } return !!(reg & HARD_LIMIT_STS_BIT); } static int smb135x_parallel_set_chg_present(struct smb135x_chg *chip, int present) { Loading Loading @@ -1969,6 +1987,12 @@ static int smb135x_parallel_get_property(struct power_supply *psy, else val->intval = POWER_SUPPLY_STATUS_DISCHARGING; break; case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED: if (chip->parallel_charger_present) val->intval = smb135x_is_input_current_limited(chip); else val->intval = 0; break; default: return -EINVAL; } Loading