Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aea5e1d5 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: smb1351: Ignore ICL update if parallel slave is enabled"

parents fac2bafe 595e689c
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -3002,6 +3002,11 @@ static void smb1351_chg_remove_work(struct work_struct *work)
	if (!(reg & IRQ_SOURCE_DET_BIT)) {
		pr_debug("chg removed\n");
		chip->chg_present = false;
		/* clear parallel slave PRESENT */
		if (parallel_psy && chip->parallel.slave_detected) {
			pr_debug("set parallel charger un-present!\n");
			power_supply_set_present(parallel_psy, false);
		}
		power_supply_set_supply_type(chip->usb_psy,
						POWER_SUPPLY_TYPE_UNKNOWN);
		power_supply_set_present(chip->usb_psy,
@@ -3010,11 +3015,6 @@ static void smb1351_chg_remove_work(struct work_struct *work)
		power_supply_set_dp_dm(chip->usb_psy,
				POWER_SUPPLY_DP_DM_DPR_DMR);
		chip->apsd_rerun = false;
		/* clear parallel slave PRESENT */
		if (parallel_psy && chip->parallel.slave_detected) {
			pr_debug("set parallel charger un-present!\n");
			power_supply_set_present(parallel_psy, false);
		}
	} else if (!chip->chg_remove_work_scheduled) {
		chip->chg_remove_work_scheduled = true;
		goto reschedule;
@@ -3064,15 +3064,15 @@ static int smb1351_usbin_uv_handler(struct smb1351_charger *chip, u8 status)
			}
		} else {
			chip->chg_present = false;
			/* clear parallel slave PRESENT */
			if (parallel_psy && chip->parallel.slave_detected)
				power_supply_set_present(parallel_psy, false);
			power_supply_set_supply_type(chip->usb_psy,
						POWER_SUPPLY_TYPE_UNKNOWN);
			power_supply_set_present(chip->usb_psy,
						chip->chg_present);
			pr_debug("updating usb_psy present=%d\n",
							chip->chg_present);
			/* clear parallel slave RESENT */
			if (parallel_psy && chip->parallel.slave_detected)
				power_supply_set_present(parallel_psy, false);
		}
		return 0;
	}
@@ -3116,12 +3116,12 @@ static int smb1351_usbin_ov_handler(struct smb1351_charger *chip, u8 status)
	if (status != 0) {
		chip->chg_present = false;
		chip->usbin_ov = true;
		power_supply_set_supply_type(chip->usb_psy,
						POWER_SUPPLY_TYPE_UNKNOWN);
		power_supply_set_present(chip->usb_psy, chip->chg_present);
		/* clear parallel slave PRESENT */
		if (parallel_psy && chip->parallel.slave_detected)
			power_supply_set_present(parallel_psy, false);
		power_supply_set_supply_type(chip->usb_psy,
						POWER_SUPPLY_TYPE_UNKNOWN);
		power_supply_set_present(chip->usb_psy, chip->chg_present);
	} else {
		chip->usbin_ov = false;
		if (reg & IRQ_USBIN_UV_BIT)
@@ -3870,11 +3870,25 @@ static void smb1351_external_power_changed(struct power_supply *psy)
{
	struct smb1351_charger *chip = container_of(psy,
				struct smb1351_charger, batt_psy);
	struct power_supply *parallel_psy =
				smb1351_get_parallel_slave(chip);
	union power_supply_propval prop = {0,};
	int rc, online = 0;
	int rc, online = 0, slave_present = 0;

	battery_soc_changed(chip);

	if (parallel_psy) {
		parallel_psy->get_property(parallel_psy,
				POWER_SUPPLY_PROP_PRESENT, &prop);
		slave_present = prop.intval;
		/* Don't update main charger ICL if slave is enabled */
		if (chip->parallel.slave_detected && slave_present
				&& chip->parallel.slave_icl_ma != 0) {
			pr_debug("Ignore ICL setting as parallel-slave is enabled\n");
			return;
		}
	}

	rc = chip->usb_psy->get_property(chip->usb_psy,
				POWER_SUPPLY_PROP_ONLINE, &prop);
	if (rc) {