Skip to content

Commit 2f64e29

Browse files
authored
Merge pull request #492 from FrameworkComputer/hx30.implement_pd_no_support_cmd
Implement CYPD not_support command
2 parents f2bbcda + 193af68 commit 2f64e29

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

board/hx30/cypress5525.c

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -591,8 +591,9 @@ void cypd_send_msg(int controller, int port, uint32_t pd_header, uint16_t ext_hd
591591
cypd_write_reg_block(controller, CYP5525_WRITE_DATA_MEMORY_REG(port, 0),
592592
(void *)header, 4);
593593

594-
cypd_write_reg_block(controller, CYP5525_WRITE_DATA_MEMORY_REG(port, 4),
595-
data, data_size);
594+
if (data_size != 0)
595+
cypd_write_reg_block(controller, CYP5525_WRITE_DATA_MEMORY_REG(port, 4),
596+
data, data_size);
596597

597598
/**
598599
* The DM_CONTROL register should then be written to in the following format:
@@ -613,7 +614,8 @@ void cypd_send_msg(int controller, int port, uint32_t pd_header, uint16_t ext_hd
613614
dm_control_data |= CYP5525_DM_CTRL_PD3_DATA_REQUEST;
614615
if (!response_timer)
615616
dm_control_data |= CYP5525_DM_CTRL_SENDER_RESPONSE_TIMER_DISABLE;
616-
dm_control_data += ((data_size + 4) << 8);
617+
if (data_size != 0)
618+
dm_control_data += ((data_size + 4) << 8);
617619

618620
cypd_write_reg16(controller, CYP5525_DM_CONTROL_REG(port), dm_control_data);
619621
}
@@ -756,6 +758,15 @@ int cypd_response_get_battery_status(int controller, int port, uint32_t pd_heade
756758
return rv;
757759
}
758760

761+
void cypd_response_no_support_msg(int controller, int port, uint32_t pd_header,
762+
enum pd_msg_type sop_type)
763+
{
764+
uint32_t msg = 0;
765+
uint32_t header = PD_CTRL_NOT_SUPPORTED + PD_HEADER_SOP(sop_type);
766+
767+
cypd_send_msg(controller, port, header, 0, false, false, &msg, 0);
768+
}
769+
759770
int cypd_handle_extend_msg(int controller, int port, int len, enum pd_msg_type sop_type)
760771
{
761772
/**
@@ -804,6 +815,7 @@ int cypd_handle_extend_msg(int controller, int port, int len, enum pd_msg_type s
804815
CPRINTF("%02x", rx_emsg[port_idx].buf[i]);
805816
}
806817
CPRINTF("\n");
818+
cypd_response_no_support_msg(controller, port, pd_header, sop_type);
807819
rv = EC_ERROR_INVAL;
808820
break;
809821
}
@@ -2221,6 +2233,8 @@ static int cmd_cypd_msg(int argc, char **argv)
22212233

22222234
} else if (!strncmp(argv[2], "batterystatus", 13)) {
22232235
data[0] = PD_EXT_GET_BATTERY_STATUS; /*ext msg type*/
2236+
} else if (!strncmp(argv[2], "test", 4)) {
2237+
data[0] = 256; /*test for not_support command*/
22242238
}
22252239
/* ext msg header*/
22262240
data[1] = 0x01; /*data size*/
@@ -2243,5 +2257,5 @@ static int cmd_cypd_msg(int argc, char **argv)
22432257

22442258
}
22452259
DECLARE_CONSOLE_COMMAND(cypdmsg, cmd_cypd_msg,
2246-
"port [batterycap|batterystatus] chunked=1,0",
2260+
"port [batterycap|batterystatus|test] chunked=1,0",
22472261
"Trigger extended message ams");

0 commit comments

Comments
 (0)