drm/rockchip: Add rockchip_drm_dbg_thread_info() function

Support print thread info.

Change-Id: I56111c8bb438ad354553276881d74fc7a6186340
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
This commit is contained in:
Andy Yan
2024-09-13 14:22:41 +08:00
committed by Tao Huang
parent 593488826a
commit d233408e36
4 changed files with 76 additions and 40 deletions

View File

@@ -81,8 +81,34 @@ static inline bool rockchip_drm_debug_enabled(enum rockchip_drm_debug_category c
return unlikely(drm_debug & category);
}
static void rockchip_drm_dbg_print(const struct device *dev, enum rockchip_drm_debug_category category,
bool show_thread, struct va_format *vaf)
{
if (rockchip_drm_debug_enabled(category)) {
if (dev) {
if (show_thread)
dev_printk(KERN_DEBUG, dev, "%s %pV\n", current->comm, vaf);
else
dev_printk(KERN_DEBUG, dev, "%pV\n", vaf);
} else {
if (show_thread)
printk(KERN_DEBUG "%s %pV\n", current->comm, vaf);
else
printk(KERN_DEBUG "%pV\n", 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
trace_rockchip_drm_dbg_common(vaf);
}
__printf(3, 4)
void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category category,
void rockchip_drm_dbg(const struct device *dev,
enum rockchip_drm_debug_category category,
const char *format, ...)
{
struct va_format vaf;
@@ -92,19 +118,24 @@ void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category
vaf.fmt = format;
vaf.va = &args;
if (rockchip_drm_debug_enabled(category)) {
if (dev)
dev_printk(KERN_DEBUG, dev, "%pV\n", &vaf);
else
printk(KERN_DEBUG "%pV\n", &vaf);
}
rockchip_drm_dbg_print(dev, category, false, &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
trace_rockchip_drm_dbg_common(&vaf);
va_end(args);
}
__printf(3, 4)
void rockchip_drm_dbg_thread_info(const struct device *dev,
enum rockchip_drm_debug_category category,
const char *format, ...)
{
struct va_format vaf;
va_list args;
va_start(args, format);
vaf.fmt = format;
vaf.va = &args;
rockchip_drm_dbg_print(dev, category, true, &vaf);
va_end(args);
}

View File

@@ -649,8 +649,13 @@ bool rockchip_drm_is_rfbc(struct drm_plane *plane, u64 modifier);
const char *rockchip_drm_modifier_to_string(uint64_t modifier);
__printf(3, 4)
void rockchip_drm_dbg(const struct device *dev, enum rockchip_drm_debug_category category,
void rockchip_drm_dbg(const struct device *dev,
enum rockchip_drm_debug_category category,
const char *format, ...);
__printf(3, 4)
void rockchip_drm_dbg_thread_info(const struct device *dev,
enum rockchip_drm_debug_category category,
const char *format, ...);
extern struct platform_driver cdn_dp_driver;
extern struct platform_driver dw_hdmi_rockchip_pltfm_driver;

View File

@@ -1993,8 +1993,8 @@ static void vop_plane_atomic_disable(struct drm_plane *plane,
if (!old_state->crtc)
return;
rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d by %s",
win->win_id, win->area_id, current->comm);
rockchip_drm_dbg_thread_info(vop->dev, VOP_DEBUG_PLANE, "disable win%d-area%d",
win->win_id, win->area_id);
spin_lock(&vop->reg_lock);
@@ -2249,12 +2249,12 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
if (rockchip_afbc(plane, fb->modifier))
afbc_en = true;
rockchip_drm_dbg(vop->dev, VOP_DEBUG_PLANE,
"update win%d-area%d [%dx%d->%dx%d@(%d, %d)] zpos:%d fmt[%p4cc%s] addr[%pad] by %s",
win->win_id, win->area_id, actual_w, actual_h,
dsp_w, dsp_h, dest->x1, dest->y1, vop_plane_state->zpos, &fb->format->format,
afbc_en ? "[AFBC]" : "",
&vop_plane_state->yrgb_mst, current->comm);
rockchip_drm_dbg_thread_info(vop->dev, VOP_DEBUG_PLANE,
"update win%d-area%d [%dx%d->%dx%d@(%d, %d)] zpos:%d fmt[%p4cc%s] addr[%pad]",
win->win_id, win->area_id, actual_w, actual_h,
dsp_w, dsp_h, dest->x1, dest->y1, vop_plane_state->zpos, &fb->format->format,
afbc_en ? "[AFBC]" : "",
&vop_plane_state->yrgb_mst);
/*
* spi interface(vop_plane_state->yrgb_kvaddr, fb->pixel_format,
* actual_w, actual_h)

View File

@@ -6112,13 +6112,13 @@ static void vop2_win_atomic_update(struct vop2_win *win, struct drm_rect *src, s
vop2_win_enable(win);
spin_lock(&vop2->reg_lock);
rockchip_drm_dbg(vop2->dev, VOP_DEBUG_PLANE,
"vp%d update %s[%dx%d@(%d, %d)->%dx%d@(%d, %d)] zpos[%d] fmt[%p4cc%s] addr[%pad] fb_size[0x%zx] by %s",
vp->id, win->name,
actual_w, actual_h, src->x1 >> 16, src->y1 >> 16,
dsp_w, dsp_h, dsp_stx, dsp_sty, vpstate->zpos,
&fb->format->format, rockchip_drm_modifier_to_string(fb->modifier),
&vpstate->yrgb_mst, vpstate->fb_size, current->comm);
rockchip_drm_dbg_thread_info(vop2->dev, VOP_DEBUG_PLANE,
"vp%d update %s[%dx%d@(%d, %d)->%dx%d@(%d, %d)] zpos[%d] fmt[%p4cc%s] addr[%pad] fb_size[0x%zx]",
vp->id, win->name,
actual_w, actual_h, src->x1 >> 16, src->y1 >> 16,
dsp_w, dsp_h, dsp_stx, dsp_sty, vpstate->zpos,
&fb->format->format, rockchip_drm_modifier_to_string(fb->modifier),
&vpstate->yrgb_mst, vpstate->fb_size);
if (vop2->version != VOP_VERSION_RK3568)
rk3588_vop2_win_cfg_axi(win);
@@ -6362,17 +6362,17 @@ static void vop2_plane_atomic_update(struct drm_plane *plane, struct drm_atomic_
}
if (vcstate->splice_mode) {
rockchip_drm_dbg(vop2->dev, VOP_DEBUG_PLANE,
"vp%d update %s[%dx%d@(%d, %d)->%dx%d@(%d, %d)] zpos[%d] fmt[%p4cc%s] addr[%pad] fb_size[0x%zx] by %s",
vp->id, win->name,
drm_rect_width(&vpstate->src) >> 16,
drm_rect_height(&vpstate->src) >> 16,
vpstate->src.x1 >> 16, vpstate->src.y1 >> 16,
drm_rect_width(&vpstate->dest), drm_rect_height(&vpstate->dest),
vpstate->dest.x1, vpstate->dest.y1, vpstate->zpos,
&fb->format->format,
rockchip_drm_modifier_to_string(fb->modifier), &vpstate->yrgb_mst,
vpstate->fb_size, current->comm);
rockchip_drm_dbg_thread_info(vop2->dev, VOP_DEBUG_PLANE,
"vp%d update %s[%dx%d@(%d, %d)->%dx%d@(%d, %d)] zpos[%d] fmt[%p4cc%s] addr[%pad] fb_size[0x%zx]",
vp->id, win->name,
drm_rect_width(&vpstate->src) >> 16,
drm_rect_height(&vpstate->src) >> 16,
vpstate->src.x1 >> 16, vpstate->src.y1 >> 16,
drm_rect_width(&vpstate->dest), drm_rect_height(&vpstate->dest),
vpstate->dest.x1, vpstate->dest.y1, vpstate->zpos,
&fb->format->format,
rockchip_drm_modifier_to_string(fb->modifier), &vpstate->yrgb_mst,
vpstate->fb_size);
vop2_calc_drm_rect_for_splice(vpstate, &wsrc, &wdst, &right_wsrc, &right_wdst);
splice_win = win->splice_win;