Commit f2ede40e authored by Maíra Canal's avatar Maíra Canal Committed by Maíra Canal
Browse files

drm/vc4: use new debugfs device-centered functions

Currently, vc4 has its own debugfs infrastructure that adds the debugfs
files on drm_dev_register(). With the introduction of the new debugfs,
functions, replace the vc4 debugfs structure with the DRM debugfs
device-centered function, drm_debugfs_add_file().

Moreover, remove the explicit error handling of debugfs related functions,
considering that the only failure mode is -ENOMEM and also that error
handling is not recommended for debugfs functions, as pointed out in [1].

[1] https://lore.kernel.org/all/YWAmZdRwnAt6wh9B@kroah.com/



Signed-off-by: default avatarMaíra Canal <mcanal@igalia.com>
Reviewed-by: default avatarMaxime Ripard <maxime@cerno.tech>
Reviewed-by: default avatarMelissa Wen <mwen@igalia.com>
Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarMaíra Canal <mairacanal@riseup.net>
Link: https://patchwork.freedesktop.org/patch/msgid/20221219120621.15086-5-mcanal@igalia.com
parent dbb23cf5
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -69,8 +69,8 @@ static void vc4_bo_stats_print(struct drm_printer *p, struct vc4_dev *vc4)

static int vc4_bo_stats_debugfs(struct seq_file *m, void *unused)
{
	struct drm_info_node *node = (struct drm_info_node *)m->private;
	struct drm_device *dev = node->minor->dev;
	struct drm_debugfs_entry *entry = m->private;
	struct drm_device *dev = entry->dev;
	struct vc4_dev *vc4 = to_vc4_dev(dev);
	struct drm_printer p = drm_seq_file_printer(m);

@@ -993,15 +993,11 @@ int vc4_bo_debugfs_init(struct drm_minor *minor)
{
	struct drm_device *drm = minor->dev;
	struct vc4_dev *vc4 = to_vc4_dev(drm);
	int ret;

	if (!vc4->v3d)
		return -ENODEV;

	ret = vc4_debugfs_add_file(minor, "bo_stats",
				   vc4_bo_stats_debugfs, NULL);
	if (ret)
		return ret;
	drm_debugfs_add_file(drm, "bo_stats", vc4_bo_stats_debugfs, NULL);

	return 0;
}
+2 −5
Original line number Diff line number Diff line
@@ -1090,12 +1090,9 @@ int vc4_crtc_late_register(struct drm_crtc *crtc)
	struct drm_device *drm = crtc->dev;
	struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
	const struct vc4_crtc_data *crtc_data = vc4_crtc_to_vc4_crtc_data(vc4_crtc);
	int ret;

	ret = vc4_debugfs_add_regset32(drm->primary, crtc_data->debugfs_name,
	vc4_debugfs_add_regset32(drm, crtc_data->debugfs_name,
				 &vc4_crtc->regset);
	if (ret)
		return ret;

	return 0;
}
+7 −29
Original line number Diff line number Diff line
@@ -34,9 +34,9 @@ vc4_debugfs_init(struct drm_minor *minor)

static int vc4_debugfs_regset32(struct seq_file *m, void *unused)
{
	struct drm_info_node *node = (struct drm_info_node *)m->private;
	struct drm_device *drm = node->minor->dev;
	struct debugfs_regset32 *regset = node->info_ent->data;
	struct drm_debugfs_entry *entry = m->private;
	struct drm_device *drm = entry->dev;
	struct debugfs_regset32 *regset = entry->file.data;
	struct drm_printer p = drm_seq_file_printer(m);
	int idx;

@@ -50,31 +50,9 @@ static int vc4_debugfs_regset32(struct seq_file *m, void *unused)
	return 0;
}

int vc4_debugfs_add_file(struct drm_minor *minor,
			 const char *name,
			 int (*show)(struct seq_file*, void*),
			 void *data)
{
	struct drm_device *dev = minor->dev;
	struct dentry *root = minor->debugfs_root;
	struct drm_info_list *file;

	file = drmm_kzalloc(dev, sizeof(*file), GFP_KERNEL);
	if (!file)
		return -ENOMEM;

	file->name = name;
	file->show = show;
	file->data = data;

	drm_debugfs_create_files(file, 1, root, minor);

	return 0;
}

int vc4_debugfs_add_regset32(struct drm_minor *minor,
void vc4_debugfs_add_regset32(struct drm_device *drm,
			      const char *name,
			      struct debugfs_regset32 *regset)
{
	return vc4_debugfs_add_file(minor, name, vc4_debugfs_regset32, regset);
	drm_debugfs_add_file(drm, name, vc4_debugfs_regset32, regset);
}
+1 −4
Original line number Diff line number Diff line
@@ -267,11 +267,8 @@ static int vc4_dpi_late_register(struct drm_encoder *encoder)
{
	struct drm_device *drm = encoder->dev;
	struct vc4_dpi *dpi = to_vc4_dpi(encoder);
	int ret;

	ret = vc4_debugfs_add_regset32(drm->primary, "dpi_regs", &dpi->regset);
	if (ret)
		return ret;
	vc4_debugfs_add_regset32(drm, "dpi_regs", &dpi->regset);

	return 0;
}
+0 −1
Original line number Diff line number Diff line
@@ -320,7 +320,6 @@ static int vc4_drm_bind(struct device *dev)

	drm = &vc4->base;
	platform_set_drvdata(pdev, drm);
	INIT_LIST_HEAD(&vc4->debugfs_list);

	if (!is_vc5) {
		ret = drmm_mutex_init(drm, &vc4->bin_bo_lock);
Loading