diff options
author | Vijay Hiremath <vijay.p.hiremath@intel.com> | 2020-01-17 11:01:13 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-01-24 09:23:31 +0000 |
commit | a00bf6d576a993f36c0f8fce4c9764b6cfbc430d (patch) | |
tree | 72ba904d75c30896f864e97ace7ca65cd47ae24a /common/usb_pd_host_cmd.c | |
parent | 1f04b10f37eb6e4da944fc73b7dfc301b9fad28f (diff) | |
download | chrome-ec-a00bf6d576a993f36c0f8fce4c9764b6cfbc430d.tar.gz |
TCPMv1/v2: Move EC_CMD_USB_PD_RW_HASH_ENTRY host command to common file
BUG=b:142911453
BRANCH=none
TEST=make buildall -j
Change-Id: Ibcf7b23c9b4c166a59c00b4805d1fbad5e79e5f1
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2008298
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 | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/common/usb_pd_host_cmd.c b/common/usb_pd_host_cmd.c index f5da4070a5..db5684ad84 100644 --- a/common/usb_pd_host_cmd.c +++ b/common/usb_pd_host_cmd.c @@ -5,10 +5,16 @@ * Host commands for USB-PD module. */ +#include <string.h> + #include "ec_commands.h" #include "host_command.h" #include "usb_pd.h" +#ifdef CONFIG_COMMON_RUNTIME +struct ec_params_usb_pd_rw_hash_entry rw_hash_table[RW_HASH_ENTRIES]; +#endif /* CONFIG_COMMON_RUNTIME */ + #ifdef HAS_TASK_HOSTCMD static enum ec_status hc_pd_ports(struct host_cmd_handler_args *args) @@ -24,4 +30,38 @@ DECLARE_HOST_COMMAND(EC_CMD_USB_PD_PORTS, hc_pd_ports, EC_VER_MASK(0)); +#ifdef CONFIG_HOSTCMD_RWHASHPD +static enum ec_status +hc_remote_rw_hash_entry(struct host_cmd_handler_args *args) +{ + int i, idx = 0, found = 0; + const struct ec_params_usb_pd_rw_hash_entry *p = args->params; + static int rw_hash_next_idx; + + if (!p->dev_id) + return EC_RES_INVALID_PARAM; + + for (i = 0; i < RW_HASH_ENTRIES; i++) { + if (p->dev_id == rw_hash_table[i].dev_id) { + idx = i; + found = 1; + break; + } + } + + if (!found) { + idx = rw_hash_next_idx; + rw_hash_next_idx = rw_hash_next_idx + 1; + if (rw_hash_next_idx == RW_HASH_ENTRIES) + rw_hash_next_idx = 0; + } + memcpy(&rw_hash_table[idx], p, sizeof(*p)); + + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_USB_PD_RW_HASH_ENTRY, + hc_remote_rw_hash_entry, + EC_VER_MASK(0)); +#endif /* CONFIG_HOSTCMD_RWHASHPD */ + #endif /* HAS_TASK_HOSTCMD */ |