diff options
Diffstat (limited to 'common/usbc')
-rw-r--r-- | common/usbc/usb_pd_dpm.c | 2 | ||||
-rw-r--r-- | common/usbc/usb_pd_host.c | 21 | ||||
-rw-r--r-- | common/usbc/usb_pe_drp_sm.c | 2 |
3 files changed, 19 insertions, 6 deletions
diff --git a/common/usbc/usb_pd_dpm.c b/common/usbc/usb_pd_dpm.c index 0c2bfe3b25..fc01783b87 100644 --- a/common/usbc/usb_pd_dpm.c +++ b/common/usbc/usb_pd_dpm.c @@ -1041,7 +1041,7 @@ int dpm_get_status_msg(int port, uint8_t *msg, uint32_t *len) /* Power Status */ sdb.power_status = 0x0; - partner_rmdo = pe_get_partner_rmdo(port); + partner_rmdo = pd_get_partner_rmdo(port); if ((partner_rmdo.major_rev == 3 && partner_rmdo.minor_rev >= 1) || partner_rmdo.major_rev > 3) { /* USB PD Rev 3.1: 6.5.2 Status Message */ diff --git a/common/usbc/usb_pd_host.c b/common/usbc/usb_pd_host.c index bf891cf5ed..2c08aee302 100644 --- a/common/usbc/usb_pd_host.c +++ b/common/usbc/usb_pd_host.c @@ -210,10 +210,23 @@ static enum ec_status hc_typec_status(struct host_cmd_handler_args *args) r->events = pd_get_events(p->port); - r->sop_revision = r->sop_connected ? - PD_STATUS_REV_SET_MAJOR( - pd_get_rev(p->port, TCPCI_MSG_SOP)) : - 0; + if (pd_get_partner_rmdo(p->port).major_rev != 0) { + r->sop_revision = + PD_STATUS_RMDO_REV_SET_MAJOR( + pd_get_partner_rmdo(p->port).major_rev) | + PD_STATUS_RMDO_REV_SET_MINOR( + pd_get_partner_rmdo(p->port).minor_rev) | + PD_STATUS_RMDO_VER_SET_MAJOR( + pd_get_partner_rmdo(p->port).major_ver) | + PD_STATUS_RMDO_VER_SET_MINOR( + pd_get_partner_rmdo(p->port).minor_ver); + } else if (r->sop_connected) { + r->sop_revision = PD_STATUS_REV_SET_MAJOR( + pd_get_rev(p->port, TCPCI_MSG_SOP)); + } else { + r->sop_revision = 0; + } + r->sop_prime_revision = pd_get_identity_discovery(p->port, TCPCI_MSG_SOP_PRIME) == PD_DISC_COMPLETE ? diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c index 0714213cbd..a505a4922d 100644 --- a/common/usbc/usb_pe_drp_sm.c +++ b/common/usbc/usb_pe_drp_sm.c @@ -1459,7 +1459,7 @@ void pe_clear_ado(int port) mutex_unlock(&pe[port].ado_lock); } -struct rmdo pe_get_partner_rmdo(int port) +struct rmdo pd_get_partner_rmdo(int port) { return pe[port].partner_rmdo; } |