File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -327,6 +327,25 @@ void check_ucsi_event_from_host(void)
327327 cci = & pd_chip_ucsi_info [1 ].cci ;
328328 }
329329
330+
331+ /* Fix UCSI stopping responding to right side ports
332+ * the standard says the CCI connector change indicator field
333+ * should be 0 for ACK_CC_CI, however our controller responds with
334+ * the port number populated for the port with the valid response
335+ * so choose this response as a priority when we get an ack from
336+ * both controllers
337+ */
338+ if (pd_chip_ucsi_info [1 ].read_tunnel_complete &&
339+ pd_chip_ucsi_info [0 ].read_tunnel_complete ) {
340+ if (pd_chip_ucsi_info [0 ].cci & 0xFE ) {
341+ message_in = pd_chip_ucsi_info [0 ].message_in ;
342+ cci = & pd_chip_ucsi_info [0 ].cci ;
343+ } else if (pd_chip_ucsi_info [1 ].cci & 0xFE ) {
344+ message_in = pd_chip_ucsi_info [1 ].message_in ;
345+ cci = & pd_chip_ucsi_info [1 ].cci ;
346+ }
347+ }
348+
330349 if (
331350 * host_get_customer_memmap (EC_MEMMAP_UCSI_COMMAND ) == UCSI_CMD_GET_CONNECTOR_STATUS &&
332351 (((uint8_t * )message_in )[8 ] & 0x03 ) > 1 )
You can’t perform that action at this time.
0 commit comments