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

Commit b68e845a authored by hecaiqiang's avatar hecaiqiang
Browse files

Adjust VPH track voltage when lcd on

Change-Id: I839fc38086a2bc920b5cd53ea352981ccc01235c
parent ab211133
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -363,6 +363,7 @@
	ibatmax-cool-ma = <1450>;
	ibatmax-warm-ma = <1050>;
	op,little_cold_term_current = <250>;
	vph-sel-disable;
};

&mtp_batterydata {
+3 −0
Original line number Diff line number Diff line
@@ -514,6 +514,9 @@ static int smb5_parse_dt(struct smb5 *chip)
					"op,vbus-ctrl-gpio", 0, &flags);
	chg->plug_irq = of_get_named_gpio_flags(node,
					"op,usb-check", 0, &flags);
/* @bsp, 2019/06/28 vph sel set disable */
	chg->vph_sel_disable = of_property_read_bool(node,
						"vph-sel-disable");
	/* read other settings */
	OF_PROP_READ(node, "qcom,cutoff-voltage-with-charger",
				smbchg_cutoff_volt_with_charger, rc, 1);
+32 −0
Original line number Diff line number Diff line
@@ -7566,6 +7566,35 @@ static void op_check_charger_uovp(struct smb_charger *chg, int vchg_mv)
	pre_uovp_satus = uovp_satus;
}

static void op_dcdc_vph_track_sel(struct smb_charger *chg)
{
	int rc = 0;

	pr_debug("lcd_is_on:%d\n", chg->oem_lcd_is_on);

	if (chg->vbus_present && chg->chg_done && !chg->vph_sel_disable) {
		if (chg->oem_lcd_is_on && !chg->vph_set_flag) {
			pr_info("vbus present,LCD on set dcdc vph 300mv\n");
			/* config the DCDC_VPH_TRACK_SEL 300mv */
			rc = smblib_masked_write(chg, DCDC_VPH_TRACK_SEL,
					VPH_TRACK_SEL_MASK, SEL_300MV);
			if (rc < 0)
				pr_err("Couldn't set  DCDC_VPH_TRACK_SEL rc=%d\n",
						rc);
			chg->vph_set_flag = true;
		} else if (!chg->oem_lcd_is_on && chg->vph_set_flag) {
			pr_info("vbus present,LCD off set dcdc vph 100mv\n");
			/* config the DCDC_VPH_TRACK_SEL 100mv */
			rc = smblib_masked_write(chg, DCDC_VPH_TRACK_SEL,
					VPH_TRACK_SEL_MASK, 0);
			if (rc < 0)
				pr_err("Couldn't set  DCDC_VPH_TRACK_SEL rc=%d\n",
						rc);
			chg->vph_set_flag = false;
		}
	}
}

#if defined(CONFIG_FB)
static int fb_notifier_callback(struct notifier_block *self,
		unsigned long event, void *data)
@@ -7620,11 +7649,13 @@ static int msm_drm_notifier_callback(struct notifier_block *self,
				set_property_on_fg(chip,
				POWER_SUPPLY_PROP_UPDATE_LCD_IS_OFF, 0);
			chip->oem_lcd_is_on = true;
			op_dcdc_vph_track_sel(chip);
		} else if (*blank == MSM_DRM_BLANK_POWERDOWN) {
			if (chip->oem_lcd_is_on != false)
				set_property_on_fg(chip,
				POWER_SUPPLY_PROP_UPDATE_LCD_IS_OFF, 1);
			chip->oem_lcd_is_on = false;
			op_dcdc_vph_track_sel(chip);
		}
		/* add to set pd charging current 2.0A when panel on */
		if (typec_mode == POWER_SUPPLY_TYPEC_SOURCE_HIGH) {
@@ -7845,6 +7876,7 @@ void checkout_term_current(struct smb_charger *chg)
	if (chg_full) {
		chg->chg_done = true;
		op_charging_en(chg, false);
		op_dcdc_vph_track_sel(chg);
		pr_info("chg_done:CAP=%d (Q:%d),VBAT=%d (Q:%d),IBAT=%d (Q:%d),BAT_TEMP=%d\n",
				get_prop_batt_capacity(chg),
				get_prop_fg_capacity(chg),
+2 −0
Original line number Diff line number Diff line
@@ -581,6 +581,8 @@ struct smb_charger {
	int			vbus_ctrl;
	bool			low_voltage_charger;
	bool			lpd_disabled;
	bool			vph_sel_disable;
	bool			vph_set_flag;
	bool			uusb_apsd_rerun_done;
	bool			typec_present;
	int			fake_input_current_limited;
+6 −0
Original line number Diff line number Diff line
@@ -154,6 +154,12 @@ enum {
#define DCDC_OTG_CFG_REG			(DCDC_BASE + 0x53)
#define OTG_EN_SRC_CFG_BIT			BIT(1)

/*DCDC_VPH_TRACK_SEL*/
#define DCDC_VPH_TRACK_SEL			(DCDC_BASE + 0x89)
#define VPH_TRACK_SEL_MASK			GENMASK(1, 0)
#define SEL_200MV				BIT(0)
#define SEL_300MV				BIT(1)

#define DCDC_CFG_REF_MAX_PSNS_REG		(DCDC_BASE + 0x8C)

#define DCDC_ENG_SDCDC_CFG5_REG			(DCDC_BASE + 0xC4)