Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/tegra: dc: Trace register accesses

Add tracepoint events for display controller register accesses.

Signed-off-by: Thierry Reding <treding@nvidia.com>

+51 -1
+2
drivers/gpu/drm/tegra/Makefile
··· 17 17 falcon.o \ 18 18 vic.o 19 19 20 + tegra-drm-y += trace.o 21 + 20 22 obj-$(CONFIG_DRM_TEGRA) += tegra-drm.o
+7 -1
drivers/gpu/drm/tegra/drm.h
··· 23 23 #include <drm/drm_fixed.h> 24 24 25 25 #include "gem.h" 26 + #include "trace.h" 26 27 27 28 struct reset_control; 28 29 ··· 175 174 static inline void tegra_dc_writel(struct tegra_dc *dc, u32 value, 176 175 unsigned int offset) 177 176 { 177 + trace_dc_writel(dc->dev, offset, value); 178 178 writel(value, dc->regs + (offset << 2)); 179 179 } 180 180 181 181 static inline u32 tegra_dc_readl(struct tegra_dc *dc, unsigned int offset) 182 182 { 183 - return readl(dc->regs + (offset << 2)); 183 + u32 value = readl(dc->regs + (offset << 2)); 184 + 185 + trace_dc_readl(dc->dev, offset, value); 186 + 187 + return value; 184 188 } 185 189 186 190 struct tegra_dc_window {
+2
drivers/gpu/drm/tegra/trace.c
··· 1 + #define CREATE_TRACE_POINTS 2 + #include "trace.h"
+40
drivers/gpu/drm/tegra/trace.h
··· 1 + #undef TRACE_SYSTEM 2 + #define TRACE_SYSTEM tegra 3 + 4 + #if !defined(DRM_TEGRA_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 5 + #define DRM_TEGRA_TRACE_H 1 6 + 7 + #include <linux/device.h> 8 + #include <linux/tracepoint.h> 9 + 10 + DECLARE_EVENT_CLASS(register_access, 11 + TP_PROTO(struct device *dev, unsigned int offset, u32 value), 12 + TP_ARGS(dev, offset, value), 13 + TP_STRUCT__entry( 14 + __field(struct device *, dev) 15 + __field(unsigned int, offset) 16 + __field(u32, value) 17 + ), 18 + TP_fast_assign( 19 + __entry->dev = dev; 20 + __entry->offset = offset; 21 + __entry->value = value; 22 + ), 23 + TP_printk("%s %04x %08x", dev_name(__entry->dev), __entry->offset, 24 + __entry->value) 25 + ); 26 + 27 + DEFINE_EVENT(register_access, dc_writel, 28 + TP_PROTO(struct device *dev, unsigned int offset, u32 value), 29 + TP_ARGS(dev, offset, value)); 30 + DEFINE_EVENT(register_access, dc_readl, 31 + TP_PROTO(struct device *dev, unsigned int offset, u32 value), 32 + TP_ARGS(dev, offset, value)); 33 + 34 + #endif /* DRM_TEGRA_TRACE_H */ 35 + 36 + /* This part must be outside protection */ 37 + #undef TRACE_INCLUDE_PATH 38 + #define TRACE_INCLUDE_PATH . 39 + #define TRACE_INCLUDE_FILE trace 40 + #include <trace/define_trace.h>