mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
drm/rockchip: Add tracepoints
Enable: echo 1 > sys/kernel/tracing/tracing_on echo 1 > sys/kernel/tracing/events/rockchipdrm/enable echo 8192 > sys/kernel/tracing/buffer_size_kb cat /sys/kernel/tracing/trace Signed-off-by: Andy Yan <andy.yan@rock-chips.com> Change-Id: Ib3936d6093cb6dcb3a19ee5f74867be1f4befa94
This commit is contained in:
@@ -47,6 +47,9 @@
|
||||
|
||||
#include "../drm_crtc_internal.h"
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "rockchip_drm_trace.h"
|
||||
|
||||
#define DRIVER_NAME "rockchip"
|
||||
#define DRIVER_DESC "RockChip Soc DRM"
|
||||
#define DRIVER_DATE "20140818"
|
||||
@@ -85,17 +88,23 @@ void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category
|
||||
struct va_format vaf;
|
||||
va_list args;
|
||||
|
||||
if (!rockchip_drm_debug_enabled(category))
|
||||
return;
|
||||
|
||||
va_start(args, format);
|
||||
vaf.fmt = format;
|
||||
vaf.va = &args;
|
||||
|
||||
if (dev)
|
||||
dev_printk(KERN_DEBUG, dev, "%pV", &vaf);
|
||||
if (rockchip_drm_debug_enabled(category)) {
|
||||
if (dev)
|
||||
dev_printk(KERN_DEBUG, dev, "%pV", &vaf);
|
||||
else
|
||||
printk(KERN_DEBUG "%pV", &vaf);
|
||||
}
|
||||
|
||||
if (category == VOP_DEBUG_VSYNC)
|
||||
trace_rockchip_drm_dbg_vsync(&vaf);
|
||||
else if (category == VOP_DEBUG_IOMMU_MAP)
|
||||
trace_rockchip_drm_dbg_iommu(&vaf);
|
||||
else
|
||||
printk(KERN_DEBUG "%pV", &vaf);
|
||||
trace_rockchip_drm_dbg_common(&vaf);
|
||||
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ enum rockchip_drm_debug_category {
|
||||
VOP_DEBUG_WB = BIT(2),
|
||||
VOP_DEBUG_CFG_DONE = BIT(3),
|
||||
VOP_DEBUG_CLK = BIT(4),
|
||||
VOP_DEBUG_IOMMU_MAP = BIT(5),
|
||||
VOP_DEBUG_VSYNC = BIT(7),
|
||||
VOP_DEBUG_PIXEL_SHIFT = BIT(8),
|
||||
};
|
||||
|
||||
60
drivers/gpu/drm/rockchip/rockchip_drm_trace.h
Normal file
60
drivers/gpu/drm/rockchip/rockchip_drm_trace.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
|
||||
*
|
||||
*/
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM rockchipdrm
|
||||
|
||||
#if !defined(_ROCKCHIP_DRM_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _ROCKCHIP_DRM_TRACE_H_
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
#define ROCKCHIP_DRM_MAX_MSG_LEN 256
|
||||
|
||||
DECLARE_EVENT_CLASS(rockchipdrm_dbg,
|
||||
|
||||
TP_PROTO(struct va_format *vaf),
|
||||
|
||||
TP_ARGS(vaf),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__dynamic_array(char, msg, ROCKCHIP_DRM_MAX_MSG_LEN)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
WARN_ON_ONCE(vsnprintf(__get_dynamic_array(msg),
|
||||
ROCKCHIP_DRM_MAX_MSG_LEN,
|
||||
vaf->fmt,
|
||||
*vaf->va) >= ROCKCHIP_DRM_MAX_MSG_LEN);
|
||||
),
|
||||
|
||||
TP_printk("%s", __get_str(msg))
|
||||
);
|
||||
|
||||
DEFINE_EVENT(rockchipdrm_dbg, rockchip_drm_dbg_common,
|
||||
TP_PROTO(struct va_format *vaf),
|
||||
TP_ARGS(vaf)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(rockchipdrm_dbg, rockchip_drm_dbg_iommu,
|
||||
TP_PROTO(struct va_format *vaf),
|
||||
TP_ARGS(vaf)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(rockchipdrm_dbg, rockchip_drm_dbg_vsync,
|
||||
TP_PROTO(struct va_format *vaf),
|
||||
TP_ARGS(vaf)
|
||||
);
|
||||
|
||||
#endif /* _ROCKCHIP_DRM_TRACE_H_ || TRACE_HEADER_MULTI_READ */
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/rockchip
|
||||
#undef TRACE_INCLUDE_FILE
|
||||
#define TRACE_INCLUDE_FILE rockchip_drm_trace
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
Reference in New Issue
Block a user