1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __UCSI_DEBUG_H
3 #define __UCSI_DEBUG_H
4
5 #include "ucsi.h"
6
7 static const char * const ucsi_cmd_strs[] = {
8 [0] = "Unknown command",
9 [UCSI_PPM_RESET] = "PPM_RESET",
10 [UCSI_CANCEL] = "CANCEL",
11 [UCSI_CONNECTOR_RESET] = "CONNECTOR_RESET",
12 [UCSI_ACK_CC_CI] = "ACK_CC_CI",
13 [UCSI_SET_NOTIFICATION_ENABLE] = "SET_NOTIFICATION_ENABLE",
14 [UCSI_GET_CAPABILITY] = "GET_CAPABILITY",
15 [UCSI_GET_CONNECTOR_CAPABILITY] = "GET_CONNECTOR_CAPABILITY",
16 [UCSI_SET_UOM] = "SET_UOM",
17 [UCSI_SET_UOR] = "SET_UOR",
18 [UCSI_SET_PDM] = "SET_PDM",
19 [UCSI_SET_PDR] = "SET_PDR",
20 [UCSI_GET_ALTERNATE_MODES] = "GET_ALTERNATE_MODES",
21 [UCSI_GET_CAM_SUPPORTED] = "GET_CAM_SUPPORTED",
22 [UCSI_GET_CURRENT_CAM] = "GET_CURRENT_CAM",
23 [UCSI_SET_NEW_CAM] = "SET_NEW_CAM",
24 [UCSI_GET_PDOS] = "GET_PDOS",
25 [UCSI_GET_CABLE_PROPERTY] = "GET_CABLE_PROPERTY",
26 [UCSI_GET_CONNECTOR_STATUS] = "GET_CONNECTOR_STATUS",
27 [UCSI_GET_ERROR_STATUS] = "GET_ERROR_STATUS",
28 };
29
ucsi_cmd_str(u64 raw_cmd)30 static inline const char *ucsi_cmd_str(u64 raw_cmd)
31 {
32 u8 cmd = raw_cmd & GENMASK(7, 0);
33
34 return ucsi_cmd_strs[(cmd >= ARRAY_SIZE(ucsi_cmd_strs)) ? 0 : cmd];
35 }
36
37 static const char * const ucsi_ack_strs[] = {
38 [0] = "",
39 [UCSI_ACK_EVENT] = "event",
40 [UCSI_ACK_CMD] = "command",
41 };
42
ucsi_ack_str(u8 ack)43 static inline const char *ucsi_ack_str(u8 ack)
44 {
45 return ucsi_ack_strs[(ack >= ARRAY_SIZE(ucsi_ack_strs)) ? 0 : ack];
46 }
47
ucsi_cci_str(u32 cci)48 static inline const char *ucsi_cci_str(u32 cci)
49 {
50 if (cci & GENMASK(7, 0)) {
51 if (cci & BIT(29))
52 return "Event pending (ACK completed)";
53 if (cci & BIT(31))
54 return "Event pending (command completed)";
55 return "Connector Change";
56 }
57 if (cci & BIT(29))
58 return "ACK completed";
59 if (cci & BIT(31))
60 return "Command completed";
61
62 return "";
63 }
64
65 #endif /* __UCSI_DEBUG_H */
66