mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] drm/arcpgu: Opt in debugfs
@ 2017-03-03 12:30 Alexey Brodkin
  2017-03-03 16:18 ` Liviu Dudau
  0 siblings, 1 reply; 2+ messages in thread
From: Alexey Brodkin @ 2017-03-03 12:30 UTC (permalink / raw)
  To: dri-devel
  Cc: linux-snps-arc, linux-kernel, Alexey Brodkin, Liviu Dudau,
	Daniel Vetter, David Airlie, Jose Abreu

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: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Liviu Dudau <Liviu.Dudau@arm.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: David Airlie <airlied@linux.ie>
Cc: Jose Abreu <joabreu@synopsys.com>
---
 drivers/gpu/drm/arc/arcpgu_drv.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
index 8d8344ed655e..5c82f52fba80 100644
--- a/drivers/gpu/drm/arc/arcpgu_drv.c
+++ b/drivers/gpu/drm/arc/arcpgu_drv.c
@@ -161,6 +161,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,
@@ -187,6 +213,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)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] drm/arcpgu: Opt in debugfs
  2017-03-03 12:30 [PATCH] drm/arcpgu: Opt in debugfs Alexey Brodkin
@ 2017-03-03 16:18 ` Liviu Dudau
  0 siblings, 0 replies; 2+ messages in thread
From: Liviu Dudau @ 2017-03-03 16:18 UTC (permalink / raw)
  To: Alexey Brodkin
  Cc: dri-devel, linux-snps-arc, linux-kernel, Daniel Vetter,
	David Airlie, Jose Abreu

On Fri, Mar 03, 2017 at 03:30:35PM +0300, Alexey Brodkin wrote:
> 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.

FWIW: Reviewed-by: Liviu Dudau <Liviu.Dudau@arm.com>

Best regards,
Liviu

> 
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: Liviu Dudau <Liviu.Dudau@arm.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Jose Abreu <joabreu@synopsys.com>
> ---
>  drivers/gpu/drm/arc/arcpgu_drv.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/drivers/gpu/drm/arc/arcpgu_drv.c b/drivers/gpu/drm/arc/arcpgu_drv.c
> index 8d8344ed655e..5c82f52fba80 100644
> --- a/drivers/gpu/drm/arc/arcpgu_drv.c
> +++ b/drivers/gpu/drm/arc/arcpgu_drv.c
> @@ -161,6 +161,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,
> @@ -187,6 +213,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)
> -- 
> 2.7.4
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-03-03 16:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-03 12:30 [PATCH] drm/arcpgu: Opt in debugfs Alexey Brodkin
2017-03-03 16:18 ` Liviu Dudau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®