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

Commit e116151f authored by Pranav Vashi's avatar Pranav Vashi
Browse files

power: Fix enabling ln8000 for multiple devices



Change-Id: I3d52a0da58644d0dd4f596cdefd72ae8e1874d63
Signed-off-by: default avatarPranav Vashi <neobuddy89@gmail.com>
parent cb39430b
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -924,7 +924,7 @@ int smb5_config_iterm(struct smb_charger *chg, int hi_thresh, int low_thresh)
	return 0;
}

#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
static int set_ln8000_fv(struct smb_charger *chg) {
	int rc;
	union power_supply_propval val;
@@ -1007,7 +1007,7 @@ int smblib_set_fastcharge_mode(struct smb_charger *chg, bool enable)
	if (enable) {
		/* ffc need clear non_fcc_vfloat_voter first */
		vote(chg->fv_votable, NON_FFC_VFLOAT_VOTER, false, 0);
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
		set_ln8000_fv(chg);
#endif
		rc = power_supply_get_property(chg->bms_psy,
@@ -2942,7 +2942,7 @@ static bool is_bq25970_available(struct smb_charger *chg)
	if (!chg->cp_psy)
		chg->cp_psy = power_supply_get_by_name("bq2597x-standalone");

#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	if (!chg->cp_psy)
		chg->cp_psy = power_supply_get_by_name("ln8000");
#endif
@@ -7420,7 +7420,7 @@ static void smb_check_init_boot(struct work_struct *work)
		power_supply_changed(chg->usb_psy);
}

#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
static int fv_over_limit_times;
#define OVER_FV_MAX_TIMES	10
static void smblib_check_vbat_work(struct work_struct *work)
@@ -7489,7 +7489,7 @@ static int check_reduce_fcc_condition(struct smb_charger *chg)
		chg->cp_psy = power_supply_get_by_name("bq2597x-standalone");
	}

#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	if (!chg->cp_psy){
		chg->cp_psy = power_supply_get_by_name("ln8000");
	}
@@ -7758,7 +7758,7 @@ void smblib_usb_plugin_locked(struct smb_charger *chg)
					msecs_to_jiffies(CHARGER_RECHECK_DELAY_MS));
		schedule_delayed_work(&chg->cc_un_compliant_charge_work,
					msecs_to_jiffies(CC_UN_COMPLIANT_START_DELAY_MS));
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
		schedule_delayed_work(&chg->check_vbat_work, msecs_to_jiffies(200));
#endif
#if defined(CONFIG_MACH_XIAOMI_VAYU) || defined(CONFIG_MACH_XIAOMI_NABU)
@@ -9066,7 +9066,7 @@ static void typec_src_removal(struct smb_charger *chg)
	cancel_delayed_work_sync(&chg->check_init_boot);
#endif
#endif
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	cancel_delayed_work_sync(&chg->check_vbat_work);
#endif

@@ -9154,7 +9154,7 @@ static void typec_src_removal(struct smb_charger *chg)
		cancel_delayed_work_sync(&chg->six_pin_batt_step_chg_work);
	}
#endif
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	vote(chg->fv_votable, BATT_BQ2597X_VOTER, false, 0);
#endif

@@ -9252,7 +9252,7 @@ static void typec_src_removal(struct smb_charger *chg)
	chg->slowly_charging = false;
	chg->pps_thermal_level = -EINVAL;
#endif
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	fv_over_limit_times = 0;
#endif
	pr_err("%s:", __func__);
@@ -11703,7 +11703,7 @@ int smblib_init(struct smb_charger *chg)
					smblib_dual_role_check_work);
	INIT_DELAYED_WORK(&chg->pr_swap_detach_work,
					smblib_pr_swap_detach_work);
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	INIT_DELAYED_WORK(&chg->check_vbat_work, smblib_check_vbat_work);
#endif
#if defined(CONFIG_MACH_XIAOMI_VAYU) || defined(CONFIG_MACH_XIAOMI_NABU)
@@ -11905,7 +11905,7 @@ int smblib_deinit(struct smb_charger *chg)
		cancel_delayed_work_sync(&chg->report_soc_decimal_work);
		cancel_delayed_work_sync(&chg->check_init_boot);
