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

Commit 13eee770 authored by Alexey Brodkin's avatar Alexey Brodkin Committed by Alexey Brodkin
Browse files

drm/arcpgu: Opt in debugfs



This change adopts debugfs usage for outputting useful data.
As of today we print:
 * Mode and real HW clock values
 * Standard FB info

Code is heavily borrowed from ARM's HDLCD thus adding Liviu in Cc.

Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
Reviewed-by: default avatarLiviu Dudau <Liviu.Dudau@arm.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@linux.ie>
Cc: Jose Abreu <joabreu@synopsys.com>
parent dd24df65
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -160,6 +160,32 @@ static int arcpgu_unload(struct drm_device *drm)
	return 0;
}

#ifdef CONFIG_DEBUG_FS
static int arcpgu_show_pxlclock(struct seq_file *m, void *arg)
{
	struct drm_info_node *node = (struct drm_info_node *)m->private;
	struct drm_device *drm = node->minor->dev;
	struct arcpgu_drm_private *arcpgu = drm->dev_private;
	unsigned long clkrate = clk_get_rate(arcpgu->clk);
	unsigned long mode_clock = arcpgu->crtc.mode.crtc_clock * 1000;

	seq_printf(m, "hw  : %lu\n", clkrate);
	seq_printf(m, "mode: %lu\n", mode_clock);
	return 0;
}

static struct drm_info_list arcpgu_debugfs_list[] = {
	{ "clocks", arcpgu_show_pxlclock, 0 },
	{ "fb", drm_fb_cma_debugfs_show, 0 },
};

static int arcpgu_debugfs_init(struct drm_minor *minor)
{
	return drm_debugfs_create_files(arcpgu_debugfs_list,
		ARRAY_SIZE(arcpgu_debugfs_list), minor->debugfs_root, minor);
}
#endif

static struct drm_driver arcpgu_drm_driver = {
	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME |
			   DRIVER_ATOMIC,
@@ -185,6 +211,9 @@ static struct drm_driver arcpgu_drm_driver = {
	.gem_prime_vmap = drm_gem_cma_prime_vmap,
	.gem_prime_vunmap = drm_gem_cma_prime_vunmap,
	.gem_prime_mmap = drm_gem_cma_prime_mmap,
#ifdef CONFIG_DEBUG_FS
	.debugfs_init = arcpgu_debugfs_init,
#endif
};

static int arcpgu_probe(struct platform_device *pdev)