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