mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
drm/tegra: dc: Trace register accesses
Add tracepoint events for display controller register accesses. Signed-off-by: Thierry Reding <treding@nvidia.com>
This commit is contained in:
parent
5c5f13016d
commit
67e04d1ab1
4 changed files with 51 additions and 1 deletions
|
@ -17,4 +17,6 @@ tegra-drm-y := \
|
|||
falcon.o \
|
||||
vic.o
|
||||
|
||||
tegra-drm-y += trace.o
|
||||
|
||||
obj-$(CONFIG_DRM_TEGRA) += tegra-drm.o
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <drm/drm_fixed.h>
|
||||
|
||||
#include "gem.h"
|
||||
#include "trace.h"
|
||||
|
||||
struct reset_control;
|
||||
|
||||
|
@ -174,12 +175,17 @@ static inline struct tegra_dc *to_tegra_dc(struct drm_crtc *crtc)
|
|||
static inline void tegra_dc_writel(struct tegra_dc *dc, u32 value,
|
||||
unsigned int offset)
|
||||
{
|
||||
trace_dc_writel(dc->dev, offset, value);
|
||||
writel(value, dc->regs + (offset << 2));
|
||||
}
|
||||
|
||||
static inline u32 tegra_dc_readl(struct tegra_dc *dc, unsigned int offset)
|
||||
{
|
||||
return readl(dc->regs + (offset << 2));
|
||||
u32 value = readl(dc->regs + (offset << 2));
|
||||
|
||||
trace_dc_readl(dc->dev, offset, value);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
struct tegra_dc_window {
|
||||
|
|
2
drivers/gpu/drm/tegra/trace.c
Normal file
2
drivers/gpu/drm/tegra/trace.c
Normal file
|
@ -0,0 +1,2 @@
|
|||
#define CREATE_TRACE_POINTS
|
||||
#include "trace.h"
|
40
drivers/gpu/drm/tegra/trace.h
Normal file
40
drivers/gpu/drm/tegra/trace.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM tegra
|
||||
|
||||
#if !defined(DRM_TEGRA_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define DRM_TEGRA_TRACE_H 1
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DECLARE_EVENT_CLASS(register_access,
|
||||
TP_PROTO(struct device *dev, unsigned int offset, u32 value),
|
||||
TP_ARGS(dev, offset, value),
|
||||
TP_STRUCT__entry(
|
||||
__field(struct device *, dev)
|
||||
__field(unsigned int, offset)
|
||||
__field(u32, value)
|
||||
),
|
||||
TP_fast_assign(
|
||||
__entry->dev = dev;
|
||||
__entry->offset = offset;
|
||||
__entry->value = value;
|
||||
),
|
||||
TP_printk("%s %04x %08x", dev_name(__entry->dev), __entry->offset,
|
||||
__entry->value)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(register_access, dc_writel,
|
||||
TP_PROTO(struct device *dev, unsigned int offset, u32 value),
|
||||
TP_ARGS(dev, offset, value));
|
||||
DEFINE_EVENT(register_access, dc_readl,
|
||||
TP_PROTO(struct device *dev, unsigned int offset, u32 value),
|
||||
TP_ARGS(dev, offset, value));
|
||||
|
||||
#endif /* DRM_TEGRA_TRACE_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH .
|
||||
#define TRACE_INCLUDE_FILE trace
|
||||
#include <trace/define_trace.h>
|
Loading…
Reference in a new issue