diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2020-01-17 11:53:22 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-24 09:23:33 +0000 |
commit | 1a7e28d8d7c0539dd4a29d10932a8a4b802d36e9 (patch) | |
tree | 885de895df61cce96481997be5ba6994925fe8c5 /common/usb_pd_host_cmd.c | |
parent | b7e9d202eb32d769962b3fe12c9c1ca745a8ee64 (diff) | |
download | chrome-ec-1a7e28d8d7c0539dd4a29d10932a8a4b802d36e9.tar.gz |
TCPMv1/v2: Move EC_CMD_USB_PD_SET_AMODE host command to common file
BUG=b:142911453
BRANCH=none
TEST=make buildall -j
Change-Id: Id5cb4475a4bdf37947a6b1484441dadb7aa2d214
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2008300
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'common/usb_pd_host_cmd.c')
-rw-r--r-- | common/usb_pd_host_cmd.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/common/usb_pd_host_cmd.c b/common/usb_pd_host_cmd.c index 88ba888f48..1b08d522d0 100644 --- a/common/usb_pd_host_cmd.c +++ b/common/usb_pd_host_cmd.c @@ -7,6 +7,7 @@ #include <string.h> +#include "console.h" #include "ec_commands.h" #include "host_command.h" #include "tcpm.h" @@ -15,6 +16,12 @@ #ifdef CONFIG_COMMON_RUNTIME struct ec_params_usb_pd_rw_hash_entry rw_hash_table[RW_HASH_ENTRIES]; + +#define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) +#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) +#else /* CONFIG_COMMON_RUNTIME */ +#define CPRINTF(format, args...) +#define CPRINTS(format, args...) #endif /* CONFIG_COMMON_RUNTIME */ #ifdef HAS_TASK_HOSTCMD @@ -97,4 +104,38 @@ DECLARE_HOST_COMMAND(EC_CMD_PD_CHIP_INFO, #endif /* CONFIG_EC_CMD_PD_CHIP_INFO */ #endif /* CONFIG_USB_PD_TCPC */ +#ifdef CONFIG_USB_PD_ALT_MODE_DFP +static enum ec_status hc_remote_pd_set_amode(struct host_cmd_handler_args *args) +{ + const struct ec_params_usb_pd_set_mode_request *p = args->params; + + if ((p->port >= board_get_usb_pd_port_count()) || + (!p->svid) || (!p->opos)) + return EC_RES_INVALID_PARAM; + + switch (p->cmd) { + case PD_EXIT_MODE: + if (pd_dfp_exit_mode(p->port, p->svid, p->opos)) + pd_send_vdm(p->port, p->svid, + CMD_EXIT_MODE | VDO_OPOS(p->opos), NULL, 0); + else { + CPRINTF("Failed exit mode\n"); + return EC_RES_ERROR; + } + break; + case PD_ENTER_MODE: + if (pd_dfp_enter_mode(p->port, p->svid, p->opos)) + pd_send_vdm(p->port, p->svid, CMD_ENTER_MODE | + VDO_OPOS(p->opos), NULL, 0); + break; + default: + return EC_RES_INVALID_PARAM; + } + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_USB_PD_SET_AMODE, + hc_remote_pd_set_amode, + EC_VER_MASK(0)); +#endif /* CONFIG_USB_PD_ALT_MODE_DFP */ + #endif /* HAS_TASK_HOSTCMD */ |