Skip to content

Commit 3da0181

Browse files
committed
do not set ext power enabled when no battery
pd controller seems to have modified behavior from ccg6 so that when a port is configured as a sink and extpower is present it will exit dead battery mode. Causing system cannot power on in standalone mode. Do not set extpower present on controller that is sinking power in standalone mode Signed-off-by: Kieran Levin <ktl@frame.work>
1 parent a0d0aa5 commit 3da0181

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

zephyr/program/lotus/src/cypress_pd_common.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -893,17 +893,20 @@ static int cypd_update_power_status(int controller)
893893
int i;
894894
int rv = EC_SUCCESS;
895895
int power_stat = 0;
896-
897-
if (battery_is_present() == BP_YES)
898-
power_stat |= BIT(3);
899-
if (extpower_is_present())
900-
power_stat |= BIT(1) + BIT(2);
896+
int pd_controller_is_sink = (prev_charge_port & 0x02) >> 1;
901897

902898
CPRINTS("C%d, %s power_stat 0x%x", controller, __func__, power_stat);
903899
if (controller < PD_CHIP_COUNT)
904900
rv = cypd_write_reg8_wait_ack(controller, CCG_POWER_STAT, power_stat);
905901
else {
906902
for (i = 0; i < PD_CHIP_COUNT; i++) {
903+
power_stat = 0;
904+
if (battery_is_present() == BP_YES)
905+
power_stat |= BIT(3);
906+
if ((extpower_is_present() && battery_is_present() == BP_YES) ||
907+
(extpower_is_present() && i != pd_controller_is_sink && prev_charge_port >=0))
908+
power_stat |= BIT(1) + BIT(2);
909+
907910
rv = cypd_write_reg8_wait_ack(i, CCG_POWER_STAT, power_stat);
908911
if (rv != EC_SUCCESS)
909912
break;
@@ -1080,7 +1083,7 @@ static void cypd_handle_state(int controller)
10801083
cypd_get_version(controller);
10811084
cypd_update_power_status(controller);
10821085

1083-
//update_system_power_state(controller);
1086+
update_system_power_state(controller);
10841087
cypd_setup(controller);
10851088

10861089
/* After initial complete, update the type-c port state */
@@ -1089,7 +1092,6 @@ static void cypd_handle_state(int controller)
10891092

10901093
ucsi_startup(controller);
10911094

1092-
update_system_power_state(controller);
10931095
gpio_enable_interrupt(pd_chip_config[controller].gpio);
10941096

10951097
/* Update PDO format after init complete */

0 commit comments

Comments
 (0)