diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2015-01-20 21:16:05 -0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-01-30 03:28:25 +0000 |
commit | fab110efe4f57e1a1a5f18119c5f65c551e01813 (patch) | |
tree | 91963c8410b07fcfbd75292d807365cbea4118a7 | |
parent | 3e4541d479cef2ffce8362c5f28184e55e0a1375 (diff) | |
download | chrome-ec-fab110efe4f57e1a1a5f18119c5f65c551e01813.tar.gz |
pd: export the data role to the AP
For dual-role USB ports (host/device), let the AP know whether we are
currently DFP (USB host) or UFP (USB device) by exporting the data role
in addition to the power role in the EC_CMD_USB_PD_CONTROL response.
Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
BRANCH=samus
BUG=none
TEST=ectool --name=cros_pd usbpd 0
plug various accessories on the port and see properly "SRC DFP" for the
USB key, "SNK DFP" for the power supply and "SNK UFP" for a regular
C-to-A charging cable.
Reviewed-on: https://chromium-review.googlesource.com/242012
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Trybot-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Commit-Queue: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 9e07dfb6cb7391844dfd56ba856b30329318f05e)
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Original-Change-Id: I292da15fa8cf3566109dd05995ef1d00bed6f92d
Reviewed-on: https://chromium-review.googlesource.com/242128
Tested-by: Duncan Laurie <dlaurie@chromium.org>
Commit-Queue: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
(cherry picked from commit 2808539c0ff1aa4ac693b85bcef70aa23a9e1cd5)
Signed-off-by: Todd Broch <tbroch@chromium.org>
Change-Id: I8ccad1109b03a202c6bc0c43121f5f9a7f381759
Reviewed-on: https://chromium-review.googlesource.com/244228
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Commit-Queue: Todd Broch <tbroch@chromium.org>
-rw-r--r-- | common/usb_pd_protocol.c | 3 | ||||
-rw-r--r-- | include/ec_commands.h | 2 | ||||
-rw-r--r-- | util/ectool.c | 7 |
3 files changed, 7 insertions, 5 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 76d08be20f..e1890ddb2d 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -3213,7 +3213,8 @@ static int hc_usb_pd_control(struct host_cmd_handler_args *args) args->response_size = sizeof(*r); } else { r_v1->enabled = pd_comm_enabled; - r_v1->role = pd[p->port].power_role; + r_v1->role = pd[p->port].power_role | + (pd[p->port].data_role << 1); r_v1->polarity = pd[p->port].polarity; strzcpy(r_v1->state, pd_state_names[pd[p->port].task_state], diff --git a/include/ec_commands.h b/include/ec_commands.h index 1c4efdfdcc..18e9e454f7 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -2741,7 +2741,7 @@ struct ec_response_usb_pd_control { struct ec_response_usb_pd_control_v1 { uint8_t enabled; - uint8_t role; + uint8_t role; /* [0] power: 0=SNK/1=SRC [1] data: 0=UFP/1=DFP */ uint8_t polarity; char state[32]; } __packed; diff --git a/util/ectool.c b/util/ectool.c index 2062ac7888..52b9eedf31 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -3136,9 +3136,10 @@ int cmd_usb_pd(int argc, char *argv[]) r->role == PD_ROLE_SOURCE ? "SRC" : "SNK", r->polarity + 1, r->state); } else { - printf("Port C%d is %sabled, Role:%s Polarity:CC%d State:%s\n", - p.port, (r_v1->enabled) ? "en" : "dis", - r_v1->role == PD_ROLE_SOURCE ? "SRC" : "SNK", + printf("Port C%d is %s, Role:%s %s Polarity:CC%d State:%s\n", + p.port, (r_v1->enabled) ? "enabled" : "disabled", + r_v1->role & PD_ROLE_SOURCE ? "SRC" : "SNK", + r_v1->role & (PD_ROLE_DFP << 1) ? "DFP" : "UFP", r_v1->polarity + 1, r_v1->state); } return (rv < 0 ? rv : 0); |