Loading arch/arm64/boot/dts/qcom/guacamoleb.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ ibatmax-cool-ma = <1450>; ibatmax-warm-ma = <1050>; op,little_cold_term_current = <250>; vph-sel-disable; }; &mtp_batterydata { Loading drivers/power/supply/qcom/qpnp-smb5.c +3 −0 Original line number Diff line number Diff line Loading @@ -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); Loading drivers/power/supply/qcom/smb5-lib.c +32 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) { Loading Loading @@ -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), Loading drivers/power/supply/qcom/smb5-lib.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading drivers/power/supply/qcom/smb5-reg.h +6 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading
arch/arm64/boot/dts/qcom/guacamoleb.dtsi +1 −0 Original line number Diff line number Diff line Loading @@ -363,6 +363,7 @@ ibatmax-cool-ma = <1450>; ibatmax-warm-ma = <1050>; op,little_cold_term_current = <250>; vph-sel-disable; }; &mtp_batterydata { Loading
drivers/power/supply/qcom/qpnp-smb5.c +3 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
drivers/power/supply/qcom/smb5-lib.c +32 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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) { Loading Loading @@ -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), Loading
drivers/power/supply/qcom/smb5-lib.h +2 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
drivers/power/supply/qcom/smb5-reg.h +6 −0 Original line number Diff line number Diff line Loading @@ -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) Loading