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

Commit db26a193 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: bcl_peripheral: Enable BCL LMH algorithm only once"

parents 59179042 514e483a
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -288,23 +288,13 @@ static void soc_mitigate(struct work_struct *work)
	update_cpu_freq();
}

static int power_supply_callback(struct notifier_block *nb,
				  unsigned long event, void *data)
static int get_and_evaluate_battery_soc(void)
{
	struct power_supply *psy = data;
	static struct power_supply *batt_psy;
	union power_supply_propval ret = {0,};
	int battery_percentage;
	enum bcl_threshold_state prev_soc_state;

	if (gbcl->bcl_mode != BCL_DEVICE_ENABLED) {
		pr_debug("BCL is not enabled\n");
		return NOTIFY_OK;
	}

	if (strcmp(psy->desc->name, "battery"))
		return NOTIFY_OK;

	if (!batt_psy)
		batt_psy = power_supply_get_by_name("battery");
	if (batt_psy) {
@@ -328,6 +318,22 @@ static int power_supply_callback(struct notifier_block *nb,
	return NOTIFY_OK;
}

static int power_supply_callback(struct notifier_block *nb,
				  unsigned long event, void *data)
{
	struct power_supply *psy = data;

	if (gbcl->bcl_mode != BCL_DEVICE_ENABLED) {
		pr_debug("BCL is not enabled\n");
		return NOTIFY_OK;
	}

	if (strcmp(psy->desc->name, "battery"))
		return NOTIFY_OK;

	return get_and_evaluate_battery_soc();
}

static int bcl_get_battery_voltage(int *vbatt_mv)
{
	static struct power_supply *psy;
@@ -646,7 +652,7 @@ static void bcl_periph_mode_set(enum bcl_device_mode mode)
		 * power state changes. Make sure we read the current SoC
		 * and mitigate.
		 */
		power_supply_callback(&gbcl->psy_nb, 1, gbcl);
		get_and_evaluate_battery_soc();
		ret = power_supply_reg_notifier(&gbcl->psy_nb);
		if (ret < 0) {
			pr_err("Unable to register soc notifier rc = %d\n",
+4 −2
Original line number Diff line number Diff line
/*
 * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -482,8 +482,10 @@ static int bcl_access_monitor_enable(bool enable)
	if (enable == bcl_perph->enabled)
		goto access_exit;

	if ((bcl_perph_version == BCL_PMI8998) && !hw_enabled && enable)
	if ((bcl_perph_version == BCL_PMI8998) && !hw_enabled && enable) {
		bcl_lmh_dcvs_enable();
		hw_enabled = true;
	}

	for (; i < BCL_PARAM_MAX; i++) {
		perph_data = &bcl_perph->param[i];