Loading drivers/power/supply/qcom/fg-core.h +2 −0 Original line number Diff line number Diff line Loading @@ -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) Loading drivers/power/supply/qcom/qpnp-fg-gen4.c +30 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading Loading
drivers/power/supply/qcom/fg-core.h +2 −0 Original line number Diff line number Diff line Loading @@ -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) Loading
drivers/power/supply/qcom/qpnp-fg-gen4.c +30 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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: Loading