linux/drivers/usb/typec/ucsi/trace.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2
   3#undef TRACE_SYSTEM
   4#define TRACE_SYSTEM ucsi
   5
   6#if !defined(__UCSI_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
   7#define __UCSI_TRACE_H
   8
   9#include <linux/tracepoint.h>
  10#include <linux/usb/typec_altmode.h>
  11
  12const char *ucsi_cmd_str(u64 raw_cmd);
  13const char *ucsi_ack_str(u8 ack);
  14const char *ucsi_cci_str(u32 cci);
  15const char *ucsi_recipient_str(u8 recipient);
  16
  17DECLARE_EVENT_CLASS(ucsi_log_ack,
  18        TP_PROTO(u8 ack),
  19        TP_ARGS(ack),
  20        TP_STRUCT__entry(
  21                __field(u8, ack)
  22        ),
  23        TP_fast_assign(
  24                __entry->ack = ack;
  25        ),
  26        TP_printk("ACK %s", ucsi_ack_str(__entry->ack))
  27);
  28
  29DEFINE_EVENT(ucsi_log_ack, ucsi_ack,
  30        TP_PROTO(u8 ack),
  31        TP_ARGS(ack)
  32);
  33
  34DECLARE_EVENT_CLASS(ucsi_log_control,
  35        TP_PROTO(struct ucsi_control *ctrl),
  36        TP_ARGS(ctrl),
  37        TP_STRUCT__entry(
  38                __field(u64, ctrl)
  39        ),
  40        TP_fast_assign(
  41                __entry->ctrl = ctrl->raw_cmd;
  42        ),
  43        TP_printk("control=%08llx (%s)", __entry->ctrl,
  44                ucsi_cmd_str(__entry->ctrl))
  45);
  46
  47DEFINE_EVENT(ucsi_log_control, ucsi_command,
  48        TP_PROTO(struct ucsi_control *ctrl),
  49        TP_ARGS(ctrl)
  50);
  51
  52DECLARE_EVENT_CLASS(ucsi_log_command,
  53        TP_PROTO(struct ucsi_control *ctrl, int ret),
  54        TP_ARGS(ctrl, ret),
  55        TP_STRUCT__entry(
  56                __field(u64, ctrl)
  57                __field(int, ret)
  58        ),
  59        TP_fast_assign(
  60                __entry->ctrl = ctrl->raw_cmd;
  61                __entry->ret = ret;
  62        ),
  63        TP_printk("%s -> %s (err=%d)", ucsi_cmd_str(__entry->ctrl),
  64                __entry->ret < 0 ? "FAIL" : "OK",
  65                __entry->ret < 0 ? __entry->ret : 0)
  66);
  67
  68DEFINE_EVENT(ucsi_log_command, ucsi_run_command,
  69        TP_PROTO(struct ucsi_control *ctrl, int ret),
  70        TP_ARGS(ctrl, ret)
  71);
  72
  73DEFINE_EVENT(ucsi_log_command, ucsi_reset_ppm,
  74        TP_PROTO(struct ucsi_control *ctrl, int ret),
  75        TP_ARGS(ctrl, ret)
  76);
  77
  78DECLARE_EVENT_CLASS(ucsi_log_cci,
  79        TP_PROTO(u32 cci),
  80        TP_ARGS(cci),
  81        TP_STRUCT__entry(
  82                __field(u32, cci)
  83        ),
  84        TP_fast_assign(
  85                __entry->cci = cci;
  86        ),
  87        TP_printk("CCI=%08x %s", __entry->cci, ucsi_cci_str(__entry->cci))
  88);
  89
  90DEFINE_EVENT(ucsi_log_cci, ucsi_notify,
  91        TP_PROTO(u32 cci),
  92        TP_ARGS(cci)
  93);
  94
  95DECLARE_EVENT_CLASS(ucsi_log_connector_status,
  96        TP_PROTO(int port, struct ucsi_connector_status *status),
  97        TP_ARGS(port, status),
  98        TP_STRUCT__entry(
  99                __field(int, port)
 100                __field(u16, change)
 101                __field(u8, opmode)
 102                __field(u8, connected)
 103                __field(u8, pwr_dir)
 104                __field(u8, partner_flags)
 105                __field(u8, partner_type)
 106                __field(u32, request_data_obj)
 107                __field(u8, bc_status)
 108        ),
 109        TP_fast_assign(
 110                __entry->port = port - 1;
 111                __entry->change = status->change;
 112                __entry->opmode = status->pwr_op_mode;
 113                __entry->connected = status->connected;
 114                __entry->pwr_dir = status->pwr_dir;
 115                __entry->partner_flags = status->partner_flags;
 116                __entry->partner_type = status->partner_type;
 117                __entry->request_data_obj = status->request_data_obj;
 118                __entry->bc_status = status->bc_status;
 119        ),
 120        TP_printk("port%d status: change=%04x, opmode=%x, connected=%d, "
 121                "sourcing=%d, partner_flags=%x, partner_type=%x, "
 122                "request_data_obj=%08x, BC status=%x", __entry->port,
 123                __entry->change, __entry->opmode, __entry->connected,
 124                __entry->pwr_dir, __entry->partner_flags, __entry->partner_type,
 125                __entry->request_data_obj, __entry->bc_status)
 126);
 127
 128DEFINE_EVENT(ucsi_log_connector_status, ucsi_connector_change,
 129        TP_PROTO(int port, struct ucsi_connector_status *status),
 130        TP_ARGS(port, status)
 131);
 132
 133DEFINE_EVENT(ucsi_log_connector_status, ucsi_register_port,
 134        TP_PROTO(int port, struct ucsi_connector_status *status),
 135        TP_ARGS(port, status)
 136);
 137
 138DECLARE_EVENT_CLASS(ucsi_log_register_altmode,
 139        TP_PROTO(u8 recipient, struct typec_altmode *alt),
 140        TP_ARGS(recipient, alt),
 141        TP_STRUCT__entry(
 142                __field(u8, recipient)
 143                __field(u16, svid)
 144                __field(u8, mode)
 145                __field(u32, vdo)
 146        ),
 147        TP_fast_assign(
 148                __entry->recipient = recipient;
 149                __entry->svid = alt->svid;
 150                __entry->mode = alt->mode;
 151                __entry->vdo = alt->vdo;
 152        ),
 153        TP_printk("%s alt mode: svid %04x, mode %d vdo %x",
 154                  ucsi_recipient_str(__entry->recipient), __entry->svid,
 155                  __entry->mode, __entry->vdo)
 156);
 157
 158DEFINE_EVENT(ucsi_log_register_altmode, ucsi_register_altmode,
 159        TP_PROTO(u8 recipient, struct typec_altmode *alt),
 160        TP_ARGS(recipient, alt)
 161);
 162
 163#endif /* __UCSI_TRACE_H */
 164
 165/* This part must be outside protection */
 166
 167#undef TRACE_INCLUDE_PATH
 168#define TRACE_INCLUDE_PATH .
 169
 170#undef TRACE_INCLUDE_FILE
 171#define TRACE_INCLUDE_FILE trace
 172
 173#include <trace/define_trace.h>
 174