brcm2708: update linux 4.4 patches to latest version
[openwrt/staging/wigyori.git] / target / linux / brcm2708 / patches-4.4 / 0441-drm-vc4-Start-switching-to-using-debugfs_reg32-helpe.patch
1 From 2c0dcd858253cb508f4c8ae571f4db6af2d44d93 Mon Sep 17 00:00:00 2001
2 From: Eric Anholt <eric@anholt.net>
3 Date: Fri, 20 May 2016 16:24:47 -0700
4 Subject: [PATCH] drm/vc4: Start switching to using debugfs_reg32 helpers for
5 debugfs.
6
7 Every file was defining its own little struct and dumping for the
8 regs, when there's a helper in debugfs for doing just this. However,
9 instead of printing:
10
11 PV_HORZA (0x000c): 0x00000000
12
13 we now print:
14
15 PV_HORZA = 0x00000000
16
17 Signed-off-by: Eric Anholt <eric@anholt.net>
18 ---
19 drivers/gpu/drm/vc4/vc4_crtc.c | 48 ++++++++++++++++--------------------------
20 drivers/gpu/drm/vc4/vc4_drv.c | 13 ++++++++++++
21 drivers/gpu/drm/vc4/vc4_drv.h | 6 ++++++
22 3 files changed, 37 insertions(+), 30 deletions(-)
23
24 --- a/drivers/gpu/drm/vc4/vc4_crtc.c
25 +++ b/drivers/gpu/drm/vc4/vc4_crtc.c
26 @@ -35,6 +35,7 @@
27 #include "drm_atomic_helper.h"
28 #include "drm_crtc_helper.h"
29 #include "linux/clk.h"
30 +#include "linux/debugfs.h"
31 #include "drm_fb_cma_helper.h"
32 #include "linux/component.h"
33 #include "linux/of_device.h"
34 @@ -85,35 +86,25 @@ struct vc4_crtc_data {
35 #define CRTC_WRITE(offset, val) writel(val, vc4_crtc->regs + (offset))
36 #define CRTC_READ(offset) readl(vc4_crtc->regs + (offset))
37
38 -#define CRTC_REG(reg) { reg, #reg }
39 -static const struct {
40 - u32 reg;
41 - const char *name;
42 -} crtc_regs[] = {
43 - CRTC_REG(PV_CONTROL),
44 - CRTC_REG(PV_V_CONTROL),
45 - CRTC_REG(PV_VSYNCD_EVEN),
46 - CRTC_REG(PV_HORZA),
47 - CRTC_REG(PV_HORZB),
48 - CRTC_REG(PV_VERTA),
49 - CRTC_REG(PV_VERTB),
50 - CRTC_REG(PV_VERTA_EVEN),
51 - CRTC_REG(PV_VERTB_EVEN),
52 - CRTC_REG(PV_INTEN),
53 - CRTC_REG(PV_INTSTAT),
54 - CRTC_REG(PV_STAT),
55 - CRTC_REG(PV_HACT_ACT),
56 +static const struct debugfs_reg32 crtc_regs[] = {
57 + VC4_DEBUG_REG(PV_CONTROL),
58 + VC4_DEBUG_REG(PV_V_CONTROL),
59 + VC4_DEBUG_REG(PV_VSYNCD_EVEN),
60 + VC4_DEBUG_REG(PV_HORZA),
61 + VC4_DEBUG_REG(PV_HORZB),
62 + VC4_DEBUG_REG(PV_VERTA),
63 + VC4_DEBUG_REG(PV_VERTB),
64 + VC4_DEBUG_REG(PV_VERTA_EVEN),
65 + VC4_DEBUG_REG(PV_VERTB_EVEN),
66 + VC4_DEBUG_REG(PV_INTEN),
67 + VC4_DEBUG_REG(PV_INTSTAT),
68 + VC4_DEBUG_REG(PV_STAT),
69 + VC4_DEBUG_REG(PV_HACT_ACT),
70 };
71
72 static void vc4_crtc_dump_regs(struct vc4_crtc *vc4_crtc)
73 {
74 - int i;
75 -
76 - for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) {
77 - DRM_INFO("0x%04x (%s): 0x%08x\n",
78 - crtc_regs[i].reg, crtc_regs[i].name,
79 - CRTC_READ(crtc_regs[i].reg));
80 - }
81 + vc4_dump_regs32(crtc_regs, ARRAY_SIZE(crtc_regs), vc4_crtc->regs, "");
82 }
83
84 #ifdef CONFIG_DEBUG_FS
85 @@ -136,11 +127,8 @@ int vc4_crtc_debugfs_regs(struct seq_fil
86 return 0;
87 vc4_crtc = to_vc4_crtc(crtc);
88
89 - for (i = 0; i < ARRAY_SIZE(crtc_regs); i++) {
90 - seq_printf(m, "%s (0x%04x): 0x%08x\n",
91 - crtc_regs[i].name, crtc_regs[i].reg,
92 - CRTC_READ(crtc_regs[i].reg));
93 - }
94 + debugfs_print_regs32(m, crtc_regs, ARRAY_SIZE(crtc_regs),
95 + vc4_crtc->regs, "");
96
97 return 0;
98 }
99 --- a/drivers/gpu/drm/vc4/vc4_drv.c
100 +++ b/drivers/gpu/drm/vc4/vc4_drv.c
101 @@ -9,6 +9,7 @@
102
103 #include <linux/clk.h>
104 #include <linux/component.h>
105 +#include <linux/debugfs.h>
106 #include <linux/device.h>
107 #include <linux/io.h>
108 #include <linux/module.h>
109 @@ -52,6 +53,18 @@ static void vc4_drm_preclose(struct drm_
110 vc4_cancel_page_flip(crtc, file);
111 }
112
113 +void vc4_dump_regs32(const struct debugfs_reg32 *regs, unsigned int num_regs,
114 + void __iomem *base, const char *prefix)
115 +{
116 + unsigned int i;
117 +
118 + for (i = 0; i < num_regs; i++) {
119 + DRM_INFO("%s0x%04lx (%s): 0x%08x\n",
120 + prefix, regs[i].offset, regs[i].name,
121 + readl(base + regs[i].offset));
122 + }
123 +}
124 +
125 static void vc4_lastclose(struct drm_device *dev)
126 {
127 struct vc4_dev *vc4 = to_vc4_dev(dev);
128 --- a/drivers/gpu/drm/vc4/vc4_drv.h
129 +++ b/drivers/gpu/drm/vc4/vc4_drv.h
130 @@ -9,6 +9,8 @@
131 #include "drmP.h"
132 #include "drm_gem_cma_helper.h"
133
134 +struct debugfs_reg32;
135 +
136 struct vc4_dev {
137 struct drm_device *dev;
138
139 @@ -207,6 +209,8 @@ to_vc4_encoder(struct drm_encoder *encod
140 #define HVS_READ(offset) readl(vc4->hvs->regs + offset)
141 #define HVS_WRITE(offset, val) writel(val, vc4->hvs->regs + offset)
142
143 +#define VC4_DEBUG_REG(reg) { .name = #reg, .offset = reg }
144 +
145 struct vc4_exec_info {
146 /* Sequence number for this bin/render job. */
147 uint64_t seqno;
148 @@ -418,6 +422,8 @@ void vc4_debugfs_cleanup(struct drm_mino
149
150 /* vc4_drv.c */
151 void __iomem *vc4_ioremap_regs(struct platform_device *dev, int index);
152 +void vc4_dump_regs32(const struct debugfs_reg32 *reg, unsigned int num_regs,
153 + void __iomem *base, const char *prefix);
154
155 /* vc4_dpi.c */
156 extern struct platform_driver vc4_dpi_driver;