From e2934c6a46a8bfadced1866adea668cebbc698da Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 20 May 2016 16:24:47 -0700 Subject: [PATCH] drm/vc4: Start switching to using debugfs_reg32 helpers for debugfs. Every file was defining its own little struct and dumping for the regs, when there's a helper in debugfs for doing just this. However, instead of printing: PV_HORZA (0x000c): 0x00000000 we now print: PV_HORZA = 0x00000000 Signed-off-by: Eric Anholt --- drivers/gpu/drm/vc4/vc4_crtc.c | 48 ++++++++++++++++-------------------------- drivers/gpu/drm/vc4/vc4_drv.c | 13 ++++++++++++ drivers/gpu/drm/vc4/vc4_drv.h | 6 ++++++ 3 files changed, 37 insertions(+), 30 deletions(-) --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -35,6 +35,7 @@ #include "drm_atomic_helper.h" #include "drm_crtc_helper.h" #include "linux/clk.h" +#include "linux/debugfs.h" #include "drm_fb_cma_helper.h" #include "linux/component.h" #include "linux/of_device.h" @@ -85,35 +86,25 @@ struct vc4_crtc_data { #define CRTC_WRITE(offset, val) writel(val, vc4_crtc->regs + (offset)) #define CRTC_READ(offset) readl(vc4_crtc->regs + (offset)) -#define CRTC_REG(reg) { reg, #reg } -static const struct { - u32 reg; - const char *name; -} crtc_regs[] = { - CRTC_REG(PV_CONTROL), - CRTC_REG(PV_V_CONTROL), - CRTC_REG(PV_VSYNCD_EVEN), - CRTC_REG(PV_HORZA), - CRTC_REG(PV_HORZB), - CRTC_REG(PV_VERTA), - CRTC_REG(PV_VERTB), - CRTC_REG(PV_VERTA_EVEN), - CRTC_REG(PV_VERTB_EVEN), - CRTC_REG(PV_INTEN), - CRTC_REG(PV_INTSTAT), - CRTC_REG(PV_STAT), - CRTC_REG(PV_HACT_ACT), +static const struct debugfs_reg32 crtc_regs[] = { + VC4_DEBUG_REG(PV_CONTROL), + VC4_DEBUG_REG(PV_V_CONTROL), + VC4_DEBUG_REG(PV_VSYNCD_EVEN), + VC4_DEBUG_REG(PV_HORZA), + VC4_DEBUG_REG(PV_HORZB), + VC4_DEBUG_REG(PV_VERTA), + VC4_DEBUG_REG(PV_VERTB), + VC4_DEBUG_REG(PV_VERTA_EVEN), + VC4_DEBUG_REG(PV_VERTB_EVEN), + VC4_DEBUG_REG(PV_INTEN), + VC4_DEBUG_REG(PV_INTSTAT), + VC4_DEBUG_REG(PV_STAT), + VC4_DEBUG_REG(PV_HACT_ACT), }; static void vc4_crtc_dump_regs(struct vc4_crtc *vc4_crtc) { - int i; - - for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) { - DRM_INFO("0x%04x (%s): 0x%08x\n", - crtc_regs[i].reg, crtc_regs[i].name, - CRTC_READ(crtc_regs[i].reg)); - } + vc4_dump_regs32(crtc_regs, ARRAY_SIZE(crtc_regs), vc4_crtc->regs, ""); } #ifdef CONFIG_DEBUG_FS @@ -136,11 +127,8 @@ int vc4_crtc_debugfs_regs(struct seq_fil return 0; vc4_crtc = to_vc4_crtc(crtc); - for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) { - seq_printf(m, "%s (0x%04x): 0x%08x\n", - crtc_regs[i].name, crtc_regs[i].reg, - CRTC_READ(crtc_regs[i].reg)); - } + debugfs_print_regs32(m, crtc_regs, ARRAY_SIZE(crtc_regs), + vc4_crtc->regs, ""); return 0; } --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -52,6 +53,18 @@ static void vc4_drm_preclose(struct drm_ vc4_cancel_page_flip(crtc, file); } +void vc4_dump_regs32(const struct debugfs_reg32 *regs, unsigned int num_regs, + void __iomem *base, const char *prefix) +{ + unsigned int i; + + for (i = 0; i < num_regs; i++) { + DRM_INFO("%s0x%04lx (%s): 0x%08x\n", + prefix, regs[i].offset, regs[i].name, + readl(base + regs[i].offset)); + } +} + static void vc4_lastclose(struct drm_device *dev) { struct vc4_dev *vc4 = to_vc4_dev(dev); --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h @@ -9,6 +9,8 @@ #include "drmP.h" #include "drm_gem_cma_helper.h" +struct debugfs_reg32; + struct vc4_dev { struct drm_device *dev; @@ -207,6 +209,8 @@ to_vc4_encoder(struct drm_encoder *encod #define HVS_READ(offset) readl(vc4->hvs->regs + offset) #define HVS_WRITE(offset, val) writel(val, vc4->hvs->regs + offset) +#define VC4_DEBUG_REG(reg) { .name = #reg, .offset = reg } + struct vc4_exec_info { /* Sequence number for this bin/render job. */ uint64_t seqno; @@ -418,6 +422,8 @@ void vc4_debugfs_cleanup(struct drm_mino /* vc4_drv.c */ void __iomem *vc4_ioremap_regs(struct platform_device *dev, int index); +void vc4_dump_regs32(const struct debugfs_reg32 *reg, unsigned int num_regs, + void __iomem *base, const char *prefix); /* vc4_dpi.c */ extern struct platform_driver vc4_dpi_driver;