Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 67e04d1a authored by Thierry Reding's avatar Thierry Reding
Browse files

drm/tegra: dc: Trace register accesses



Add tracepoint events for display controller register accesses.

Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 5c5f1301
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -17,4 +17,6 @@ tegra-drm-y := \
	falcon.o \
	vic.o

tegra-drm-y += trace.o

obj-$(CONFIG_DRM_TEGRA) += tegra-drm.o
+7 −1
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
#define CREATE_TRACE_POINTS
#include "trace.h"
+40 −0
Original line number Diff line number Diff line
#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>