summaryrefslogtreecommitdiff
path: root/common/usb_pd_host_cmd.c
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2020-01-17 11:01:13 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-24 09:23:31 +0000
commita00bf6d576a993f36c0f8fce4c9764b6cfbc430d (patch)
tree72ba904d75c30896f864e97ace7ca65cd47ae24a /common/usb_pd_host_cmd.c
parent1f04b10f37eb6e4da944fc73b7dfc301b9fad28f (diff)
downloadchrome-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.c40
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 */