// SPDX-License-Identifier: GPL-2.0 #define CREATE_TRACE_POINTS #include "ucsi.h" #include "trace.h" static const char * const ucsi_cmd_strs[] = { [0] = "Unknown command", [UCSI_PPM_RESET] = "PPM_RESET", [UCSI_CANCEL] = "CANCEL", [UCSI_CONNECTOR_RESET] = "CONNECTOR_RESET", [UCSI_ACK_CC_CI] = "ACK_CC_CI", [UCSI_SET_NOTIFICATION_ENABLE] = "SET_NOTIFICATION_ENABLE", [UCSI_GET_CAPABILITY] = "GET_CAPABILITY", [UCSI_GET_CONNECTOR_CAPABILITY] = "GET_CONNECTOR_CAPABILITY", [UCSI_SET_UOM] = "SET_UOM", [UCSI_SET_UOR] = "SET_UOR", [UCSI_SET_PDM] = "SET_PDM", [UCSI_SET_PDR] = "SET_PDR", [UCSI_GET_ALTERNATE_MODES] = "GET_ALTERNATE_MODES", [UCSI_GET_CAM_SUPPORTED] = "GET_CAM_SUPPORTED", [UCSI_GET_CURRENT_CAM] = "GET_CURRENT_CAM", [UCSI_SET_NEW_CAM] = "SET_NEW_CAM", [UCSI_GET_PDOS] = "GET_PDOS", [UCSI_GET_CABLE_PROPERTY] = "GET_CABLE_PROPERTY", [UCSI_GET_CONNECTOR_STATUS] = "GET_CONNECTOR_STATUS", [UCSI_GET_ERROR_STATUS] = "GET_ERROR_STATUS", }; const char *ucsi_cmd_str(u64 raw_cmd) { u8 cmd = raw_cmd & GENMASK(7, 0); return ucsi_cmd_strs[(cmd >= ARRAY_SIZE(ucsi_cmd_strs)) ? 0 : cmd]; } const char *ucsi_cci_str(u32 cci) { if (UCSI_CCI_CONNECTOR(cci)) { if (cci & UCSI_CCI_ACK_COMPLETE) return "Event pending (ACK completed)"; if (cci & UCSI_CCI_COMMAND_COMPLETE) return "Event pending (command completed)"; return "Connector Change"; } if (cci & UCSI_CCI_ACK_COMPLETE) return "ACK completed"; if (cci & UCSI_CCI_COMMAND_COMPLETE) return "Command completed"; return ""; } static const char * const ucsi_recipient_strs[] = { [UCSI_RECIPIENT_CON] = "port", [UCSI_RECIPIENT_SOP] = "partner", [UCSI_RECIPIENT_SOP_P] = "plug (prime)", [UCSI_RECIPIENT_SOP_PP] = "plug (double prime)", }; const char *ucsi_recipient_str(u8 recipient) { return ucsi_recipient_strs[recipient]; }