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

Commit 52a05ad8 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: qpnp-fg-gen4: disable wakeable irqs for debug board"

parents fcef7c22 82458dcf
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@
#define FG_PARALLEL_EN_VOTER	"fg_parallel_en"
#define MEM_ATTN_IRQ_VOTER	"fg_mem_attn_irq"

#define DEBUG_BOARD_VOTER	"fg_debug_board"

#define BUCKET_COUNT			8
#define BUCKET_SOC_PCT			(256 / BUCKET_COUNT)

+30 −0
Original line number Diff line number Diff line
@@ -6142,6 +6142,34 @@ static void fg_gen4_cleanup(struct fg_gen4_chip *chip)
	dev_set_drvdata(fg->dev, NULL);
}

static void fg_gen4_post_init(struct fg_gen4_chip *chip)
{
	int i;
	struct fg_dev *fg = &chip->fg;

	if (!is_debug_batt_id(fg))
		return;

	/* Disable all wakeable IRQs for a debug battery */
	vote(fg->delta_bsoc_irq_en_votable, DEBUG_BOARD_VOTER, false, 0);
	vote(chip->delta_esr_irq_en_votable, DEBUG_BOARD_VOTER, false, 0);
	vote(chip->mem_attn_irq_en_votable, DEBUG_BOARD_VOTER, false, 0);

	for (i = 0; i < FG_GEN4_IRQ_MAX; i++) {
		if (fg->irqs[i].irq && fg->irqs[i].wakeable) {
			if (i == BSOC_DELTA_IRQ || i == ESR_DELTA_IRQ ||
					i == MEM_ATTN_IRQ) {
				continue;
			} else {
				disable_irq_wake(fg->irqs[i].irq);
				disable_irq_nosync(fg->irqs[i].irq);
			}
		}
	}

	fg_dbg(fg, FG_STATUS, "Disabled wakeable irqs for debug board\n");
}

static int fg_gen4_probe(struct platform_device *pdev)
{
	struct fg_gen4_chip *chip;
@@ -6365,6 +6393,8 @@ static int fg_gen4_probe(struct platform_device *pdev)
	if (!fg->battery_missing)
		schedule_delayed_work(&fg->profile_load_work, 0);

	fg_gen4_post_init(chip);

	pr_debug("FG GEN4 driver probed successfully\n");
	return 0;
exit: