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

Commit 1ddf07d8 authored by Subbaraman Narayanamurthy's avatar Subbaraman Narayanamurthy
Browse files

qpnp-fg-gen3: update empty voltage threshold and empty SOC irq handling



As per the hardware characterization, update the battery empty
voltage threshold to 2.8V. Since this moves the voltage little
away from cutoff voltage, update the empty SOC interrupt handling
to report SOC as 0. Since we only need the rising edge of empty
SOC interrupt, modify the interrupt flag as well.

Change-Id: I665a6f879af4e6b6e9f94b5464be7894d5ea67cb
Signed-off-by: default avatarSubbaraman Narayanamurthy <subbaram@codeaurora.org>
parent 5652fdc6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ First Level Node - FG Gen3 device
		    be notified via the power supply framework. The userspace
		    will read 0% soc and immediately shutdown. If this property
		    is not specified, then the default value used will be
		    3100mV.
		    2800mV.

- qcom,fg-vbatt-low-thr
	Usage:      optional
+2 −1
Original line number Diff line number Diff line
@@ -334,7 +334,8 @@
					     <0x2 0x40 0x2 IRQ_TYPE_EDGE_BOTH>,
					     <0x2 0x40 0x3 IRQ_TYPE_EDGE_BOTH>,
					     <0x2 0x40 0x4 IRQ_TYPE_EDGE_BOTH>,
					     <0x2 0x40 0x5 IRQ_TYPE_EDGE_BOTH>,
					     <0x2 0x40 0x5
							IRQ_TYPE_EDGE_RISING>,
					     <0x2 0x40 0x6 IRQ_TYPE_EDGE_BOTH>,
					     <0x2 0x40 0x7 IRQ_TYPE_EDGE_BOTH>;
				interrupt-names = "soc-update",
+1 −0
Original line number Diff line number Diff line
@@ -288,6 +288,7 @@ struct fg_chip {
	bool			battery_missing;
	bool			fg_restarting;
	bool			charge_full;
	bool			charge_empty;
	bool			recharge_soc_adjusted;
	bool			ki_coeff_dischg_en;
	struct completion	soc_update;
+8 −1
Original line number Diff line number Diff line
@@ -676,6 +676,7 @@ static bool is_debug_batt_id(struct fg_chip *chip)
#define FULL_CAPACITY	100
#define FULL_SOC_RAW	255
#define DEBUG_BATT_SOC	67
#define EMPTY_SOC	0
static int fg_get_prop_capacity(struct fg_chip *chip, int *val)
{
	int rc, msoc;
@@ -685,6 +686,11 @@ static int fg_get_prop_capacity(struct fg_chip *chip, int *val)
		return 0;
	}

	if (chip->charge_empty) {
		*val = EMPTY_SOC;
		return 0;
	}

	if (chip->charge_full) {
		*val = FULL_CAPACITY;
		return 0;
@@ -2302,6 +2308,7 @@ static irqreturn_t fg_empty_soc_irq_handler(int irq, void *data)
{
	struct fg_chip *chip = data;

	chip->charge_empty = true;
	if (is_charger_available(chip))
		power_supply_changed(chip->batt_psy);

@@ -2523,7 +2530,7 @@ static int fg_parse_ki_coefficients(struct fg_chip *chip)
}

#define DEFAULT_CUTOFF_VOLT_MV		3200
#define DEFAULT_EMPTY_VOLT_MV		3100
#define DEFAULT_EMPTY_VOLT_MV		2800
#define DEFAULT_CHG_TERM_CURR_MA	100
#define DEFAULT_SYS_TERM_CURR_MA	-125
#define DEFAULT_DELTA_SOC_THR		1