Skip to content

Commit 9d4aa24

Browse files
committed
fwk: fix azalea cannot build
Signed-off-by: Josh-Tsai <josh_tsai@compal.com>
1 parent 9165eea commit 9d4aa24

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

zephyr/program/lotus/azalea/src/battery.c

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,28 @@ enum battery_present battery_is_present(void)
5050
return batt_pres;
5151
}
5252

53-
static void battery_percentage_control(void)
53+
uint32_t get_system_percentage(void)
5454
{
55-
enum ec_charge_control_mode new_mode;
5655
uint32_t memmap_cap = *(uint32_t *)host_get_memmap(EC_MEMMAP_BATT_CAP);
5756
uint32_t memmap_lfcc = *(uint32_t *)host_get_memmap(EC_MEMMAP_BATT_LFCC);
58-
uint32_t batt_os_percentage;
57+
58+
return 1000 * memmap_cap / (memmap_lfcc + 1);
59+
}
60+
61+
static void battery_percentage_control(void)
62+
{
63+
enum ec_charge_control_mode new_mode;
64+
static int in_percentage_control;
65+
uint32_t batt_os_percentage = get_system_percentage();
5966
int rv;
6067

61-
batt_os_percentage = 1000 * memmap_cap / (memmap_lfcc + 1);
68+
/**
69+
* If the host command EC_CMD_CHARGE_CONTROL set control mode to CHARGE_CONTROL_DISCHARGE
70+
* or CHARGE_CONTROL_IDLE, ignore the battery_percentage_control();
71+
*/
72+
if (!in_percentage_control && get_chg_ctrl_mode() != CHARGE_CONTROL_NORMAL)
73+
return;
74+
6275
if (charging_maximum_level == EC_CHARGE_LIMIT_RESTORE)
6376
system_get_bbram(SYSTEM_BBRAM_IDX_CHARGE_LIMIT_MAX, &charging_maximum_level);
6477

@@ -68,12 +81,16 @@ static void battery_percentage_control(void)
6881
charging_maximum_level = charging_maximum_level | 0x64;
6982
} else if (charging_maximum_level < 20)
7083
new_mode = CHARGE_CONTROL_NORMAL;
71-
else if (batt_os_percentage > charging_maximum_level * 10)
84+
else if (batt_os_percentage > charging_maximum_level * 10) {
7285
new_mode = CHARGE_CONTROL_DISCHARGE;
73-
else if (batt_os_percentage == charging_maximum_level * 10)
86+
in_percentage_control = 1;
87+
} else if (batt_os_percentage == charging_maximum_level * 10) {
7488
new_mode = CHARGE_CONTROL_IDLE;
75-
else
89+
in_percentage_control = 1;
90+
} else {
7691
new_mode = CHARGE_CONTROL_NORMAL;
92+
in_percentage_control = 0;
93+
}
7794

7895
set_chg_ctrl_mode(new_mode);
7996
#ifdef CONFIG_PLATFORM_EC_CHARGER_DISCHARGE_ON_AC

zephyr/program/lotus/lotus/src/battery.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ uint32_t get_system_percentage(void)
8484
uint32_t memmap_lfcc = *(uint32_t *)host_get_memmap(EC_MEMMAP_BATT_LFCC);
8585

8686
return 1000 * memmap_cap / (memmap_lfcc + 1);
87-
8887
}
8988

9089
static void battery_percentage_control(void)

0 commit comments

Comments
 (0)