diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2020-01-27 18:45:18 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-28 23:51:33 +0000 |
commit | 9c853d14068fe636a24c2c670f6f278851117f89 (patch) | |
tree | 02a7a72575d40cefab8f08ccbad3d03af6cb7ac0 /common/usb_pd_host_cmd.c | |
parent | 786dedfb15f333ac5a70b83a110eb37805f3be7d (diff) | |
download | chrome-ec-9c853d14068fe636a24c2c670f6f278851117f89.tar.gz |
TCPMv1/v2: Move EC_CMD_USB_PD_GET_AMODE host command to common file
BUG=b:142911453
BRANCH=none
TEST=make buildall -j
Change-Id: I0b9cb76adbc5e385cb20256f693bd2b0687b30de
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2024428
Reviewed-by: Keith Short <keithshort@chromium.org>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'common/usb_pd_host_cmd.c')
-rw-r--r-- | common/usb_pd_host_cmd.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/common/usb_pd_host_cmd.c b/common/usb_pd_host_cmd.c index 0a4f756e58..170482e10b 100644 --- a/common/usb_pd_host_cmd.c +++ b/common/usb_pd_host_cmd.c @@ -158,6 +158,39 @@ static enum ec_status hc_remote_pd_discovery(struct host_cmd_handler_args *args) DECLARE_HOST_COMMAND(EC_CMD_USB_PD_DISCOVERY, hc_remote_pd_discovery, EC_VER_MASK(0)); + +static enum ec_status hc_remote_pd_get_amode(struct host_cmd_handler_args *args) +{ + struct svdm_amode_data *modep; + const struct ec_params_usb_pd_get_mode_request *p = args->params; + struct ec_params_usb_pd_get_mode_response *r = args->response; + + if (p->port >= board_get_usb_pd_port_count()) + return EC_RES_INVALID_PARAM; + + /* no more to send */ + if (p->svid_idx >= pd_get_svid_count(p->port)) { + r->svid = 0; + args->response_size = sizeof(r->svid); + return EC_RES_SUCCESS; + } + + r->svid = pd_get_svid(p->port, p->svid_idx); + r->opos = 0; + memcpy(r->vdo, pd_get_mode_vdo(p->port, p->svid_idx), + sizeof(uint32_t) * PDO_MODES); + modep = pd_get_amode_data(p->port, r->svid); + + if (modep) + r->opos = pd_alt_mode(p->port, r->svid); + + args->response_size = sizeof(*r); + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_USB_PD_GET_AMODE, + hc_remote_pd_get_amode, + EC_VER_MASK(0)); + #endif /* CONFIG_USB_PD_ALT_MODE_DFP */ #ifdef CONFIG_COMMON_RUNTIME |