drivers/usb/dwc3/trace.h

Source file repositories/reference/linux-study-clean/drivers/usb/dwc3/trace.h

File Facts

System
Linux kernel
Corpus path
drivers/usb/dwc3/trace.h
Extension
.h
Size
10879 bytes
Lines
388
Domain
Driver Families
Bucket
drivers/usb
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

switch (__entry->type) {
		case USB_ENDPOINT_XFER_INT:
		case USB_ENDPOINT_XFER_ISOC:
			switch (pcm) {
			case 1:
				s = "1x ";
				break;
			case 2:
				s = "2x ";
				break;
			case 3:
			default:
				s = "3x ";
				break;
			}
			break;
		default:
			s = "";
		} s; }),
		DWC3_TRB_SIZE_LENGTH(__entry->size), __entry->ctrl,
		DWC3_TRB_CTRL_GET_SID_SOFN(__entry->ctrl),
		__entry->ctrl & DWC3_TRB_CTRL_HWO ? 'H' : 'h',
		__entry->ctrl & DWC3_TRB_CTRL_LST ? 'L' : 'l',
		__entry->ctrl & DWC3_TRB_CTRL_CHN ? 'C' : 'c',
		__entry->ctrl & DWC3_TRB_CTRL_CSP ? 'S' : 's',
		__entry->ctrl & DWC3_TRB_CTRL_ISP_IMI ? 'S' : 's',
		__entry->ctrl & DWC3_TRB_CTRL_IOC ? 'C' : 'c',
		  dwc3_trb_type_string(DWC3_TRBCTL_TYPE(__entry->ctrl))
	)
);

DEFINE_EVENT(dwc3_log_trb, dwc3_prepare_trb,
	TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb),
	TP_ARGS(dep, trb)
);

DEFINE_EVENT(dwc3_log_trb, dwc3_complete_trb,
	TP_PROTO(struct dwc3_ep *dep, struct dwc3_trb *trb),
	TP_ARGS(dep, trb)
);

DECLARE_EVENT_CLASS(dwc3_log_ep,
	TP_PROTO(struct dwc3_ep *dep),
	TP_ARGS(dep),
	TP_STRUCT__entry(
		__field(phys_addr_t, base_address)
		__string(name, dep->name)
		__field(unsigned int, maxpacket)
		__field(unsigned int, maxpacket_limit)
		__field(unsigned int, max_streams)
		__field(unsigned int, maxburst)
		__field(unsigned int, flags)
		__field(unsigned int, direction)
		__field(u8, trb_enqueue)
		__field(u8, trb_dequeue)
	),
	TP_fast_assign(
		__entry->base_address = dep->dwc->xhci_resources[0].start;
		__assign_str(name);
		__entry->maxpacket = dep->endpoint.maxpacket;
		__entry->maxpacket_limit = dep->endpoint.maxpacket_limit;
		__entry->max_streams = dep->endpoint.max_streams;
		__entry->maxburst = dep->endpoint.maxburst;
		__entry->flags = dep->flags;
		__entry->direction = dep->direction;
		__entry->trb_enqueue = dep->trb_enqueue;
		__entry->trb_dequeue = dep->trb_dequeue;
	),
	TP_printk("%pa: %s: mps %d/%d streams %d burst %d ring %d/%d flags %c:%c%c%c%c:%c",
		&__entry->base_address, __get_str(name), __entry->maxpacket,
		__entry->maxpacket_limit, __entry->max_streams,
		__entry->maxburst, __entry->trb_enqueue,
		__entry->trb_dequeue,
		__entry->flags & DWC3_EP_ENABLED ? 'E' : 'e',
		__entry->flags & DWC3_EP_STALL ? 'S' : 's',
		__entry->flags & DWC3_EP_WEDGE ? 'W' : 'w',
		__entry->flags & DWC3_EP_TRANSFER_STARTED ? 'B' : 'b',
		__entry->flags & DWC3_EP_PENDING_REQUEST ? 'P' : 'p',
		__entry->direction ? '<' : '>'
	)
);

DEFINE_EVENT(dwc3_log_ep, dwc3_gadget_ep_enable,
	TP_PROTO(struct dwc3_ep *dep),
	TP_ARGS(dep)
);

DEFINE_EVENT(dwc3_log_ep, dwc3_gadget_ep_disable,
	TP_PROTO(struct dwc3_ep *dep),
	TP_ARGS(dep)

Annotation

Implementation Notes