usb: dwc3: Add trace event for dwc3_set_prtcap

Changes to the port capability can be indirectly observed by tracing
register writes to DWC3_GCTL. However, this requires interpreting the
raw value, which is neither intuitive nor precise for debugging.
Monitoring these mode changes is essential for resolving issues related
to USB role switching and enumeration.

Introduce a dedicated trace event to provide a human-readable log when
the port capability is configured.

Signed-off-by: Kuen-Han Tsai <khtsai@google.com>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/20250822092411.173519-1-khtsai@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pull/1354/merge
Kuen-Han Tsai 2025-08-22 17:23:45 +08:00 committed by Greg Kroah-Hartman
parent b570b346dd
commit 55f4ac8f93
3 changed files with 36 additions and 0 deletions

View File

@ -156,6 +156,7 @@ void dwc3_set_prtcap(struct dwc3 *dwc, u32 mode, bool ignore_susphy)
dwc3_writel(dwc->regs, DWC3_GCTL, reg);
dwc->current_dr_role = mode;
trace_dwc3_set_prtcap(mode);
}
static void __dwc3_set_mode(struct work_struct *work)

View File

@ -13,6 +13,24 @@
#include "core.h"
/**
* dwc3_mode_string - returns mode name
* @mode: GCTL.PrtCapDir value
*/
static inline const char *dwc3_mode_string(u32 mode)
{
switch (mode) {
case DWC3_GCTL_PRTCAP_HOST:
return "host";
case DWC3_GCTL_PRTCAP_DEVICE:
return "device";
case DWC3_GCTL_PRTCAP_OTG:
return "otg";
default:
return "UNKNOWN";
}
}
/**
* dwc3_gadget_ep_cmd_string - returns endpoint command string
* @cmd: command code

View File

@ -19,6 +19,23 @@
#include "core.h"
#include "debug.h"
DECLARE_EVENT_CLASS(dwc3_log_set_prtcap,
TP_PROTO(u32 mode),
TP_ARGS(mode),
TP_STRUCT__entry(
__field(u32, mode)
),
TP_fast_assign(
__entry->mode = mode;
),
TP_printk("mode %s", dwc3_mode_string(__entry->mode))
);
DEFINE_EVENT(dwc3_log_set_prtcap, dwc3_set_prtcap,
TP_PROTO(u32 mode),
TP_ARGS(mode)
);
DECLARE_EVENT_CLASS(dwc3_log_io,
TP_PROTO(void *base, u32 offset, u32 value),
TP_ARGS(base, offset, value),