summaryrefslogtreecommitdiff
path: root/board/samus_pd/usb_pd_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/samus_pd/usb_pd_policy.c')
-rw-r--r--board/samus_pd/usb_pd_policy.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c
index a99900b307..eeac9362cf 100644
--- a/board/samus_pd/usb_pd_policy.c
+++ b/board/samus_pd/usb_pd_policy.c
@@ -183,6 +183,37 @@ static void dual_role_force_sink(void)
}
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dual_role_force_sink, HOOK_PRIO_DEFAULT);
+/* ----------------- Vendor Defined Messages ------------------ */
+int pd_custom_vdm(int port, int cnt, uint32_t *payload, uint32_t **rpayload)
+{
+ int cmd = PD_VDO_CMD(payload[0]);
+ int i;
+ ccprintf("VDM/%d [%d] %08x\n", cnt, cmd, payload[0]);
+
+ /* make sure we have some payload */
+ if (cnt == 0)
+ return 0;
+
+ switch (cmd) {
+ case VDO_CMD_VERSION:
+ /* guarantee last byte of payload is null character */
+ *(payload + cnt - 1) = 0;
+ ccprintf("version: %s\n", (char *)(payload+1));
+ break;
+ case VDO_CMD_RW_HASH:
+ ccprintf("RW Hash: ");
+ payload++; /* skip cmd */
+ for (i = 0; i < cnt - 1; i++)
+ ccprintf("%08x ", *payload++);
+ ccprintf("\n");
+ break;
+ }
+
+ return 0;
+}
+
+/****************************************************************************/
+/* Console commands */
static int command_ec_int(int argc, char **argv)
{
pd_send_ec_int();
@@ -194,6 +225,8 @@ DECLARE_CONSOLE_COMMAND(ecint, command_ec_int,
"Toggle EC interrupt line",
NULL);
+/****************************************************************************/
+/* Host commands */
static int ec_status_host_cmd(struct host_cmd_handler_args *args)
{
const struct ec_params_pd_status *p = args->params;