summaryrefslogtreecommitdiff
path: root/board/fruitpie/usb_pd_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/fruitpie/usb_pd_policy.c')
-rw-r--r--board/fruitpie/usb_pd_policy.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/board/fruitpie/usb_pd_policy.c b/board/fruitpie/usb_pd_policy.c
index 0ddeed9916..9ae9720db2 100644
--- a/board/fruitpie/usb_pd_policy.c
+++ b/board/fruitpie/usb_pd_policy.c
@@ -127,3 +127,33 @@ int pd_power_negotiation_allowed(void)
{
return 1;
}
+
+/* ----------------- 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;
+}
+