[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