1 | // SPDX-License-Identifier: GPL-2.0-only |
2 | /* |
3 | * Copyright © 2014 Broadcom |
4 | */ |
5 | |
6 | #include <drm/drm_drv.h> |
7 | |
8 | #include <linux/seq_file.h> |
9 | #include <linux/circ_buf.h> |
10 | #include <linux/ctype.h> |
11 | #include <linux/debugfs.h> |
12 | #include <linux/platform_device.h> |
13 | |
14 | #include "vc4_drv.h" |
15 | #include "vc4_regs.h" |
16 | |
17 | /* |
18 | * Called at drm_dev_register() time on each of the minors registered |
19 | * by the DRM device, to attach the debugfs files. |
20 | */ |
21 | void |
22 | vc4_debugfs_init(struct drm_minor *minor) |
23 | { |
24 | struct vc4_dev *vc4 = to_vc4_dev(minor->dev); |
25 | struct drm_device *drm = &vc4->base; |
26 | |
27 | drm_WARN_ON(drm, vc4_hvs_debugfs_init(minor)); |
28 | |
29 | if (vc4->v3d) { |
30 | drm_WARN_ON(drm, vc4_bo_debugfs_init(minor)); |
31 | drm_WARN_ON(drm, vc4_v3d_debugfs_init(minor)); |
32 | } |
33 | } |
34 | |
35 | static int vc4_debugfs_regset32(struct seq_file *m, void *unused) |
36 | { |
37 | struct drm_debugfs_entry *entry = m->private; |
38 | struct drm_device *drm = entry->dev; |
39 | struct debugfs_regset32 *regset = entry->file.data; |
40 | struct drm_printer p = drm_seq_file_printer(f: m); |
41 | int idx; |
42 | |
43 | if (!drm_dev_enter(dev: drm, idx: &idx)) |
44 | return -ENODEV; |
45 | |
46 | drm_print_regset32(p: &p, regset); |
47 | |
48 | drm_dev_exit(idx); |
49 | |
50 | return 0; |
51 | } |
52 | |
53 | void vc4_debugfs_add_regset32(struct drm_device *drm, |
54 | const char *name, |
55 | struct debugfs_regset32 *regset) |
56 | { |
57 | drm_debugfs_add_file(dev: drm, name, show: vc4_debugfs_regset32, data: regset); |
58 | } |
59 | |