diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index fbec7d884219..6c3f083d4b8e 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -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); } diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index 32abec20fb99..1a7837c8fe6f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -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; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 8c94d53d1142..bd70cfa3e5b4 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -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) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 6d72dc006d5e..7722c2d9be47 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -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;