@@ -1766,6 +1766,11 @@ int board_set_active_charge_port(int charge_port)
17661766{
17671767 CPRINTS ("start change port = %d, prev_charge_port = %d" , charge_port , prev_charge_port );
17681768
1769+ if (board_batt_is_present () != BP_YES ) {
1770+ CPRINTS ("No batt, no change" );
1771+ return EC_ERROR_NOT_POWERED ;
1772+ }
1773+
17691774 /* port need change, stop all power and ready to switch. */
17701775 if (prev_charge_port != -1 && prev_charge_port != charge_port ) {
17711776 update_soc_power_limit (false, true);
@@ -1782,16 +1787,16 @@ int board_set_active_charge_port(int charge_port)
17821787 int pd_controller = (charge_port & 0x02 ) >> 1 ;
17831788 int pd_port = charge_port & 0x01 ;
17841789
1785- CPRINTS ("choose p %d, ctrler = %d, p = %d" , charge_port , pd_controller , pd_port );
1786- cypd_write_reg8 (pd_controller , CYP5525_CUST_C_CTRL_CONTROL_REG ,
1787- pd_port ? CYP5525_P0_OFF_P1_CY : CYP5525_P0_CY_P1_OFF );
17881790 CPRINTS ("force off ctrler = %d" , (~pd_controller ) & 0x01 );
17891791 cypd_write_reg8 ((~pd_controller ) & 0x01 , CYP5525_CUST_C_CTRL_CONTROL_REG ,
17901792 CYP5525_P0P1_TURN_OFF_C_CTRL );
1793+ CPRINTS ("choose p %d, ctrler = %d, p = %d" , charge_port , pd_controller , pd_port );
1794+ cypd_write_reg8 (pd_controller , CYP5525_CUST_C_CTRL_CONTROL_REG ,
1795+ pd_port ? CYP5525_P0_OFF_P1_CY : CYP5525_P0_CY_P1_OFF );
17911796 } else {
17921797 CPRINTS ("else = %d, set all ports auto" , charge_port );
1793- cypd_write_reg8 (0 , CYP5525_CUST_C_CTRL_CONTROL_REG , CYP5525_P0P1_CONTROL_BY_CY );
1794- cypd_write_reg8 (1 , CYP5525_CUST_C_CTRL_CONTROL_REG , CYP5525_P0P1_CONTROL_BY_CY );
1798+ cypd_write_reg8 (0 , CYP5525_CUST_C_CTRL_CONTROL_REG , CYP5525_P0P1_TURN_OFF_C_CTRL );
1799+ cypd_write_reg8 (1 , CYP5525_CUST_C_CTRL_CONTROL_REG , CYP5525_P0P1_TURN_OFF_C_CTRL );
17951800 }
17961801
17971802 hook_call_deferred (& update_power_limit_deferred_data , 100 * MSEC );
0 commit comments