Merge "power: bcl_peripheral: Enable BCL LMH algorithm only once"
This commit is contained in:
commit
db26a193ab
2 changed files with 22 additions and 14 deletions
|
@ -288,23 +288,13 @@ static void soc_mitigate(struct work_struct *work)
|
||||||
update_cpu_freq();
|
update_cpu_freq();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int power_supply_callback(struct notifier_block *nb,
|
static int get_and_evaluate_battery_soc(void)
|
||||||
unsigned long event, void *data)
|
|
||||||
{
|
{
|
||||||
struct power_supply *psy = data;
|
|
||||||
static struct power_supply *batt_psy;
|
static struct power_supply *batt_psy;
|
||||||
union power_supply_propval ret = {0,};
|
union power_supply_propval ret = {0,};
|
||||||
int battery_percentage;
|
int battery_percentage;
|
||||||
enum bcl_threshold_state prev_soc_state;
|
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)
|
if (!batt_psy)
|
||||||
batt_psy = power_supply_get_by_name("battery");
|
batt_psy = power_supply_get_by_name("battery");
|
||||||
if (batt_psy) {
|
if (batt_psy) {
|
||||||
|
@ -328,6 +318,22 @@ static int power_supply_callback(struct notifier_block *nb,
|
||||||
return NOTIFY_OK;
|
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 int bcl_get_battery_voltage(int *vbatt_mv)
|
||||||
{
|
{
|
||||||
static struct power_supply *psy;
|
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
|
* power state changes. Make sure we read the current SoC
|
||||||
* and mitigate.
|
* and mitigate.
|
||||||
*/
|
*/
|
||||||
power_supply_callback(&gbcl->psy_nb, 1, gbcl);
|
get_and_evaluate_battery_soc();
|
||||||
ret = power_supply_reg_notifier(&gbcl->psy_nb);
|
ret = power_supply_reg_notifier(&gbcl->psy_nb);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
pr_err("Unable to register soc notifier rc = %d\n",
|
pr_err("Unable to register soc notifier rc = %d\n",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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
|
* 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
|
* 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)
|
if (enable == bcl_perph->enabled)
|
||||||
goto access_exit;
|
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();
|
bcl_lmh_dcvs_enable();
|
||||||
|
hw_enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
for (; i < BCL_PARAM_MAX; i++) {
|
for (; i < BCL_PARAM_MAX; i++) {
|
||||||
perph_data = &bcl_perph->param[i];
|
perph_data = &bcl_perph->param[i];
|
||||||
|
|
Loading…
Add table
Reference in a new issue