Skip to content

Commit b46f825

Browse files
committed
[fix] 4 ports leakage
We need to turn off other ports everytime we choose one. TEST= different pd controller: no ac-> plug 60w ac to p1 (charge from 60w, and usb power meter 60w= 20V*1.1A)-> plug 45w ac to p2 (charge from 60w, and usb power meter 60w= 20V*1.1A; 45w= 15V*0.001A)-> remove 60w ac from p1 (charge from 45w, and usb power meter 45w= 15V*1.5A)-> plug 60w ac to p1 (charge from 60w, and usb power meter 60w= 20V*1.1A; 45w= 15V*0.001A)-> remove 45w ac from p2 (charge from 60w, and usb power meter 60w= 20V*1.1A). same pd controller; no ac-> plug 60w ac to p1 (charge from 60w, and usb power meter 60w= 20V*1.1A)-> plug 45w ac to p0 (charge from 60w, and usb power meter 60w= 20V*1.1A; 45w= 15V*0.001A)-> remove 60w ac from p1 (charge from 45w, and usb power meter 45w= 15V*1.5A)-> plug 60w ac to p1 (charge from 60w, and usb power meter 60w= 20V*1.1A; 45w= 15V*0.001A)-> remove 45w ac from p0 (charge from 60w, and usb power meter 60w= 20V*1.1A). Signed-off-by: elmo_lan <hplan1112@gmail.com>
1 parent 9acadbf commit b46f825

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

board/hx30/cypress5525.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,12 +1426,12 @@ DECLARE_DEFERRED(update_power_limit_deferred);
14261426
static int prev_charge_port = -1;
14271427
int board_set_active_charge_port(int charge_port)
14281428
{
1429-
ccprintf("start change port = %d", charge_port);
1429+
CPRINTS("start change port = %d, prev_charge_port = %d", charge_port, prev_charge_port);
14301430

14311431
/* port need change, stop all power and ready to switch. */
14321432
if (prev_charge_port != -1 && prev_charge_port != charge_port) {
14331433
update_soc_power_limit(false, true);
1434-
ccprintf("%s: all off", __func__);
1434+
CPRINTS("all off");
14351435
cypd_write_reg8(0, CYP5525_CUST_C_CTRL_CONTROL_REG, CYP5525_P0P1_TURN_OFF_C_CTRL);
14361436
cypd_write_reg8(1, CYP5525_CUST_C_CTRL_CONTROL_REG, CYP5525_P0P1_TURN_OFF_C_CTRL);
14371437
usleep(250*MSEC);
@@ -1444,12 +1444,14 @@ int board_set_active_charge_port(int charge_port)
14441444
int pd_controller = (charge_port & 0x02) >> 1;
14451445
int pd_port = charge_port & 0x01;
14461446

1447-
ccprintf("%s: choose port %d", __func__, charge_port);
1448-
ccprintf("%s: controller = %d, port = %d", __func__, pd_controller, pd_port);
1447+
CPRINTS("choose p %d, ctrler = %d, p = %d", charge_port, pd_controller, pd_port);
14491448
cypd_write_reg8(pd_controller, CYP5525_CUST_C_CTRL_CONTROL_REG,
14501449
pd_port ? CYP5525_P0_OFF_P1_CY : CYP5525_P0_CY_P1_OFF);
1450+
CPRINTS("force off ctrler = %d", (~pd_controller) & 0x01);
1451+
cypd_write_reg8((~pd_controller) & 0x01, CYP5525_CUST_C_CTRL_CONTROL_REG,
1452+
CYP5525_P0P1_TURN_OFF_C_CTRL);
14511453
} else {
1452-
ccprintf("%s: else = %d, set all ports auto", __func__, charge_port);
1454+
CPRINTS("else = %d, set all ports auto", charge_port);
14531455
cypd_write_reg8(0, CYP5525_CUST_C_CTRL_CONTROL_REG, CYP5525_P0P1_CONTROL_BY_CY);
14541456
cypd_write_reg8(1, CYP5525_CUST_C_CTRL_CONTROL_REG, CYP5525_P0P1_CONTROL_BY_CY);
14551457
}

0 commit comments

Comments
 (0)