drivers/gpu/drm/i915/display/intel_display_trace.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/i915/display/intel_display_trace.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/i915/display/intel_display_trace.h
Extension
.h
Size
28018 bytes
Lines
859
Domain
Driver Families
Bucket
drivers/gpu
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

for_each_intel_crtc(display, it__) {
				   __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
				   __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
			   }
			   __entry->pipe_name = pipe_name(crtc->pipe);
			   ),

	    TP_printk("dev %s, pipe %c enable, " _PIPES_FRAME_AND_SCANLINE_FMT,
		      __get_str(dev), __entry->pipe_name, _PIPES_FRAME_AND_SCANLINE_VALUES)
);

TRACE_EVENT(intel_pipe_disable,
	    TP_PROTO(struct intel_crtc *crtc),
	    TP_ARGS(crtc),

	    TP_STRUCT__entry(
			     __string(dev, __dev_name_kms(crtc))
			     __array(u32, frame, I915_MAX_PIPES)
			     __array(u32, scanline, I915_MAX_PIPES)
			     __field(char, pipe_name)
			     ),

	    TP_fast_assign(
			   struct intel_display *display = to_intel_display(crtc);
			   struct intel_crtc *it__;
			   __assign_str(dev);
			   memset(__entry->frame, 0,
				  sizeof(__entry->frame[0]) * I915_MAX_PIPES);
			   memset(__entry->scanline, 0,
				  sizeof(__entry->scanline[0]) * I915_MAX_PIPES);
			   for_each_intel_crtc(display, it__) {
				   __entry->frame[it__->pipe] = intel_crtc_get_vblank_counter(it__);
				   __entry->scanline[it__->pipe] = intel_get_crtc_scanline(it__);
			   }
			   __entry->pipe_name = pipe_name(crtc->pipe);
			   ),

	    TP_printk("dev %s, pipe %c disable, " _PIPES_FRAME_AND_SCANLINE_FMT,
		      __get_str(dev), __entry->pipe_name, _PIPES_FRAME_AND_SCANLINE_VALUES)
);

TRACE_EVENT(intel_crtc_flip_done,
	    TP_PROTO(struct intel_crtc *crtc),
	    TP_ARGS(crtc),

	    TP_STRUCT__entry(
			     __string(dev, __dev_name_kms(crtc))
			     __field(char, pipe_name)
			     __field(u32, frame)
			     __field(u32, scanline)
			     ),

	    TP_fast_assign(
			   __assign_str(dev);
			   __entry->pipe_name = pipe_name(crtc->pipe);
			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
			   __entry->scanline = intel_get_crtc_scanline(crtc);
			   ),

	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u",
		      __get_str(dev), __entry->pipe_name,
		      __entry->frame, __entry->scanline)
);

TRACE_EVENT(intel_pipe_crc,
	    TP_PROTO(struct intel_crtc *crtc, const u32 *crcs),
	    TP_ARGS(crtc, crcs),

	    TP_STRUCT__entry(
			     __string(dev, __dev_name_kms(crtc))
			     __field(char, pipe_name)
			     __field(u32, frame)
			     __field(u32, scanline)
			     __array(u32, crcs, 5)
			     ),

	    TP_fast_assign(
			   __assign_str(dev);
			   __entry->pipe_name = pipe_name(crtc->pipe);
			   __entry->frame = intel_crtc_get_vblank_counter(crtc);
			   __entry->scanline = intel_get_crtc_scanline(crtc);
			   memcpy(__entry->crcs, crcs, sizeof(__entry->crcs));
			   ),

	    TP_printk("dev %s, pipe %c, frame=%u, scanline=%u crc=%08x %08x %08x %08x %08x",
		      __get_str(dev), __entry->pipe_name,
		      __entry->frame, __entry->scanline,
		      __entry->crcs[0], __entry->crcs[1],
		      __entry->crcs[2], __entry->crcs[3],
		      __entry->crcs[4])

Annotation

Implementation Notes