[PATCH 47/48] drm: omapdrm: dss: Store the debugfs root directory in struct dss_device

Sebastian Reichel sre at kernel.org
Tue Oct 17 22:16:53 UTC 2017


Hi,

On Fri, Oct 13, 2017 at 05:59:43PM +0300, Laurent Pinchart wrote:
> As part of an effort to remove the usage of global variables in the
> driver, store the debugfs root directory in the dss_device structure
> instead of a global variable.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
>  drivers/gpu/drm/omapdrm/dss/dispc.c |  2 +-
>  drivers/gpu/drm/omapdrm/dss/dsi.c   |  8 ++++----
>  drivers/gpu/drm/omapdrm/dss/dss.c   | 39 +++++++++++++++++++------------------
>  drivers/gpu/drm/omapdrm/dss/dss.h   |  9 ++++++---
>  drivers/gpu/drm/omapdrm/dss/hdmi4.c |  3 ++-
>  drivers/gpu/drm/omapdrm/dss/hdmi5.c |  3 ++-
>  drivers/gpu/drm/omapdrm/dss/venc.c  |  3 ++-
>  7 files changed, 37 insertions(+), 30 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
> index aaf7396f0273..5eacf4cdac54 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -4772,7 +4772,7 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)
>  	dispc_set_ops(&dispc_ops);
>  	dss->dispc = dispc;
>  
> -	dispc->debugfs = dss_debugfs_create_file("dispc", dispc_dump_regs,
> +	dispc->debugfs = dss_debugfs_create_file(dss, "dispc", dispc_dump_regs,
>  						 dispc);
>  
>  	return 0;
> diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
> index c7700dfccc08..48ea5285cf20 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dsi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
> @@ -5453,20 +5453,20 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
>  	dsi_runtime_put(dsi);
>  
>  	if (dsi->module_id == 0)
> -		dsi->debugfs.regs = dss_debugfs_create_file("dsi1_regs",
> +		dsi->debugfs.regs = dss_debugfs_create_file(dss, "dsi1_regs",
>  							    dsi1_dump_regs,
>  							    &dsi);
>  	else
> -		dsi->debugfs.regs = dss_debugfs_create_file("dsi2_regs",
> +		dsi->debugfs.regs = dss_debugfs_create_file(dss, "dsi2_regs",
>  							    dsi2_dump_regs,
>  							    &dsi);
>  #ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
>  	if (dsi->module_id == 0)
> -		dsi->debugfs.irqs = dss_debugfs_create_file("dsi1_irqs",
> +		dsi->debugfs.irqs = dss_debugfs_create_file(dss, "dsi1_irqs",
>  							    dsi1_dump_irqs,
>  							    &dsi);
>  	else
> -		dsi->debugfs.irqs = dss_debugfs_create_file("dsi2_irqs",
> +		dsi->debugfs.irqs = dss_debugfs_create_file(dss, "dsi2_irqs",
>  							    dsi2_dump_irqs,
>  							    &dsi);
>  #endif
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.c b/drivers/gpu/drm/omapdrm/dss/dss.c
> index 5d927dfe0a7f..f4e15850cc9d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.c
> @@ -906,25 +906,23 @@ static int dss_debug_dump_clocks(struct seq_file *s, void *p)
>  	return 0;
>  }
>  
> -static struct dentry *dss_debugfs_dir;
> -
>  static int dss_initialize_debugfs(struct dss_device *dss)
>  {
> -	dss_debugfs_dir = debugfs_create_dir("omapdss", NULL);
> -	if (IS_ERR(dss_debugfs_dir)) {
> -		int err = PTR_ERR(dss_debugfs_dir);
> +	static struct dentry *dir;

static?

Otherwise:

Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.co.uk>

-- Sebastian

> -		dss_debugfs_dir = NULL;
> -		return err;
> -	}
> +	dir = debugfs_create_dir("omapdss", NULL);
> +	if (IS_ERR(dir))
> +		return PTR_ERR(dir);
> +
> +	dss->debugfs.root = dir;
>  
>  	return 0;
>  }
>  
> -static void dss_uninitialize_debugfs(void)
> +static void dss_uninitialize_debugfs(struct dss_device *dss)
>  {
> -	if (dss_debugfs_dir)
> -		debugfs_remove_recursive(dss_debugfs_dir);
> +	if (dss->debugfs.root)
> +		debugfs_remove_recursive(dss->debugfs.root);
>  }
>  
>  struct dss_debugfs_entry {
> @@ -947,8 +945,10 @@ static const struct file_operations dss_debug_fops = {
>  	.release	= single_release,
>  };
>  
> -struct dss_debugfs_entry *dss_debugfs_create_file(const char *name,
> -		int (*show_fn)(struct seq_file *s, void *data), void *data)
> +struct dss_debugfs_entry *
> +dss_debugfs_create_file(struct dss_device *dss, const char *name,
> +			int (*show_fn)(struct seq_file *s, void *data),
> +			void *data)
>  {
>  	struct dss_debugfs_entry *entry;
>  	struct dentry *d;
> @@ -960,7 +960,7 @@ struct dss_debugfs_entry *dss_debugfs_create_file(const char *name,
>  	entry->show_fn = show_fn;
>  	entry->data = data;
>  
> -	d = debugfs_create_file(name, 0444, dss_debugfs_dir, entry,
> +	d = debugfs_create_file(name, 0444, dss->debugfs.root, entry,
>  				&dss_debug_fops);
>  	if (IS_ERR(d)) {
>  		kfree(entry);
> @@ -985,7 +985,7 @@ static inline int dss_initialize_debugfs(struct dss_device *dss)
>  {
>  	return 0;
>  }
> -static inline void dss_uninitialize_debugfs(void)
> +static inline void dss_uninitialize_debugfs(struct dss_device *dss)
>  {
>  }
>  #endif /* CONFIG_OMAP2_DSS_DEBUGFS */
> @@ -1382,9 +1382,10 @@ static int dss_bind(struct device *dev)
>  	if (r)
>  		goto err_component;
>  
> -	dss->debugfs.clk = dss_debugfs_create_file("clk", dss_debug_dump_clocks,
> +	dss->debugfs.clk = dss_debugfs_create_file(dss, "clk",
> +						   dss_debug_dump_clocks, dss);
> +	dss->debugfs.dss = dss_debugfs_create_file(dss, "dss", dss_dump_regs,
>  						   dss);
> -	dss->debugfs.dss = dss_debugfs_create_file("dss", dss_dump_regs, dss);
>  
>  	pm_set_vt_switch(0);
>  
> @@ -1511,7 +1512,7 @@ static int dss_probe(struct platform_device *pdev)
>  	return 0;
>  
>  err_debugfs:
> -	dss_uninitialize_debugfs();
> +	dss_uninitialize_debugfs(dss);
>  err_free_dss:
>  	kfree(dss);
>  	return r;
> @@ -1523,7 +1524,7 @@ static int dss_remove(struct platform_device *pdev)
>  
>  	component_master_del(&pdev->dev, &dss_component_ops);
>  
> -	dss_uninitialize_debugfs();
> +	dss_uninitialize_debugfs(dss);
>  	kfree(dss);
>  
>  	return 0;
> diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
> index ceba8441c7cc..76a2561dfd22 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dss.h
> +++ b/drivers/gpu/drm/omapdrm/dss/dss.h
> @@ -271,6 +271,7 @@ struct dss_device {
>  	const struct dss_features *feat;
>  
>  	struct {
> +		struct dentry *root;
>  		struct dss_debugfs_entry *clk;
>  		struct dss_debugfs_entry *dss;
>  	} debugfs;
> @@ -299,12 +300,14 @@ static inline bool dss_mgr_is_lcd(enum omap_channel id)
>  
>  /* DSS */
>  #if defined(CONFIG_OMAP2_DSS_DEBUGFS)
> -struct dss_debugfs_entry *dss_debugfs_create_file(const char *name,
> -		int (*show_fn)(struct seq_file *s, void *data), void *data);
> +struct dss_debugfs_entry *
> +dss_debugfs_create_file(struct dss_device *dss, const char *name,
> +			int (*show_fn)(struct seq_file *s, void *data),
> +			void *data);
>  void dss_debugfs_remove_file(struct dss_debugfs_entry *entry);
>  #else
>  static inline struct dss_debugfs_entry *
> -dss_debugfs_create_file(const char *name,
> +dss_debugfs_create_file(struct dss_device *dss, const char *name,
>  			int (*show_fn)(struct seq_file *s, void *data),
>  			void *data)
>  {
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> index 2050601fef0a..f523b426420f 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
> @@ -800,7 +800,8 @@ static int hdmi4_bind(struct device *dev, struct device *master, void *data)
>  		return r;
>  	}
>  
> -	hdmi->debugfs = dss_debugfs_create_file("hdmi", hdmi_dump_regs, hdmi);
> +	hdmi->debugfs = dss_debugfs_create_file(dss, "hdmi", hdmi_dump_regs,
> +						hdmi);
>  
>  	return 0;
>  
> diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> index ec3b044925d0..9017d78a9756 100644
> --- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> +++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
> @@ -794,7 +794,8 @@ static int hdmi5_bind(struct device *dev, struct device *master, void *data)
>  		return r;
>  	}
>  
> -	hdmi->debugfs = dss_debugfs_create_file("hdmi", hdmi_dump_regs, hdmi);
> +	hdmi->debugfs = dss_debugfs_create_file(dss, "hdmi", hdmi_dump_regs,
> +						hdmi);
>  
>  	return 0;
>  
> diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
> index 449a82b84d03..5e475cafb7a4 100644
> --- a/drivers/gpu/drm/omapdrm/dss/venc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/venc.c
> @@ -940,7 +940,8 @@ static int venc_bind(struct device *dev, struct device *master, void *data)
>  		goto err_probe_of;
>  	}
>  
> -	venc->debugfs = dss_debugfs_create_file("venc", venc_dump_regs, venc);
> +	venc->debugfs = dss_debugfs_create_file(dss, "venc", venc_dump_regs,
> +						venc);
>  
>  	venc_init_output(venc);
>  
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20171018/5790b3f2/attachment.sig>


More information about the dri-devel mailing list