#endif
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
		cancel_delayed_work_sync(&chg->check_vbat_work);
#endif
		power_supply_unreg_notifier(&chg->nb);
+3 −1
Original line number Diff line number Diff line
@@ -149,6 +149,8 @@ enum print_reason {
/* use for QC3P5 */
#define QC3P5_VOTER			"QC3P5_VOTER"
#define FCC_MAX_QC3P5_VOTER		"FCC_MAX_QC3P5_VOTER"
#endif
#ifdef CONFIG_CHARGER_LN8000
/* use for Ln8000 */
#define BATT_LN8000_VOTER		"BATT_LN8000_VOTER"
#define BATT_BQ2597X_VOTER		"BATT_BQ2597X_VOTER"
@@ -812,7 +814,7 @@ struct smb_charger {
	struct delayed_work	reduce_fcc_work;
	struct delayed_work	thermal_setting_work;
#endif
#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	struct delayed_work	check_vbat_work;
#endif
	struct alarm		lpd_recheck_timer;
+1 −1
Original line number Diff line number Diff line
@@ -164,7 +164,7 @@ static bool is_bq25970_available(struct step_chg_info *chip)
	if (!chip->bq_psy)
		chip->bq_psy = power_supply_get_by_name("bq2597x-standalone");

#ifdef CONFIG_MACH_XIAOMI_NABU
#ifdef CONFIG_CHARGER_LN8000
	if (!chip->bq_psy)
		chip->bq_psy = power_supply_get_by_name("ln8000");
#endif
+6 −1
Original line number Diff line number Diff line
@@ -1314,6 +1314,9 @@ void cp_statemachine(unsigned int port)

static void cp_workfunc(struct work_struct *work)
{
#ifdef CONFIG_CHARGER_LN8000
	struct power_supply *onsemi_psy;
#endif
	cp_get_usb_type();

	cp_update_sw_status();
@@ -1327,6 +1330,8 @@ static void cp_workfunc(struct work_struct *work)
	if (pm_state.usb_present == 0) {
		cp_set_qc_bus_protections(HVDCP3_NONE);
#ifdef CONFIG_CHARGER_LN8000
		onsemi_psy = power_supply_get_by_name("ln8000");
		if (onsemi_psy)
			pm_state.state = CP_STATE_DISCONNECT;
#endif
		return;
+2 −0
Original line number Diff line number Diff line
@@ -1078,6 +1078,7 @@ static int psy_chg_set_bus_protection_for_qc3(struct ln8000_info *info,
		info->vin_ovp_alarm_th = BUS_OVP_ALARM_FOR_QC;
		ln8000_set_iin_limit(info, BUS_OCP_FOR_QC_CLASS_B - 700000);
		info->iin_ocp_alarm_th = BUS_OCP_ALARM_FOR_QC_CLASS_B;
#ifdef CONFIG_MACH_XIAOMI_NABU
	} else if (hvdcp3_type == HVDCP3P5_CLASSA_18W) {
		ln8000_set_vac_ovp(info, BUS_OVP_FOR_QC);
		info->vin_ovp_alarm_th = BUS_OVP_ALARM_FOR_QC;
@@ -1088,6 +1089,7 @@ static int psy_chg_set_bus_protection_for_qc3(struct ln8000_info *info,
		info->vin_ovp_alarm_th = BUS_OVP_ALARM_FOR_QC;
		ln8000_set_iin_limit(info, BUS_OCP_FOR_QC3P5_CLASS_B - 700000);
		info->iin_ocp_alarm_th = BUS_OCP_ALARM_FOR_QC3P5_CLASS_B;
#endif
	} else {
		ln8000_set_vac_ovp(info, info->pdata->bus_ovp_th);
		info->vin_ovp_alarm_th = info->pdata->bus_ovp_alarm_th;